feat(command): expose --no-typescript option to init command

- relates to #107
master
OJ Kwon 7 years ago
parent 26c8b8dfcf
commit 75db2a8f68
No known key found for this signature in database
GPG Key ID: 6C23A45602A44DA6
  1. 9
      src/bindgen.rs
  2. 18
      src/command.rs
  3. 18
      src/manifest.rs

@ -29,7 +29,7 @@ pub fn cargo_install_wasm_bindgen() -> Result<(), Error> {
}
}
pub fn wasm_bindgen_build(path: &str, name: &str) -> Result<(), Error> {
pub fn wasm_bindgen_build(path: &str, name: &str, disable_dts: bool) -> Result<(), Error> {
let step = format!(
"{} {}Running WASM-bindgen...",
style("[7/7]").bold().dim(),
@ -38,11 +38,18 @@ pub fn wasm_bindgen_build(path: &str, name: &str) -> Result<(), Error> {
let pb = PBAR.message(&step);
let binary_name = name.replace("-", "_");
let wasm_path = format!("target/wasm32-unknown-unknown/release/{}.wasm", binary_name);
let dts_arg = if disable_dts == false {
"--typescript"
} else {
"--no-typescript"
};
let output = Command::new("wasm-bindgen")
.current_dir(path)
.arg(&wasm_path)
.arg("--out-dir")
.arg("./pkg")
.arg(dts_arg)
.output()?;
pb.finish();
if !output.status.success() {

@ -22,6 +22,8 @@ pub enum Command {
path: Option<String>,
#[structopt(long = "scope", short = "s")]
scope: Option<String>,
#[structopt(long = "no-typescript")]
disable_dts: bool,
},
#[structopt(name = "pack")]
/// 🍱 create a tar of your npm package but don't publish! [NOT IMPLEMENTED]
@ -35,7 +37,11 @@ pub fn run_wasm_pack(command: Command) -> result::Result<(), Error> {
// Run the correct command based off input and store the result of it so that we can clear
// the progress bar then return it
let status = match command {
Command::Init { path, scope } => init(path, scope),
Command::Init {
path,
scope,
disable_dts,
} => init(path, scope, disable_dts),
Command::Pack { path } => pack(path),
Command::Publish { path } => publish(path),
};
@ -65,7 +71,11 @@ pub fn create_pkg_dir(path: &str) -> result::Result<(), Error> {
Ok(())
}
fn init(path: Option<String>, scope: Option<String>) -> result::Result<(), Error> {
fn init(
path: Option<String>,
scope: Option<String>,
disable_dts: bool,
) -> result::Result<(), Error> {
let started = Instant::now();
let crate_path = set_crate_path(path);
@ -73,11 +83,11 @@ fn init(path: Option<String>, scope: Option<String>) -> result::Result<(), Error
build::rustup_add_wasm_target()?;
build::cargo_build_wasm(&crate_path)?;
create_pkg_dir(&crate_path)?;
manifest::write_package_json(&crate_path, scope)?;
manifest::write_package_json(&crate_path, scope, disable_dts)?;
readme::copy_from_crate(&crate_path)?;
bindgen::cargo_install_wasm_bindgen()?;
let name = manifest::get_crate_name(&crate_path)?;
bindgen::wasm_bindgen_build(&crate_path, &name)?;
bindgen::wasm_bindgen_build(&crate_path, &name, disable_dts)?;
PBAR.message(&format!(
"{} Done in {}",
emoji::SPARKLE,

@ -33,6 +33,7 @@ struct NpmPackage {
repository: Option<Repository>,
files: Vec<String>,
main: String,
types: Option<String>,
}
#[derive(Serialize)]
@ -52,10 +53,16 @@ fn read_cargo_toml(path: &str) -> Result<CargoManifest, Error> {
}
impl CargoManifest {
fn into_npm(mut self, scope: Option<String>) -> NpmPackage {
fn into_npm(mut self, scope: Option<String>, disable_dts: bool) -> NpmPackage {
let filename = self.package.name.replace("-", "_");
let wasm_file = format!("{}_bg.wasm", filename);
let js_file = format!("{}.js", filename);
let dts_file = if disable_dts == true {
None
} else {
Some(format!("{}.d.ts", filename))
};
if let Some(s) = scope {
self.package.name = format!("@{}/{}", s, self.package.name);
}
@ -71,12 +78,17 @@ impl CargoManifest {
}),
files: vec![wasm_file],
main: js_file,
types: dts_file,
}
}
}
/// Generate a package.json file inside in `./pkg`.
pub fn write_package_json(path: &str, scope: Option<String>) -> Result<(), Error> {
pub fn write_package_json(
path: &str,
scope: Option<String>,
disable_dts: bool,
) -> Result<(), Error> {
let step = format!(
"{} {}Writing a package.json...",
style("[4/7]").bold().dim(),
@ -94,7 +106,7 @@ pub fn write_package_json(path: &str, scope: Option<String>) -> Result<(), Error
let pkg_file_path = format!("{}/pkg/package.json", path);
let mut pkg_file = File::create(pkg_file_path)?;
let crate_data = read_cargo_toml(path)?;
let npm_data = crate_data.into_npm(scope);
let npm_data = crate_data.into_npm(scope, disable_dts);
if npm_data.description.is_none() {
PBAR.warn(&warn_fmt("description"));

Loading…
Cancel
Save