use crate::colors::CompletionsMode;
use crate::colors::NamedColors;
use argh::FromArgs;
#[derive(FromArgs)]
#[argh(help_triggers("-h", "--help", "help"))]
struct Args {
#[argh(switch, short = 'a')]
variable_completions: bool,
#[argh(option, short = 'c', default = r#""upper".to_string()"#)]
named_completions_mode: String,
#[argh(option, short = 'o', default = r#""colorhexa".to_string()"#)]
color_collection: String,
#[argh(switch, short = 'V')]
version: bool,
}
pub struct Config {
pub variable_completions: bool,
pub named_completions_mode: CompletionsMode,
pub color_collection: NamedColors,
pub version: bool,
}
impl Config {
pub fn new() -> Self {
let args: Args = argh::from_env();
Self {
variable_completions: args.variable_completions,
named_completions_mode: match args.named_completions_mode.to_lowercase().as_str() {
"none" => CompletionsMode::None,
"upper" => CompletionsMode::Uppercase,
"lower" => CompletionsMode::Lowercase,
_ => CompletionsMode::Full,
},
color_collection: match args.color_collection.to_lowercase().as_str() {
"colorhexa" => NamedColors::ColorHexa,
_ => NamedColors::Css,
},
version: args.version,
}
}
}
impl Default for Config {
fn default() -> Self {
Self::new()
}
}