summaryrefslogtreecommitdiffstats
path: root/src/config/clean/app/preview
diff options
context:
space:
mode:
authorJeff Zhao <jeff.no.zhao@gmail.com>2023-09-07 14:00:52 -0400
committerJeff Zhao <jeff.no.zhao@gmail.com>2023-09-07 14:00:52 -0400
commitcbd0e604a4109595419d3f82d52a13530e7db030 (patch)
tree22a72acc7cec96ac9d0554483283802b3a53097f /src/config/clean/app/preview
parent800a98f6746edde3c95157e233ef7201d830c595 (diff)
cleanup config code
Diffstat (limited to 'src/config/clean/app/preview')
-rw-r--r--src/config/clean/app/preview/config.rs54
-rw-r--r--src/config/clean/app/preview/mod.rs3
2 files changed, 57 insertions, 0 deletions
diff --git a/src/config/clean/app/preview/config.rs b/src/config/clean/app/preview/config.rs
new file mode 100644
index 0000000..2fd50e5
--- /dev/null
+++ b/src/config/clean/app/preview/config.rs
@@ -0,0 +1,54 @@
+use std::path;
+
+use crate::{
+ config::{raw::app::display::preview::PreviewOptionRaw, search_directories},
+ util::unix,
+ CONFIG_HIERARCHY,
+};
+
+const fn default_max_preview_size() -> u64 {
+ 2 * 1024 * 1024 // 2 MB
+}
+
+#[derive(Clone, Debug)]
+pub struct PreviewOption {
+ pub max_preview_size: u64,
+ pub preview_script: Option<path::PathBuf>,
+ pub preview_shown_hook_script: Option<path::PathBuf>,
+ pub preview_removed_hook_script: Option<path::PathBuf>,
+}
+
+impl std::default::Default for PreviewOption {
+ fn default() -> Self {
+ Self {
+ max_preview_size: default_max_preview_size(),
+ preview_script: None,
+ preview_shown_hook_script: None,
+ preview_removed_hook_script: None,
+ }
+ }
+}
+
+impl From<PreviewOptionRaw> for PreviewOption {
+ fn from(raw: PreviewOptionRaw) -> Self {
+ let preview_script = raw
+ .preview_script
+ .map(|s| unix::expand_shell_string(&s))
+ .or_else(|| search_directories("preview.sh", &CONFIG_HIERARCHY));
+
+ let preview_shown_hook_script = raw
+ .preview_shown_hook_script
+ .map(|s| unix::expand_shell_string(&s));
+
+ let preview_removed_hook_script = raw
+ .preview_removed_hook_script
+ .map(|s| unix::expand_shell_string(&s));
+
+ Self {
+ max_preview_size: raw.max_preview_size,
+ preview_script,
+ preview_shown_hook_script,
+ preview_removed_hook_script,
+ }
+ }
+}
diff --git a/src/config/clean/app/preview/mod.rs b/src/config/clean/app/preview/mod.rs
new file mode 100644
index 0000000..a9217b9
--- /dev/null
+++ b/src/config/clean/app/preview/mod.rs
@@ -0,0 +1,3 @@
+pub mod config;
+
+pub use config::*;