feat(args): take a path to a crate as an arg to init

master
Ashley Williams 7 years ago
parent be97683fd2
commit 83e44c19b8
  1. 8
      src/lib.rs
  2. 9
      src/main.rs
  3. 10
      tests/wasm-pack.rs

@ -39,8 +39,8 @@ struct Repository {
url: String, url: String,
} }
fn read_cargo_toml() -> Result<CargoManifest, Error> { fn read_cargo_toml(path: &str) -> Result<CargoManifest, Error> {
let mut cargo_file = File::open("Cargo.toml")?; let mut cargo_file = File::open(format!("{}/Cargo.toml", path))?;
let mut cargo_contents = String::new(); let mut cargo_contents = String::new();
cargo_file.read_to_string(&mut cargo_contents)?; cargo_file.read_to_string(&mut cargo_contents)?;
@ -68,10 +68,10 @@ fn create_pkg_dir() -> Result<(), Error> {
} }
/// Generate a package.json file inside in `./pkg`. /// Generate a package.json file inside in `./pkg`.
pub fn write_package_json() -> Result<(), Error> { pub fn write_package_json(path: &str) -> Result<(), Error> {
create_pkg_dir()?; create_pkg_dir()?;
let mut pkg_file = File::create("./pkg/package.json")?; let mut pkg_file = File::create("./pkg/package.json")?;
let crate_data = read_cargo_toml()?; let crate_data = read_cargo_toml(path)?;
let npm_data = crate_data.into_npm(); let npm_data = crate_data.into_npm();
let npm_json = serde_json::to_string(&npm_data)?; let npm_json = serde_json::to_string(&npm_data)?;
pkg_file.write_all(npm_json.as_bytes())?; pkg_file.write_all(npm_json.as_bytes())?;

@ -18,7 +18,7 @@ struct Cli {
enum Command { enum Command {
#[structopt(name = "init")] #[structopt(name = "init")]
/// 🐣 initialize a package.json based on your compiled wasm /// 🐣 initialize a package.json based on your compiled wasm
Init {}, Init { path: Option<String> },
#[structopt(name = "pack")] #[structopt(name = "pack")]
/// 🍱 create a tar of your npm package but don't publish! /// 🍱 create a tar of your npm package but don't publish!
Pack {}, Pack {},
@ -28,8 +28,11 @@ enum Command {
} }
main!(|args: Cli, log_level: verbosity| match args.cmd { main!(|args: Cli, log_level: verbosity| match args.cmd {
Command::Init { .. } => { Command::Init { path } => {
wasm_pack::write_package_json()?; match path {
Some(p) => wasm_pack::write_package_json(&p)?,
None => wasm_pack::write_package_json(".")?,
}
println!("✍ wrote a package.json!"); println!("✍ wrote a package.json!");
} }
Command::Pack { .. } => { Command::Pack { .. } => {

@ -3,7 +3,13 @@ extern crate wasm_pack;
use std::fs; use std::fs;
#[test] #[test]
fn it_creates_a_package_json() { fn it_creates_a_package_json_default_path() {
assert!(wasm_pack::write_package_json().is_ok()); assert!(wasm_pack::write_package_json(".").is_ok());
assert!(fs::metadata("./pkg/package.json").is_ok());
}
#[test]
fn it_creates_a_package_json_provided_path() {
assert!(wasm_pack::write_package_json("./examples/js-hello-world").is_ok());
assert!(fs::metadata("./pkg/package.json").is_ok()); assert!(fs::metadata("./pkg/package.json").is_ok());
} }

Loading…
Cancel
Save