Merge pull request #19 from ashleygwilliams/example

add js-hello-world example and take a path as an arg
master
ashley williams 7 years ago committed by GitHub
commit bd7d940ab0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 13
      examples/js-hello-world/Cargo.toml
  2. 16
      examples/js-hello-world/src/lib.rs
  3. 8
      src/lib.rs
  4. 9
      src/main.rs
  5. 10
      tests/wasm-pack.rs

@ -0,0 +1,13 @@
[package]
name = "js-hello-world"
description = "an example rust->wasm crate"
version = "0.1.0"
authors = ["Ashley Williams <ashley666ashley@gmail.com>"]
license = "WTFPL"
repository = "https://github.com/ashleygwilliams/wasm-pack"
[lib]
crate-type = ["cdylib"]
[dependencies]
wasm-bindgen = { git = 'https://github.com/alexcrichton/wasm-bindgen' }

@ -0,0 +1,16 @@
#![feature(proc_macro)]
extern crate wasm_bindgen;
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
extern {
fn alert(s: &str);
}
#[wasm_bindgen]
#[no_mangle]
pub extern fn greet(name: &str) {
alert(&format!("Hello, {}!", name));
}

@ -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