This commit is contained in:
askiiart 2024-12-22 17:59:56 -06:00
parent f77783c66f
commit 5b035fe12c
Signed by untrusted user who does not match committer: askiiart
GPG key ID: EA85979611654C30
3 changed files with 55 additions and 32 deletions

View file

@ -8,3 +8,6 @@ alphanumeric-sort = "1.5.3"
clap = { version = "4.5.23", features = ["derive"] }
clap_complete = "4.5.40"
yaml-rust2 = "0.9.0"
[profile.release]
opt-level = 3

View file

@ -9,15 +9,40 @@ pub struct Cli {
#[derive(Subcommand, Debug)]
pub enum Commands {
///Generate bash completions
GenerateBashCompletions,
///Generate zsh completions
GenerateZshCompletions,
///Generate fish completions
GenerateFishCompletions,
///Generate shell completions
GenCompletion {
#[command(subcommand)]
shell: ShellCommands,
},
///Runs it
Run {
#[arg(short, long)]
config: String,
#[arg(short, long)]
daemonize: bool,
},
}
#[derive(Subcommand, Debug)]
pub enum ShellCommands {
Bash {
#[arg(short, long, default_value = "gregory")]
binary_name: String,
},
Zsh {
#[arg(short, long, default_value = "gregory")]
binary_name: String,
},
Fish {
#[arg(short, long, default_value = "gregory")]
binary_name: String,
},
Elvish {
#[arg(short, long, default_value = "gregory")]
binary_name: String,
},
PowerShell {
#[arg(short, long, default_value = "gregory")]
binary_name: String,
},
}

View file

@ -1,8 +1,7 @@
use crate::cli::Commands;
use crate::cli::*;
use alphanumeric_sort::sort_str_slice;
use clap::{CommandFactory, Parser};
use clap_complete::aot::{generate, Bash, Fish, Zsh};
use clap_complete::aot::{generate, Bash, Elvish, Fish, PowerShell, Zsh};
use std::fs;
use std::io::stdout;
use yaml_rust2::YamlLoader;
@ -13,31 +12,27 @@ fn main() {
let cli = Cli::parse();
match cli.command {
Commands::GenerateBashCompletions => {
generate(
Bash,
&mut Cli::command(),
"gregory",
&mut stdout(),
);
Commands::GenCompletion { shell } => match shell {
ShellCommands::Bash { binary_name } => {
generate(Bash, &mut Cli::command(), binary_name, &mut stdout());
}
ShellCommands::Zsh { binary_name } => {
generate(Zsh, &mut Cli::command(), binary_name, &mut stdout());
}
ShellCommands::Fish { binary_name } => {
generate(Fish, &mut Cli::command(), binary_name, &mut stdout());
}
ShellCommands::Elvish { binary_name } => {
generate(Elvish, &mut Cli::command(), binary_name, &mut stdout());
}
ShellCommands::PowerShell { binary_name } => {
generate(PowerShell, &mut Cli::command(), binary_name, &mut stdout());
}
},
Commands::Run { config, daemonize } => {
println!("{}", config);
println!("{}", daemonize)
}
Commands::GenerateZshCompletions => {
generate(
Zsh,
&mut Cli::command(),
"gregory",
&mut stdout(),
);
}
Commands::GenerateFishCompletions => {
generate(
Fish,
&mut Cli::command(),
"gregory",
&mut stdout(),
);
}
Commands::Run => {}
}
}