feat(build): integrate cargo build and wasm-bindgen steps

master
Ashley Williams 7 years ago
parent bd7d940ab0
commit e67f835867
  1. 42
      src/bindgen.rs
  2. 41
      src/build.rs
  3. 16
      src/main.rs

@ -0,0 +1,42 @@
use std::process::Command;
pub fn cargo_install_wasm_bindgen() {
let output = Command::new("cargo")
.arg("install")
.arg("--git")
.arg("https://github.com/alexcrichton/wasm-bindgen")
.output()
.unwrap_or_else(|e| panic!("failed to execute process: {}", e));
if output.status.success() {
let s = String::from_utf8_lossy(&output.stdout);
print!(
"cargo_install_wasm_bindgen succeeded and stdout was:\n{}",
s
);
} else {
let s = String::from_utf8_lossy(&output.stderr);
print!("cargo_install_wasm_bindgen failed and stderr was:\n{}", s);
}
}
pub fn wasm_bindgen_build(path: &str) {
let output = Command::new("wasm-bindgen")
.current_dir(path)
.arg("--out-dir")
.arg("./pkg")
.output()
.unwrap_or_else(|e| panic!("failed to execute process: {}", e));
if output.status.success() {
let s = String::from_utf8_lossy(&output.stdout);
print!("cargo_build_wasm succeeded and stdout was:\n{}", s);
} else {
let s = String::from_utf8_lossy(&output.stderr);
print!("cargo_build_wasm failed and stderr was:\n{}", s);
}
}

@ -0,0 +1,41 @@
use std::process::Command;
pub fn rustup_add_wasm_target() {
let output = Command::new("rustup")
.arg("target")
.arg("add")
.arg("wasm32-unknown-unknown")
.output()
.unwrap_or_else(|e| panic!("failed to execute process: {}", e));
if output.status.success() {
let s = String::from_utf8_lossy(&output.stdout);
print!("rustup_add_wasm_target succeeded and stdout was:\n{}", s);
} else {
let s = String::from_utf8_lossy(&output.stderr);
print!("rustup_add_wasm_target failed and stderr was:\n{}", s);
}
}
pub fn cargo_build_wasm(path: &str) {
let output = Command::new("cargo")
.current_dir(path)
.arg("build")
.arg("--release")
.arg("--target")
.arg("wasm32-unknown-unknown")
.output()
.unwrap_or_else(|e| panic!("failed to execute process: {}", e));
if output.status.success() {
let s = String::from_utf8_lossy(&output.stdout);
print!("cargo_build_wasm succeeded and stdout was:\n{}", s);
} else {
let s = String::from_utf8_lossy(&output.stderr);
print!("cargo_build_wasm failed and stderr was:\n{}", s);
}
}

@ -2,6 +2,9 @@
extern crate quicli;
extern crate wasm_pack;
mod build;
mod bindgen;
use quicli::prelude::*;
/// 📦 ✨ pack and publish your wasm!
@ -29,11 +32,16 @@ enum Command {
main!(|args: Cli, log_level: verbosity| match args.cmd {
Command::Init { path } => {
match path {
Some(p) => wasm_pack::write_package_json(&p)?,
None => wasm_pack::write_package_json(".")?,
}
let crate_path = match path {
Some(p) => p,
None => ".".to_string(),
};
build::rustup_add_wasm_target();
build::cargo_build_wasm(&crate_path);
wasm_pack::write_package_json(&crate_path)?;
println!("✍ wrote a package.json!");
bindgen::cargo_install_wasm_bindgen();
bindgen::wasm_bindgen_build(&crate_path);
}
Command::Pack { .. } => {
println!("🎒 packed up your package!");

Loading…
Cancel
Save