diff --git a/Cargo.lock b/Cargo.lock index 7225d7e..5aa9560 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -158,6 +158,18 @@ dependencies = [ "strsim", ] +[[package]] +name = "clap_complete" +version = "4.5.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aad5b1b4de04fead402672b48897030eec1f3bfe1550776322f59f6d6e6a5677" +dependencies = [ + "clap", + "clap_lex", + "is_executable", + "shlex", +] + [[package]] name = "clap_derive" version = "4.5.40" @@ -215,6 +227,7 @@ version = "0.1.0" dependencies = [ "bytes", "clap", + "clap_complete", "env_logger", "eyre", "futures-util", @@ -699,6 +712,15 @@ dependencies = [ "serde", ] +[[package]] +name = "is_executable" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4a1b5bad6f9072935961dfbf1cced2f3d129963d091b6f69f007fe04e758ae2" +dependencies = [ + "winapi", +] + [[package]] name = "is_terminal_polyfill" version = "1.70.1" @@ -1630,6 +1652,28 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + [[package]] name = "windows-link" version = "0.1.3" diff --git a/Cargo.toml b/Cargo.toml index f1cc6df..8f827cd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,6 +6,7 @@ edition = "2024" [dependencies] bytes = "1.10.1" clap = { version = "4.5.40", features = ["derive"] } +clap_complete = { version = "4.5.54", features = ["unstable-dynamic"] } env_logger = "0.11.8" eyre = "0.6.12" futures-util = "0.3.31" diff --git a/src/bin/dls.rs b/src/bin/dls.rs index 8436028..2a2f84a 100644 --- a/src/bin/dls.rs +++ b/src/bin/dls.rs @@ -1,4 +1,4 @@ -use clap::{Parser, Subcommand}; +use clap::{CommandFactory, Parser, Subcommand}; use eyre::{format_err, Result}; use futures_util::StreamExt; use tokio::io::AsyncWriteExt; @@ -54,6 +54,8 @@ enum ClusterCommand { #[tokio::main(flavor = "current_thread")] async fn main() -> Result<()> { + clap_complete::CompleteEnv::with_factory(Cli::command).complete(); + let cli = Cli::parse(); env_logger::builder()