feat: add build time completion generation
This commit is contained in:
10
Cargo.lock
generated
10
Cargo.lock
generated
@@ -188,6 +188,15 @@ dependencies = [
|
||||
"strsim",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "clap_complete"
|
||||
version = "4.5.66"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c757a3b7e39161a4e56f9365141ada2a6c915a8622c408ab6bb4b5d047371031"
|
||||
dependencies = [
|
||||
"clap",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "clap_derive"
|
||||
version = "4.5.55"
|
||||
@@ -1533,6 +1542,7 @@ dependencies = [
|
||||
"anyhow",
|
||||
"chrono",
|
||||
"clap",
|
||||
"clap_complete",
|
||||
"colored",
|
||||
"dirs",
|
||||
"serde",
|
||||
|
||||
@@ -13,3 +13,10 @@ serde = { version = "1", features = ["derive"] }
|
||||
serde_json = "1"
|
||||
sqlx = { version = "0.8", features = ["runtime-tokio", "sqlite", "chrono", "migrate"] }
|
||||
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
28
build.rs
Normal 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(())
|
||||
}
|
||||
Reference in New Issue
Block a user