@@ -23,13 +23,13 @@ where
23
23
) ;
24
24
25
25
let matches = App :: new ( "bindgen" )
26
- . version ( option_env ! ( "CARGO_PKG_VERSION" ) . unwrap_or ( "unknown" ) )
27
26
. about ( "Generates Rust bindings from C/C++ headers." )
27
+ . setting ( clap:: AppSettings :: NoAutoVersion )
28
28
. override_usage ( "bindgen [FLAGS] [OPTIONS] <header> -- <clang-args>..." )
29
29
. args ( & [
30
30
Arg :: new ( "header" )
31
31
. help ( "C or C++ header file" )
32
- . required ( true ) ,
32
+ . required_unless_present ( "V" ) ,
33
33
Arg :: new ( "depfile" )
34
34
. long ( "depfile" )
35
35
. takes_value ( true )
@@ -545,9 +545,24 @@ where
545
545
Arg :: new ( "vtable-generation" )
546
546
. long ( "vtable-generation" )
547
547
. help ( "Enables generation of vtable functions." ) ,
548
+ Arg :: new ( "V" )
549
+ . long ( "version" )
550
+ . help ( "Prints the version, and exits" ) ,
548
551
] ) // .args()
549
552
. get_matches_from ( args) ;
550
553
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
+
551
566
let mut builder = builder ( ) ;
552
567
553
568
if let Some ( header) = matches. value_of ( "header" ) {
@@ -1015,7 +1030,5 @@ where
1015
1030
builder = builder. vtable_generation ( true ) ;
1016
1031
}
1017
1032
1018
- let verbose = matches. is_present ( "verbose" ) ;
1019
-
1020
1033
Ok ( ( builder, output, verbose) )
1021
1034
}
0 commit comments