diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-04-05 20:33:57 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-04-05 20:33:57 +0800 |
| commit | b6876f9df6e3119331fac01c0bc954ca9f3c798b (patch) | |
| tree | 030301c8d434d51fa386e9a5fff77bce5899733b /mingling_core/src/program/config.rs | |
| parent | b41e201e554c4ba5ad6f1e09ce58dd3d10b6a635 (diff) | |
Add general renderer support with serialization formats
Diffstat (limited to 'mingling_core/src/program/config.rs')
| -rw-r--r-- | mingling_core/src/program/config.rs | 62 |
1 files changed, 61 insertions, 1 deletions
diff --git a/mingling_core/src/program/config.rs b/mingling_core/src/program/config.rs index 6ad0a38..2f5de4c 100644 --- a/mingling_core/src/program/config.rs +++ b/mingling_core/src/program/config.rs @@ -17,7 +17,7 @@ impl Default for ProgramStdoutSetting { } } -/// Program stdout settings +/// Program user context #[derive(Debug, Clone, Default)] pub struct ProgramUserContext { /// View help information instead of running the command @@ -26,3 +26,63 @@ pub struct ProgramUserContext { /// Skip user confirmation step pub confirm: bool, } + +#[cfg(feature = "general_renderer")] +#[derive(Debug, Clone, Default)] +pub enum GeneralRendererSetting { + #[default] + Disable, + Json, + JsonPretty, + Yaml, + Toml, + Ron, + RonPretty, +} + +#[cfg(feature = "general_renderer")] +impl std::str::FromStr for GeneralRendererSetting { + type Err = String; + + fn from_str(s: &str) -> Result<Self, Self::Err> { + match just_fmt::kebab_case!(s).as_str() { + "disable" => Ok(GeneralRendererSetting::Disable), + "json" => Ok(GeneralRendererSetting::Json), + "json-pretty" => Ok(GeneralRendererSetting::JsonPretty), + "yaml" => Ok(GeneralRendererSetting::Yaml), + "toml" => Ok(GeneralRendererSetting::Toml), + "ron" => Ok(GeneralRendererSetting::Ron), + "ron-pretty" => Ok(GeneralRendererSetting::RonPretty), + _ => Err(format!("Invalid renderer: '{}'", s)), + } + } +} + +#[cfg(feature = "general_renderer")] +impl From<&str> for GeneralRendererSetting { + fn from(s: &str) -> Self { + s.parse().unwrap_or(GeneralRendererSetting::Disable) + } +} + +#[cfg(feature = "general_renderer")] +impl From<String> for GeneralRendererSetting { + fn from(s: String) -> Self { + s.as_str().into() + } +} + +#[cfg(feature = "general_renderer")] +impl std::fmt::Display for GeneralRendererSetting { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + GeneralRendererSetting::Disable => write!(f, "disable"), + GeneralRendererSetting::Json => write!(f, "json"), + GeneralRendererSetting::JsonPretty => write!(f, "json-pretty"), + GeneralRendererSetting::Yaml => write!(f, "yaml"), + GeneralRendererSetting::Toml => write!(f, "toml"), + GeneralRendererSetting::Ron => write!(f, "ron"), + GeneralRendererSetting::RonPretty => write!(f, "ron-pretty"), + } + } +} |
