Skip to content

Commit

Permalink
rust: Generate shell (e.g. bash) completion scripts via build.rs for …
Browse files Browse the repository at this point in the history
…all tools

It might be handy to have shell completion support for the Rust PV
tools.

Reviewed-by: Steffen Eiden <[email protected]>
Signed-off-by: Marc Hartmayer <[email protected]>
Signed-off-by: Steffen Eiden <[email protected]>
  • Loading branch information
mhartmay authored and steffen-eiden committed May 27, 2024
1 parent 4d2c92f commit f83af8e
Show file tree
Hide file tree
Showing 7 changed files with 104 additions and 0 deletions.
12 changes: 12 additions & 0 deletions rust/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions rust/pvapconfig/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,8 @@ regex = "1.7"
serde = { version = "1.0.139", features = ["derive"] }
serde_yaml = "0.9"
utils = { path = "../utils" }

[build-dependencies]
clap = { version ="4.1", features = ["derive", "wrap_help"]}
clap_complete = "4.1"
lazy_static = "1.1"
24 changes: 24 additions & 0 deletions rust/pvapconfig/build.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// SPDX-License-Identifier: MIT
//
// Copyright IBM Corp. 2024
// it under the terms of the MIT license. See LICENSE for details.

use clap::{CommandFactory, ValueEnum};
use clap_complete::{generate_to, Shell};
use std::env;
use std::io::Error;

include!("src/cli.rs");

fn main() -> Result<(), Error> {
let outdir = env::var_os("OUT_DIR").unwrap();
let crate_name = env!("CARGO_PKG_NAME");
let mut cmd = Cli::command();
for &shell in Shell::value_variants() {
generate_to(shell, &mut cmd, crate_name, &outdir)?;
}

println!("cargo:rerun-if-changed=build.rs");
println!("cargo:rerun-if-changed=src/cli.rs");
Ok(())
}
7 changes: 7 additions & 0 deletions rust/pvattest/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,10 @@ zerocopy = { version="0.7", features = ["derive"] }

pv = { path = "../pv", package = "s390_pv" }
utils = { path = "../utils" }

[build-dependencies]
clap = { version ="4.1", features = ["derive", "wrap_help"]}
clap_complete = "4.1"
log = { version = "0.4", features = ["std", "release_max_level_debug"] }

utils = { path = "../utils" }
25 changes: 25 additions & 0 deletions rust/pvattest/build.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// SPDX-License-Identifier: MIT
//
// Copyright IBM Corp. 2024
// it under the terms of the MIT license. See LICENSE for details.

use clap::CommandFactory;
use clap_complete::{generate_to, Shell};
use std::env;
use std::io::Error;

include!("src/cli.rs");

fn main() -> Result<(), Error> {
let outdir = env::var_os("OUT_DIR").unwrap();
let crate_name = env!("CARGO_PKG_NAME");
let mut cmd = CliOptions::command();
for &shell in Shell::value_variants() {
generate_to(shell, &mut cmd, crate_name, &outdir)?;
}

println!("cargo:rerun-if-changed=build.rs");
println!("cargo:rerun-if-changed=src/cli.rs");
println!("cargo:rerun-if-changed=../utils/src/cli.rs");
Ok(())
}
7 changes: 7 additions & 0 deletions rust/pvsecret/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,10 @@ serde_yaml = "0.9"

pv = { path = "../pv" , package = "s390_pv" }
utils = { path = "../utils"}

[build-dependencies]
clap = { version ="4.1", features = ["derive", "wrap_help"]}
clap_complete = "4.1"
log = { version = "0.4", features = ["std", "release_max_level_debug"] }

utils = { path = "../utils" }
24 changes: 24 additions & 0 deletions rust/pvsecret/build.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// SPDX-License-Identifier: MIT
//
// Copyright IBM Corp. 2024
// it under the terms of the MIT license. See LICENSE for details.

use clap_complete::{generate_to, Shell};
use std::env;
use std::io::Error;

include!("src/cli.rs");

fn main() -> Result<(), Error> {
let outdir = env::var_os("OUT_DIR").unwrap();
let crate_name = env!("CARGO_PKG_NAME");
let mut cmd = CliOptions::command();
for &shell in Shell::value_variants() {
generate_to(shell, &mut cmd, crate_name, &outdir)?;
}

println!("cargo:rerun-if-changed=build.rs");
println!("cargo:rerun-if-changed=src/cli.rs");
println!("cargo:rerun-if-changed=../utils/src/cli.rs");
Ok(())
}

0 comments on commit f83af8e

Please sign in to comment.