use std::path::PathBuf; use clap::{ArgAction, Parser, Subcommand}; /// An automatic lf cd mapping generator #[derive(Parser, Debug)] #[clap(author, version, about, long_about = None)] #[command(next_line_help = true)] pub struct Args { /// The directory to treat as home #[arg(long, short = 'n', env = "HOME")] pub home_name: PathBuf, /// The number of directories to generate mappings for, starting from each `relevant_directory` #[arg(long, short, default_value = "2")] pub depth: usize, /// Increase message verbosity #[arg(long="verbose", short = 'v', action = ArgAction::Count)] pub verbosity: u8, /// Silence all output #[arg(long, short = 'q')] pub quiet: bool, #[command(subcommand)] pub command: Command, } #[derive(Subcommand, Debug)] pub enum Command { /// Visualize the generated mappings in a tree Visualize { #[command(flatten)] options: CommandOptions, }, /// Output the generated mappings in a format suitable for the lf config file Generate { #[command(flatten)] options: CommandOptions, }, } #[derive(Debug, Parser)] pub struct CommandOptions { /// The directories to generate mappings for pub relevant_directories: Vec<PathBuf>, }