flavours 0.5.0

An easy to use base16 scheme manager/builder that integrates with any workflow.
Documentation
use crate::cli::build_cli;
use anyhow::Result;
use std::io;

use clap_generate::{
    generate,
    generators::{Bash, Elvish, Fish, PowerShell, Zsh},
};

pub fn completions(shell: Option<&str>) -> Result<()> {
    match shell {
        Some("bash") => generate::<Bash, _>(&mut build_cli(), "flavours", &mut io::stdout()),
        Some("elvish") => generate::<Elvish, _>(&mut build_cli(), "flavours", &mut io::stdout()),
        Some("powershell") => {
            generate::<PowerShell, _>(&mut build_cli(), "flavours", &mut io::stdout())
        },
        Some("fish") => {
            let mut buffer = Vec::new();
            generate::<Fish, _>(&mut build_cli(), "flavours", &mut buffer);
            let buffer = String::from_utf8(buffer)?;
            let buffer = buffer.replace("all installed schemes).' -r -f", "all installed schemes).' -r -f -a \"(flavours list -l)\"");
            let buffer = buffer.replace("defaults to \\'generated\\'' -r -f", "defaults to \\'generated\\'' -r -f -a \"(flavours list -l)\"");
            println!("{}", buffer);
        }
        Some("zsh") => {
            let mut buffer = Vec::new();
            generate::<Zsh, _>(&mut build_cli(), "flavours", &mut buffer);
            let buffer = String::from_utf8(buffer)?;
            let buffer = buffer.replace("all installed schemes).:( )", "all installed schemes).:($(flavours list))");
            let buffer = buffer.replace("defaults to '\\''generated'\\'']: :( )", "defaults to '\\''generated'\\'']: :($(flavours list))");
            println!("{}", buffer);
        }
        _ => {}
    };
    Ok(())
}