diff --git a/crates/wasm-bindgen-cli/Cargo.toml b/crates/wasm-bindgen-cli/Cargo.toml
index b161bc35..a5e4f113 100644
--- a/crates/wasm-bindgen-cli/Cargo.toml
+++ b/crates/wasm-bindgen-cli/Cargo.toml
@@ -9,6 +9,7 @@ parity-wasm = "0.27"
serde = "1.0"
serde_derive = "1.0"
wasm-bindgen-cli-support = { path = "../wasm-bindgen-cli-support" }
+wasm-bindgen-shared = { path = "../wasm-bindgen-shared" }
[[bin]]
name = "wasm-bindgen"
diff --git a/crates/wasm-bindgen-cli/src/bin/wasm-bindgen.rs b/crates/wasm-bindgen-cli/src/bin/wasm-bindgen.rs
index f067de93..4d8a1303 100644
--- a/crates/wasm-bindgen-cli/src/bin/wasm-bindgen.rs
+++ b/crates/wasm-bindgen-cli/src/bin/wasm-bindgen.rs
@@ -2,6 +2,7 @@ extern crate wasm_bindgen_cli_support;
#[macro_use]
extern crate serde_derive;
extern crate docopt;
+extern crate wasm_bindgen_shared;
use std::path::PathBuf;
@@ -14,6 +15,7 @@ Generating JS bindings for a wasm file
Usage:
wasm-bindgen [options]
wasm-bindgen -h | --help
+ wasm-bindgen -V | --version
Options:
-h --help Show this screen.
@@ -21,6 +23,7 @@ Options:
--nodejs Generate output for node.js, not the browser
--typescript Output a TypeScript definition file
--debug Include otherwise-extraneous debug checks in output
+ -V --version Print the version number of wasm-bindgen
";
#[derive(Debug, Deserialize)]
@@ -29,7 +32,8 @@ struct Args {
flag_typescript: bool,
flag_out_dir: Option,
flag_debug: bool,
- arg_input: PathBuf,
+ flag_version: bool,
+ arg_input: Option,
}
fn main() {
@@ -37,8 +41,18 @@ fn main() {
.and_then(|d| d.deserialize())
.unwrap_or_else(|e| e.exit());
+ if args.flag_version {
+ println!("wasm-bindgen {}", wasm_bindgen_shared::version());
+ return
+ }
+
+ let input = match args.arg_input {
+ Some(s) => s,
+ None => panic!("input file expected"),
+ };
+
let mut b = Bindgen::new();
- b.input_path(&args.arg_input)
+ b.input_path(&input)
.nodejs(args.flag_nodejs)
.debug(args.flag_debug)
.typescript(args.flag_typescript);
diff --git a/crates/wasm-bindgen-shared/build.rs b/crates/wasm-bindgen-shared/build.rs
new file mode 100644
index 00000000..a1761e39
--- /dev/null
+++ b/crates/wasm-bindgen-shared/build.rs
@@ -0,0 +1,14 @@
+use std::process::Command;
+
+fn main() {
+ let rev = Command::new("git")
+ .arg("rev-parse")
+ .arg("HEAD")
+ .output()
+ .ok()
+ .map(|s| s.stdout)
+ .and_then(|s| String::from_utf8(s).ok());
+ if let Some(rev) = rev {
+ println!("cargo:rustc-env=WBG_VERSION={}", &rev[..9]);
+ }
+}
diff --git a/crates/wasm-bindgen-shared/src/lib.rs b/crates/wasm-bindgen-shared/src/lib.rs
index d4ef64d7..17ac86de 100644
--- a/crates/wasm-bindgen-shared/src/lib.rs
+++ b/crates/wasm-bindgen-shared/src/lib.rs
@@ -134,3 +134,13 @@ pub fn name_to_descriptor(name: &str) -> char {
}
char::from_u32(ret).unwrap()
}
+
+pub fn version() -> String {
+ let mut v = env!("CARGO_PKG_VERSION").to_string();
+ if let Some(s) = option_env!("WBG_VERSION") {
+ v.push_str(" (");
+ v.push_str(s);
+ v.push_str(")");
+ }
+ return v
+}