feat: add build time completion generation

This commit is contained in:
2026-02-28 23:04:51 +01:00
parent 1618e00383
commit d2635e692e
3 changed files with 45 additions and 0 deletions

10
Cargo.lock generated
View File

@@ -188,6 +188,15 @@ dependencies = [
"strsim", "strsim",
] ]
[[package]]
name = "clap_complete"
version = "4.5.66"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c757a3b7e39161a4e56f9365141ada2a6c915a8622c408ab6bb4b5d047371031"
dependencies = [
"clap",
]
[[package]] [[package]]
name = "clap_derive" name = "clap_derive"
version = "4.5.55" version = "4.5.55"
@@ -1533,6 +1542,7 @@ dependencies = [
"anyhow", "anyhow",
"chrono", "chrono",
"clap", "clap",
"clap_complete",
"colored", "colored",
"dirs", "dirs",
"serde", "serde",

View File

@@ -13,3 +13,10 @@ serde = { version = "1", features = ["derive"] }
serde_json = "1" serde_json = "1"
sqlx = { version = "0.8", features = ["runtime-tokio", "sqlite", "chrono", "migrate"] } sqlx = { version = "0.8", features = ["runtime-tokio", "sqlite", "chrono", "migrate"] }
tokio = { version = "1", features = ["rt", "macros"] } tokio = { version = "1", features = ["rt", "macros"] }
[build-dependencies]
anyhow = "1"
chrono = { version = "0.4", features = ["serde"] }
clap = { version = "4", features = ["derive"] }
clap_complete = "4"
serde = { version = "1", features = ["derive"] }

28
build.rs Normal file
View File

@@ -0,0 +1,28 @@
#[allow(dead_code)]
#[path = "src/model.rs"]
mod model;
include!("src/cli.rs");
use clap::{CommandFactory, ValueEnum};
use clap_complete::{generate_to, Shell};
use std::{env, io::Error};
fn main() -> Result<(), Error> {
let outdir = env::var_os("SHELL_COMPLETIONS_DIR")
.or_else(|| env::var_os("OUT_DIR"));
let Some(outdir) = outdir else {
return Ok(());
};
let mut cmd = Cli::command();
for shell in Shell::value_variants() {
let path = generate_to(*shell, &mut cmd, "todo", &outdir)?;
println!("cargo:warning=completion file is generated: {path:?}");
}
Ok(())
}