diff options
Diffstat (limited to 'vendor/clap/examples/tutorial_derive/04_04_custom.rs')
-rw-r--r-- | vendor/clap/examples/tutorial_derive/04_04_custom.rs | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/vendor/clap/examples/tutorial_derive/04_04_custom.rs b/vendor/clap/examples/tutorial_derive/04_04_custom.rs deleted file mode 100644 index a84b5ed..0000000 --- a/vendor/clap/examples/tutorial_derive/04_04_custom.rs +++ /dev/null @@ -1,91 +0,0 @@ -use clap::error::ErrorKind; -use clap::{CommandFactory, Parser}; - -#[derive(Parser)] -#[command(author, version, about, long_about = None)] -struct Cli { - /// set version manually - #[arg(long, value_name = "VER")] - set_ver: Option<String>, - - /// auto inc major - #[arg(long)] - major: bool, - - /// auto inc minor - #[arg(long)] - minor: bool, - - /// auto inc patch - #[arg(long)] - patch: bool, - - /// some regular input - input_file: Option<String>, - - /// some special input argument - #[arg(long)] - spec_in: Option<String>, - - #[arg(short)] - config: Option<String>, -} - -fn main() { - let cli = Cli::parse(); - - // Let's assume the old version 1.2.3 - let mut major = 1; - let mut minor = 2; - let mut patch = 3; - - // See if --set-ver was used to set the version manually - let version = if let Some(ver) = cli.set_ver.as_deref() { - if cli.major || cli.minor || cli.patch { - let mut cmd = Cli::command(); - cmd.error( - ErrorKind::ArgumentConflict, - "Can't do relative and absolute version change", - ) - .exit(); - } - ver.to_string() - } else { - // Increment the one requested (in a real program, we'd reset the lower numbers) - let (maj, min, pat) = (cli.major, cli.minor, cli.patch); - match (maj, min, pat) { - (true, false, false) => major += 1, - (false, true, false) => minor += 1, - (false, false, true) => patch += 1, - _ => { - let mut cmd = Cli::command(); - cmd.error( - ErrorKind::ArgumentConflict, - "Can only modify one version field", - ) - .exit(); - } - }; - format!("{major}.{minor}.{patch}") - }; - - println!("Version: {version}"); - - // Check for usage of -c - if let Some(config) = cli.config.as_deref() { - let input = cli - .input_file - .as_deref() - // 'or' is preferred to 'or_else' here since `Option::as_deref` is 'const' - .or(cli.spec_in.as_deref()) - .unwrap_or_else(|| { - let mut cmd = Cli::command(); - cmd.error( - ErrorKind::MissingRequiredArgument, - "INPUT_FILE or --spec-in is required when using --config", - ) - .exit() - }); - println!("Doing work using input {input} and config {config}"); - } -} |