repo/
worktree_status_options.rs1use serde::{Deserialize, Serialize};
5
6#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize)]
8#[serde(rename_all = "lowercase")]
9pub enum FsMonitorMode {
10 #[default]
12 Off,
13 Auto,
15 Native,
17 Watchman,
19}
20
21impl FsMonitorMode {
22 pub fn parse(value: &str) -> Option<Self> {
24 match value.trim().to_ascii_lowercase().as_str() {
25 "0" | "off" | "false" | "disabled" => Some(Self::Off),
26 "1" | "auto" | "true" | "enabled" => Some(Self::Auto),
27 "native" | "local" => Some(Self::Native),
28 "watchman" => Some(Self::Watchman),
29 _ => None,
30 }
31 }
32}
33
34#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize)]
36pub struct FsMonitorConfig {
37 #[serde(default)]
39 pub mode: FsMonitorMode,
40}
41
42#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
44pub struct FsMonitorSettings {
45 pub mode: FsMonitorMode,
47}
48
49impl From<FsMonitorConfig> for FsMonitorSettings {
50 fn from(config: FsMonitorConfig) -> Self {
51 Self { mode: config.mode }
52 }
53}
54
55#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
57pub struct WorktreeStatusOptions {
58 pub fsmonitor: FsMonitorSettings,
60}