semver-cli2 0.1.0

CLI to manipulate semver specs
use clap::{Arg, Command};
use clap::builder::PossibleValuesParser;
use semver::{Version};

fn main() -> anyhow::Result<()> {
    let matches = clap::Command::new("semver")
        .version("1.0.0")
        .subcommand(
            Command::new("bump")
                .arg(Arg::new("level")
                    .value_parser(PossibleValuesParser::new(&[
                        "major",
                        "minor",
                        "patch"
                    ])))
                .arg(Arg::new("version"))
        )
        .get_matches();
    match matches.subcommand().unwrap() {
        ("bump", matches) => {
            let level = matches.value_of("level").unwrap();
            let version = matches.value_of("version").unwrap();
            let mut version = Version::parse(version)?;
            match level {
                "major" => {
                    version.major += 1;
                    version.minor = 0;
                    version.patch = 0;
                }
                "minor" => {
                    version.minor += 1;
                    version.patch = 0;
                }
                "patch" => {
                    version.patch += 1;
                }
                _ => panic!("Unrecognized level"),
            };
            println!("{}", version);
        }
        _ => {
            panic!("Unknown subcommand");
        }
    }
    Ok(())
}