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,
}
fn read_cargo_toml() -> Result<CargoManifest, Error> {
let mut cargo_file = File::open("Cargo.toml")?;
fn read_cargo_toml(path: &str) -> Result<CargoManifest, Error> {
let mut cargo_file = File::open(format!("{}/Cargo.toml", path))?;
let mut cargo_contents = String::new();
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`.
pub fn write_package_json() -> Result<(), Error> {
pub fn write_package_json(path: &str) -> Result<(), Error> {
create_pkg_dir()?;
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_json = serde_json::to_string(&npm_data)?;
pkg_file.write_all(npm_json.as_bytes())?;

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

@ -3,7 +3,13 @@ extern crate wasm_pack;
use std::fs;
#[test]
fn it_creates_a_package_json() {
assert!(wasm_pack::write_package_json().is_ok());
fn it_creates_a_package_json_default_path() {
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());
}

Loading…
Cancel
Save