use clap::{Parser, ValueEnum}; #[derive(Debug, Parser)] #[command(author, version, about = "hfile generates cryptographic hashes from files.", long_about = None)] pub struct Args { #[clap(short = 'a', long = "algorithm", value_enum, default_value_t=Algorithm::Blake)] pub algorithm: Algorithm, #[clap(short = 's', long = "size", help = "Show size of file")] pub size: bool, #[clap(required_unless_present_any(["path", "duplicates"]))] pub file: Option, #[clap( short = 'd', long = "duplicates", help = "Find duplicates", requires = "path" )] pub duplicates: bool, #[clap( short = 'p', long = "path", help = "Create hash for all files under path" )] pub path: Option, } #[derive(ValueEnum, Copy, Clone, Debug)] pub enum Algorithm { Md5, Sha1, Sha256, Sha384, Sha512, Blake, }