summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmilio Cobos Álvarez <emilio@crisal.io>2021-12-18 00:48:19 +0100
committerEmilio Cobos Álvarez <emilio@crisal.io>2022-06-05 20:07:14 +0200
commit566d2266f68f5115329d1a1f6bb6f0a3217d80a5 (patch)
treec94d4690e5e964ad24475d4b2d68ed9385014033
parentaba2c29fd330b005b0e88b4e585bfe0ea86f3d5e (diff)
options: Implement --version manually and print clang version on --version --verbose
Fixes #2138
-rw-r--r--src/options.rs21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/options.rs b/src/options.rs
index 081aad61..4e1fb93f 100644
--- a/src/options.rs
+++ b/src/options.rs
@@ -23,13 +23,13 @@ where
);
let matches = App::new("bindgen")
- .version(option_env!("CARGO_PKG_VERSION").unwrap_or("unknown"))
.about("Generates Rust bindings from C/C++ headers.")
+ .setting(clap::AppSettings::NoAutoVersion)
.override_usage("bindgen [FLAGS] [OPTIONS] <header> -- <clang-args>...")
.args(&[
Arg::new("header")
.help("C or C++ header file")
- .required(true),
+ .required_unless_present("V"),
Arg::new("depfile")
.long("depfile")
.takes_value(true)
@@ -545,9 +545,24 @@ where
Arg::new("vtable-generation")
.long("vtable-generation")
.help("Enables generation of vtable functions."),
+ Arg::new("V")
+ .long("version")
+ .help("Prints the version, and exits"),
]) // .args()
.get_matches_from(args);
+ let verbose = matches.is_present("verbose");
+ if matches.is_present("V") {
+ println!(
+ "bindgen {}",
+ option_env!("CARGO_PKG_VERSION").unwrap_or("unknown")
+ );
+ if verbose {
+ println!("Clang: {}", crate::clang_version().full);
+ }
+ std::process::exit(0);
+ }
+
let mut builder = builder();
if let Some(header) = matches.value_of("header") {
@@ -1015,7 +1030,5 @@ where
builder = builder.vtable_generation(true);
}
- let verbose = matches.is_present("verbose");
-
Ok((builder, output, verbose))
}