use std::ffi::OsString; use clap::Parser; use clap::ValueEnum; #[derive(Parser, Debug)] #[command(version, about, long_about = None)] pub struct Args { /// input file pub input_file: OsString, /// output file pub output_file: Option, /// Whether to compress or extract. #[arg(short, value_enum, default_value = Mode::C)] pub mode: Mode, } #[derive(Clone, Copy, Debug, ValueEnum, Default)] pub enum Mode { /// Extract X, #[default] /// Compress C, } impl Into for Mode { fn into(self) -> clap::builder::OsStr { match self { Mode::X => clap::builder::OsStr::from("x"), Mode::C => clap::builder::OsStr::from("c"), } } }