feat: add clap_complete for generating completion files
`ahab generate <shell>` can now be used to generte completion files for this tool.
This commit is contained in:
		
							
								
								
									
										10
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										10
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							@@ -8,6 +8,7 @@ version = "0.1.0"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "anyhow",
 | 
			
		||||
 "clap",
 | 
			
		||||
 "clap_complete",
 | 
			
		||||
 "dotenvy",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
@@ -102,6 +103,15 @@ dependencies = [
 | 
			
		||||
 "strsim",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "clap_complete"
 | 
			
		||||
version = "4.3.0"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "a04ddfaacc3bc9e6ea67d024575fafc2a813027cf374b8f24f7bc233c6b6be12"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "clap",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "clap_derive"
 | 
			
		||||
version = "4.3.0"
 | 
			
		||||
 
 | 
			
		||||
@@ -12,5 +12,6 @@ repository = "https://github.com/janezicmatej/ahab.git"
 | 
			
		||||
 | 
			
		||||
[dependencies]
 | 
			
		||||
clap = { version = "4.3.0", features = ["derive"] }
 | 
			
		||||
clap_complete = "4.3.0"
 | 
			
		||||
anyhow = "1.0.71"
 | 
			
		||||
dotenvy = "0.15.7"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,6 @@
 | 
			
		||||
use super::{Django, Docker, DockerCompose, Postgres};
 | 
			
		||||
use clap::{Parser, Subcommand};
 | 
			
		||||
use clap_complete::Shell;
 | 
			
		||||
 | 
			
		||||
/// A program for interacting with various dockerized applications.
 | 
			
		||||
#[derive(Parser, Debug)]
 | 
			
		||||
@@ -11,6 +12,12 @@ pub struct Ahab {
 | 
			
		||||
 | 
			
		||||
#[derive(Debug, Subcommand)]
 | 
			
		||||
pub enum Commands {
 | 
			
		||||
    /// Generate completion files
 | 
			
		||||
    Completion {
 | 
			
		||||
        #[arg(value_enum)]
 | 
			
		||||
        shell: Shell,
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    /// Docker related subcommands
 | 
			
		||||
    D {
 | 
			
		||||
        #[command(subcommand)]
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										11
									
								
								src/main.rs
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								src/main.rs
									
									
									
									
									
								
							@@ -1,7 +1,7 @@
 | 
			
		||||
use ahab::{cli, scripts};
 | 
			
		||||
 | 
			
		||||
use anyhow::Result;
 | 
			
		||||
use clap::Parser;
 | 
			
		||||
use clap::{CommandFactory, Parser};
 | 
			
		||||
 | 
			
		||||
fn main() -> Result<()> {
 | 
			
		||||
    // always load dotenv on start
 | 
			
		||||
@@ -13,6 +13,15 @@ fn main() -> Result<()> {
 | 
			
		||||
    let args = cli::Ahab::parse();
 | 
			
		||||
 | 
			
		||||
    match args.command {
 | 
			
		||||
        cli::Commands::Completion { shell } => {
 | 
			
		||||
            clap_complete::generate(
 | 
			
		||||
                shell,
 | 
			
		||||
                &mut cli::Ahab::command(),
 | 
			
		||||
                "ahab",
 | 
			
		||||
                &mut std::io::stdout(),
 | 
			
		||||
            );
 | 
			
		||||
            Ok(())
 | 
			
		||||
        }
 | 
			
		||||
        cli::Commands::D { command } => match command {
 | 
			
		||||
            cli::Docker::StopAll => scripts::docker::stop_all(),
 | 
			
		||||
        },
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user