summaryrefslogtreecommitdiffstats
path: root/src/config/clean/preview/config.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/config/clean/preview/config.rs')
-rw-r--r--src/config/clean/preview/config.rs35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/config/clean/preview/config.rs b/src/config/clean/preview/config.rs
new file mode 100644
index 0000000..0588c5f
--- /dev/null
+++ b/src/config/clean/preview/config.rs
@@ -0,0 +1,35 @@
+use std::collections::HashMap;
+
+use serde::Deserialize;
+
+use crate::config::{parse_config_or_default, raw::preview::FileEntryPreviewRaw, TomlConfigFile};
+
+#[derive(Debug, Deserialize)]
+pub struct FileEntryPreviewEntry {
+ pub program: String,
+ pub args: Option<Vec<String>>,
+}
+
+#[derive(Debug, Default)]
+pub struct FileEntryPreview {
+ pub extension: HashMap<String, FileEntryPreviewEntry>,
+ pub mimetype: HashMap<String, FileEntryPreviewEntry>,
+}
+
+impl TomlConfigFile for FileEntryPreview {
+ fn get_config(file_name: &str) -> Self {
+ parse_config_or_default::<FileEntryPreviewRaw, FileEntryPreview>(file_name)
+ }
+}
+
+impl From<FileEntryPreviewRaw> for FileEntryPreview {
+ fn from(raw: FileEntryPreviewRaw) -> Self {
+ let extension = raw.extension.unwrap_or_default();
+ let mimetype = raw.mimetype.unwrap_or_default();
+
+ Self {
+ extension,
+ mimetype,
+ }
+ }
+}