diff options
author | Jeff Zhao <jeff.no.zhao@gmail.com> | 2023-09-07 14:00:52 -0400 |
---|---|---|
committer | Jeff Zhao <jeff.no.zhao@gmail.com> | 2023-09-07 14:00:52 -0400 |
commit | cbd0e604a4109595419d3f82d52a13530e7db030 (patch) | |
tree | 22a72acc7cec96ac9d0554483283802b3a53097f /src/config/clean/app/preview | |
parent | 800a98f6746edde3c95157e233ef7201d830c595 (diff) |
cleanup config code
Diffstat (limited to 'src/config/clean/app/preview')
-rw-r--r-- | src/config/clean/app/preview/config.rs | 54 | ||||
-rw-r--r-- | src/config/clean/app/preview/mod.rs | 3 |
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::*; |