cli.rs 752 B

12345678910111213141516171819202122232425262728293031323334353637
  1. use std::ffi::OsString;
  2. use clap::Parser;
  3. use clap::ValueEnum;
  4. #[derive(Parser, Debug)]
  5. #[command(version, about, long_about = None)]
  6. pub struct Args {
  7. /// input file
  8. pub input_file: OsString,
  9. /// output file
  10. pub output_file: Option<OsString>,
  11. /// Whether to compress or extract.
  12. #[arg(short, value_enum, default_value = Mode::C)]
  13. pub mode: Mode,
  14. }
  15. #[derive(Clone, Copy, Debug, ValueEnum, Default)]
  16. pub enum Mode {
  17. /// Extract
  18. X,
  19. #[default]
  20. /// Compress
  21. C,
  22. }
  23. impl Into<clap::builder::OsStr> for Mode {
  24. fn into(self) -> clap::builder::OsStr {
  25. match self {
  26. Mode::X => clap::builder::OsStr::from("x"),
  27. Mode::C => clap::builder::OsStr::from("c"),
  28. }
  29. }
  30. }