message: feat(bindgen): update to --target flag interface
diff: @@ -41,25 +41,19 @@ pub fn wasm_bindgen_build(
  "--typescript"
  };
  let bindgen_path = bindgen.binary("wasm-bindgen")?;
  - let target_arg = match target {
  - Target::Nodejs => "--nodejs",
  - Target::NoModules => "--no-modules",
  - Target::Web => {
  - if supports_web_target(&bindgen_path)? {
  - "--web"
  - } else {
  - bail!("Your current version of wasm-bindgen does not support the 'web' target. Please update your project to wasm-bindgen version >= 0.2.39.")
  - }
  - }
  - Target::Bundler => "--browser",
  - };
  let mut cmd = Command::new(&bindgen_path);
  cmd.arg(&wasm_path)
  .arg("--out-dir")
  .arg(out_dir)
  - .arg(dts_arg)
  - .arg(target_arg);
  + .arg(dts_arg);
  +
  + let target_arg = build_target_arg(target, &bindgen_path)?;
  + if supports_dash_dash_target(&bindgen_path)? {
  + cmd.arg("--target").arg(target_arg);
  + } else {
  + cmd.arg(target_arg);
  + }
  if let Some(value) = out_name {
  cmd.arg("--out-name").arg(value);
  @@ -80,7 +74,7 @@ pub fn wasm_bindgen_build(
  Ok(())
  }
  -/// Check if the `wasm-bindgen` dependency is locally satisfied.
  +/// Check if the `wasm-bindgen` dependency is locally satisfied for the web target
  fn supports_web_target(cli_path: &PathBuf) -> Result<bool, failure::Error> {
  let cli_version = semver::Version::parse(&install::get_cli_version(
  &install::Tool::WasmBindgen,
  @@ -89,3 +83,44 @@ fn supports_web_target(cli_path: &PathBuf) -> Result<bool, failure::Error> {
  let expected_version = semver::Version::parse("0.2.39")?;
  Ok(cli_version >= expected_version)
  }
  +
  +/// Check if the `wasm-bindgen` dependency is locally satisfied for the --target flag
  +fn supports_dash_dash_target(cli_path: &PathBuf) -> Result<bool, failure::Error> {
  + let cli_version = semver::Version::parse(&install::get_cli_version(
  + &install::Tool::WasmBindgen,
  + cli_path,
  + )?)?;
  + let expected_version = semver::Version::parse("0.2.40")?;
  + Ok(cli_version >= expected_version)
  +}
  +
  +fn build_target_arg(target: Target, cli_path: &PathBuf) -> Result<&str, failure::Error> {
  + if !supports_dash_dash_target(cli_path)? {
  + Ok(build_target_arg_legacy(target, cli_path)?)
  + } else {
  + let target_arg = match target {
  + Target::Nodejs => "nodejs",
  + Target::NoModules => "no-modules",
  + Target::Web => "web",
  + Target::Bundler => "bundler",
  + };
  + Ok(target_arg)
  + }
  +}
  +
  +fn build_target_arg_legacy(target: Target, cli_path: &PathBuf) -> Result<&str, failure::Error> {
  + log::info!("Your version of wasm-bindgen is out of date. You should consider updating your Cargo.toml to a version >= 0.2.40.");
  + let target_arg = match target {
  + Target::Nodejs => "--nodejs",
  + Target::NoModules => "--no-modules",
  + Target::Web => {
  + if supports_web_target(&cli_path)? {
  + "--web"
  + } else {
  + bail!("Your current version of wasm-bindgen does not support the 'web' target. Please update your project to wasm-bindgen version >= 0.2.39.")
  + }
  + }
  + Target::Bundler => "--browser",
  + };
  + Ok(target_arg)
  +}
  