cartulary 0.3.0-alpha.1

The knowledge layer of your project — decisions, issues, docs, all in one place.
Documentation
use crate::infra::driving::cli::errors::{die1, CliError};
use crate::infra::driving::cli::helpers::required_str;
use crate::infra::driving::cli::OutputFormat;
use clap::{ArgMatches, Command};

pub(in super::super) fn execute_completions(
    matches: &ArgMatches,
    app: &mut Command,
    output_fmt: OutputFormat,
) {
    use clap_complete::{generate, shells};

    let shell = required_str(matches, "shell");
    let bin_name = app.get_name().to_string();
    let mut stdout = std::io::stdout();

    match shell {
        "bash" => generate(shells::Bash, app, &bin_name, &mut stdout),
        "zsh" => generate(shells::Zsh, app, &bin_name, &mut stdout),
        "fish" => generate(shells::Fish, app, &bin_name, &mut stdout),
        other => {
            die1(
                CliError::new(format!("unknown shell '{other}'"))
                    .kind("validation")
                    .hint("Supported: bash, zsh, fish"),
                output_fmt,
            );
        }
    }
}