diff options
author | Emilio Cobos Álvarez <emilio@crisal.io> | 2021-12-18 00:48:19 +0100 |
---|---|---|
committer | Emilio Cobos Álvarez <emilio@crisal.io> | 2022-06-05 20:07:14 +0200 |
commit | 566d2266f68f5115329d1a1f6bb6f0a3217d80a5 (patch) | |
tree | c94d4690e5e964ad24475d4b2d68ed9385014033 | |
parent | aba2c29fd330b005b0e88b4e585bfe0ea86f3d5e (diff) |
options: Implement --version manually and print clang version on --version --verbose
Fixes #2138
-rw-r--r-- | src/options.rs | 21 |
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)) } |