Skip to content

Commit cf3658b

Browse files
committed
options: Implement --version manually and print clang version on --version --verbose
Fixes #2138
1 parent aba2c29 commit cf3658b

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

src/options.rs

+17-4
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@ where
2323
);
2424

2525
let matches = App::new("bindgen")
26-
.version(option_env!("CARGO_PKG_VERSION").unwrap_or("unknown"))
2726
.about("Generates Rust bindings from C/C++ headers.")
27+
.setting(clap::AppSettings::NoAutoVersion)
2828
.override_usage("bindgen [FLAGS] [OPTIONS] <header> -- <clang-args>...")
2929
.args(&[
3030
Arg::new("header")
3131
.help("C or C++ header file")
32-
.required(true),
32+
.required_unless_present("V"),
3333
Arg::new("depfile")
3434
.long("depfile")
3535
.takes_value(true)
@@ -545,9 +545,24 @@ where
545545
Arg::new("vtable-generation")
546546
.long("vtable-generation")
547547
.help("Enables generation of vtable functions."),
548+
Arg::new("V")
549+
.long("version")
550+
.help("Prints the version, and exits"),
548551
]) // .args()
549552
.get_matches_from(args);
550553

554+
let verbose = matches.is_present("verbose");
555+
if matches.is_present("V") {
556+
println!(
557+
"bindgen {}",
558+
option_env!("CARGO_PKG_VERSION").unwrap_or("unknown")
559+
);
560+
if verbose {
561+
println!("Clang: {}", crate::clang_version().full);
562+
}
563+
std::process::exit(0);
564+
}
565+
551566
let mut builder = builder();
552567

553568
if let Some(header) = matches.value_of("header") {
@@ -1015,7 +1030,5 @@ where
10151030
builder = builder.vtable_generation(true);
10161031
}
10171032

1018-
let verbose = matches.is_present("verbose");
1019-
10201033
Ok((builder, output, verbose))
10211034
}

0 commit comments

Comments
 (0)