fix(output): refactor

master
Ashley Williams 7 years ago
parent 8f25bf1fea
commit 64d7a2c828
  1. 28
      src/bindgen.rs
  2. 35
      src/build.rs
  3. 13
      src/emoji.rs
  4. 9
      src/lib.rs
  5. 65
      src/main.rs
  6. 10
      src/manifest.rs
  7. 18
      src/readme.rs

@ -1,24 +1,40 @@
use std::process::Command;
use console::style;
use emoji;
use progressbar;
pub fn cargo_install_wasm_bindgen() {
let step = format!(
"{} {}Installing WASM-bindgen...",
style("[6/7]").bold().dim(),
emoji::DOWN_ARROW
);
let pb = progressbar::new(step);
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));
.unwrap_or_else(|e| panic!("{} failed to execute process: {}", emoji::ERROR, e));
pb.finish();
//if !output.status.success() {
// let s = String::from_utf8_lossy(&output.stderr);
// print!(
// "⛔ cargo_install_wasm_bindgen failed and stderr was:\n{}",
// "{} cargo_install_wasm_bindgen failed and stderr was:\n{}",
// emoji::ERROR,
// s
// );
// }
}
pub fn wasm_bindgen_build(path: &str, name: &str) {
let step = format!(
"{} {}Running WASM-bindgen...",
style("[7/7]").bold().dim(),
emoji::RUNNER
);
let pb = progressbar::new(step);
let binary_name = name.replace("-", "_");
let wasm_path = format!("target/wasm32-unknown-unknown/release/{}.wasm", binary_name);
let _output = Command::new("wasm-bindgen")
@ -27,11 +43,11 @@ pub fn wasm_bindgen_build(path: &str, name: &str) {
.arg("--out-dir")
.arg("./pkg")
.output()
.unwrap_or_else(|e| panic!("failed to execute process: {}", e));
.unwrap_or_else(|e| panic!("{} failed to execute process: {}", emoji::ERROR, e));
pb.finish();
//if !output.status.success() {
// let s = String::from_utf8_lossy(&output.stderr);
// print!(" wasm_bindgen_build failed and stderr was:\n{}", s);
// print!(" wasm_bindgen_build failed and stderr was:\n{}", emoji::ERROR, s);
//}
}

@ -1,21 +1,40 @@
use std::process::Command;
use console::style;
use emoji;
use progressbar;
pub fn rustup_add_wasm_target() {
let step = format!(
"{} {}Adding WASM target...",
style("[1/7]").bold().dim(),
emoji::TARGET
);
let pb = progressbar::new(step);
let output = Command::new("rustup")
.arg("target")
.arg("add")
.arg("wasm32-unknown-unknown")
.output()
.unwrap_or_else(|e| panic!("failed to execute process: {}", e));
.unwrap_or_else(|e| panic!("{} failed to execute process: {}", emoji::ERROR, e));
pb.finish();
if !output.status.success() {
let s = String::from_utf8_lossy(&output.stderr);
print!("⛔ rustup_add_wasm_target failed and stderr was:\n{}", s);
print!(
"{} rustup_add_wasm_target failed and stderr was:\n{}",
emoji::ERROR,
s
);
}
}
pub fn cargo_build_wasm(path: &str) {
let step = format!(
"{} {}Compiling to WASM...",
style("[2/7]").bold().dim(),
emoji::CYCLONE
);
let pb = progressbar::new(step);
let output = Command::new("cargo")
.current_dir(path)
.arg("build")
@ -23,11 +42,15 @@ pub fn cargo_build_wasm(path: &str) {
.arg("--target")
.arg("wasm32-unknown-unknown")
.output()
.unwrap_or_else(|e| panic!("failed to execute process: {}", e));
.unwrap_or_else(|e| panic!("{} failed to execute process: {}", emoji::ERROR, e));
pb.finish();
if !output.status.success() {
let s = String::from_utf8_lossy(&output.stderr);
print!("⛔ cargo_build_wasm failed and stderr was:\n{}", s);
print!(
"{} cargo_build_wasm failed and stderr was:\n{}",
emoji::ERROR,
s
);
}
}

@ -0,0 +1,13 @@
use console::Emoji;
pub static TARGET: Emoji = Emoji("🎯 ", "");
pub static CYCLONE: Emoji = Emoji("🌀 ", "");
pub static FOLDER: Emoji = Emoji("📂 ", "");
pub static MEMO: Emoji = Emoji("📝 ", "");
pub static DOWN_ARROW: Emoji = Emoji("⬇ ", "");
pub static RUNNER: Emoji = Emoji("🏃 ", "");
pub static SPARKLE: Emoji = Emoji("✨ ", ":-)");
pub static PACKAGE: Emoji = Emoji("📦 ", ":-)");
pub static WARN: Emoji = Emoji("⚠ ", ":-)");
pub static DANCERS: Emoji = Emoji("👯 ", "");
pub static ERROR: Emoji = Emoji("⛔ ", "");

@ -11,13 +11,22 @@ pub mod bindgen;
pub mod readme;
pub mod manifest;
pub mod progressbar;
pub mod emoji;
use std::fs;
use failure::Error;
use console::style;
pub fn create_pkg_dir(path: &str) -> Result<(), Error> {
let step = format!(
"{} {}Creating a pkg directory...",
style("[3/7]").bold().dim(),
emoji::FOLDER
);
let pb = progressbar::new(step);
let pkg_dir_path = format!("{}/pkg", path);
fs::create_dir_all(pkg_dir_path)?;
pb.finish();
Ok(())
}

@ -5,23 +5,11 @@ extern crate indicatif;
extern crate quicli;
extern crate wasm_pack;
use wasm_pack::progressbar;
use std::time::Instant;
use console::{style, Emoji};
use indicatif::HumanDuration;
use quicli::prelude::*;
use wasm_pack::{bindgen, build, manifest, readme};
static TARGET: Emoji = Emoji("🎯 ", "");
static CYCLONE: Emoji = Emoji("🌀 ", "");
static FOLDER: Emoji = Emoji("📂 ", "");
static MEMO: Emoji = Emoji("📝 ", "");
static DOWN_ARROW: Emoji = Emoji("⬇ ", "");
static RUNNER: Emoji = Emoji("🏃 ", "");
static SPARKLE: Emoji = Emoji("✨ ", ":-)");
static PACKAGE: Emoji = Emoji("📦 ", ":-)");
use wasm_pack::{bindgen, build, emoji, manifest, readme};
/// 📦 ✨ pack and publish your wasm!
#[derive(Debug, StructOpt)]
@ -55,60 +43,23 @@ main!(|args: Cli, log_level: verbosity| match args.cmd {
None => ".".to_string(),
};
let step1 = format!(
"{} {}Adding WASM target...",
style("[1/7]").bold().dim(),
TARGET
);
let pb1 = progressbar::new(step1);
build::rustup_add_wasm_target();
pb1.finish();
let step2 = format!(
"{} {}Compiling to WASM...",
style("[2/7]").bold().dim(),
CYCLONE
);
let pb2 = progressbar::new(step2);
build::cargo_build_wasm(&crate_path);
pb2.finish();
let step3 = format!(
"{} {}Creating a pkg directory...",
style("[3/7]").bold().dim(),
FOLDER
);
let pb3 = progressbar::new(step3);
wasm_pack::create_pkg_dir(&crate_path)?;
pb3.finish();
let step4 = format!(
"{} {}Writing a package.json...",
style("[4/7]").bold().dim(),
MEMO
);
let pb4 = progressbar::new(step4);
manifest::write_package_json(&crate_path)?;
pb4.finish();
readme::copy_from_crate(&crate_path)?;
let step6 = format!(
"{} {}Installing WASM-bindgen...",
style("[6/7]").bold().dim(),
DOWN_ARROW
);
let pb6 = progressbar::new(step6);
bindgen::cargo_install_wasm_bindgen();
pb6.finish();
let name = manifest::get_crate_name(&crate_path)?;
let step7 = format!(
"{} {}Running WASM-bindgen...",
style("[7/7]").bold().dim(),
RUNNER
);
let pb7 = progressbar::new(step7);
bindgen::wasm_bindgen_build(&crate_path, &name);
pb7.finish();
println!("{} Done in {}", SPARKLE, HumanDuration(started.elapsed()));
println!(
"{} Done in {}",
emoji::SPARKLE,
HumanDuration(started.elapsed())
);
println!(
"{} Your WASM pkg is ready to publish at {}/pkg",
PACKAGE, &crate_path
emoji::PACKAGE,
&crate_path
)
}
Command::Pack { .. } => {

@ -1,9 +1,12 @@
use std::fs::File;
use std::io::prelude::*;
use console::style;
use failure::Error;
use serde_json;
use toml;
use emoji;
use progressbar;
#[derive(Deserialize)]
struct CargoManifest {
@ -66,12 +69,19 @@ impl CargoManifest {
/// Generate a package.json file inside in `./pkg`.
pub fn write_package_json(path: &str) -> Result<(), Error> {
let step = format!(
"{} {}Writing a package.json...",
style("[4/7]").bold().dim(),
emoji::MEMO
);
let pb = progressbar::new(step);
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();
let npm_json = serde_json::to_string(&npm_data)?;
pkg_file.write_all(npm_json.as_bytes())?;
pb.finish();
Ok(())
}

@ -1,25 +1,27 @@
use std::fs;
use failure::Error;
use console::{style, Emoji};
use console::style;
use indicatif::MultiProgress;
use progressbar;
static WARN: Emoji = Emoji("⚠ ", ":-)");
static DANCERS: Emoji = Emoji("👯 ", "");
use emoji;
pub fn copy_from_crate(path: &str) -> Result<(), Error> {
let m = MultiProgress::new();
let step = format!(
"{} {}Copying over your README...",
style("[5/7]").bold().dim(),
DANCERS
"{} {}Copying over your README...",
style("[5/7]").bold().dim(),
emoji::DANCERS
);
let pb = m.add(progressbar::new(step));
let crate_readme_path = format!("{}/README.md", path);
let new_readme_path = format!("{}/pkg/README.md", path);
if let Err(_) = fs::copy(&crate_readme_path, &new_readme_path) {
let warn = format!("{} {}: origin crate has no README", WARN, style("[WARN]").bold().dim());
let warn = format!(
"{} {}: origin crate has no README",
emoji::WARN,
style("[WARN]").bold().dim()
);
let warn_pb = m.add(progressbar::new(warn));
warn_pb.finish();
};

Loading…
Cancel
Save