modelator 0.4.1

A framework and tools for model-based testing.
Documentation
use clap::ArgEnum;
use clap::{IntoApp, Parser};
use clap_generate::generate;
use clap_generate::generators::{Bash, Elvish, Fish, PowerShell, Zsh};

#[derive(Debug, Parser)]
struct Cli {
    #[clap(arg_enum)]
    generator: ShellName,
}

#[derive(Debug, Clone, ArgEnum)]
enum ShellName {
    Bash,
    Elvish,
    Fish,
    Powershell,
    Zsh,
}

fn main() {
    let cli = Cli::parse();

    let mut app = modelator::cli::App::into_app();
    let app_name = app.get_name().to_owned();
    eprintln!("Generating completion file for {:?}...", cli.generator);

    match cli.generator {
        ShellName::Bash => generate(Bash, &mut app, app_name, &mut std::io::stdout()),
        ShellName::Elvish => generate(Elvish, &mut app, app_name, &mut std::io::stdout()),
        ShellName::Fish => generate(Fish, &mut app, app_name, &mut std::io::stdout()),
        ShellName::Powershell => generate(PowerShell, &mut app, app_name, &mut std::io::stdout()),
        ShellName::Zsh => generate(Zsh, &mut app, app_name, &mut std::io::stdout()),
    }
}