commit
a2235e5af4
@ -1,12 +1,10 @@ |
|||||||
Make sure these boxes are checked! 📦✅ |
Make sure these boxes are checked! 📦✅ |
||||||
|
|
||||||
- [ ] You have the latest version of `rustfmt` installed and have your |
- [ ] You have the latest version of `rustfmt` installed |
||||||
cloned directory set to nightly |
|
||||||
```bash |
```bash |
||||||
$ rustup override set nightly |
|
||||||
$ rustup component add rustfmt-preview --toolchain nightly |
$ rustup component add rustfmt-preview --toolchain nightly |
||||||
``` |
``` |
||||||
- [ ] You ran `rustfmt` on the code base before submitting |
- [ ] You ran `cargo fmt` on the code base before submitting |
||||||
- [ ] You reference which issue is being closed in the PR text |
- [ ] You reference which issue is being closed in the PR text |
||||||
|
|
||||||
✨✨ 😄 Thanks so much for contributing to wasm-pack! 😄 ✨✨ |
✨✨ 😄 Thanks so much for contributing to wasm-pack! 😄 ✨✨ |
||||||
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,74 @@ |
|||||||
|
//! Copy `LICENSE` file(s) for the packaged wasm.
|
||||||
|
|
||||||
|
use failure; |
||||||
|
use std::fs; |
||||||
|
use std::path::Path; |
||||||
|
|
||||||
|
use emoji; |
||||||
|
use glob::glob; |
||||||
|
use manifest::CrateData; |
||||||
|
use progressbar::Step; |
||||||
|
use PBAR; |
||||||
|
|
||||||
|
fn glob_license_files(path: &Path) -> Result<Vec<String>, failure::Error> { |
||||||
|
let mut license_files: Vec<String> = Vec::new(); |
||||||
|
for entry in glob(path.join("LICENSE*").to_str().unwrap())? { |
||||||
|
match entry { |
||||||
|
Ok(globed_path) => { |
||||||
|
license_files.push(String::from( |
||||||
|
globed_path.file_name().unwrap().to_str().unwrap(), |
||||||
|
)); |
||||||
|
} |
||||||
|
Err(e) => println!("{:?}", e), |
||||||
|
} |
||||||
|
} |
||||||
|
Ok(license_files) |
||||||
|
} |
||||||
|
|
||||||
|
/// Copy the crate's license into the `pkg` directory.
|
||||||
|
pub fn copy_from_crate( |
||||||
|
crate_data: &CrateData, |
||||||
|
path: &Path, |
||||||
|
out_dir: &Path, |
||||||
|
step: &Step, |
||||||
|
) -> Result<(), failure::Error> { |
||||||
|
assert!( |
||||||
|
fs::metadata(path).ok().map_or(false, |m| m.is_dir()), |
||||||
|
"crate directory should exist" |
||||||
|
); |
||||||
|
|
||||||
|
assert!( |
||||||
|
fs::metadata(&out_dir).ok().map_or(false, |m| m.is_dir()), |
||||||
|
"crate's pkg directory should exist" |
||||||
|
); |
||||||
|
|
||||||
|
match crate_data.crate_license() { |
||||||
|
Some(_) => { |
||||||
|
let msg = format!("{}Copying over your LICENSE...", emoji::DANCERS); |
||||||
|
PBAR.step(step, &msg); |
||||||
|
let license_files = glob_license_files(path); |
||||||
|
|
||||||
|
match license_files { |
||||||
|
Ok(files) => { |
||||||
|
if files.len() == 0 { |
||||||
|
PBAR.info("License key is set in Cargo.toml but no LICENSE file(s) were found; Please add the LICENSE file(s) to your project directory"); |
||||||
|
return Ok(()); |
||||||
|
} |
||||||
|
for license_file in files { |
||||||
|
let crate_license_path = path.join(&license_file); |
||||||
|
let new_license_path = out_dir.join(&license_file); |
||||||
|
if let Err(_) = fs::copy(&crate_license_path, &new_license_path) { |
||||||
|
PBAR.info("origin crate has no LICENSE"); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
Err(_) => PBAR.info("origin crate has no LICENSE"), |
||||||
|
} |
||||||
|
} |
||||||
|
None => { |
||||||
|
PBAR.step(step, "No LICENSE found in Cargo.toml, skipping..."); |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
Ok(()) |
||||||
|
} |
@ -0,0 +1,130 @@ |
|||||||
|
extern crate failure; |
||||||
|
extern crate wasm_pack; |
||||||
|
|
||||||
|
use std::fs; |
||||||
|
|
||||||
|
use utils::{self, fixture}; |
||||||
|
use wasm_pack::license; |
||||||
|
use wasm_pack::manifest::CrateData; |
||||||
|
|
||||||
|
#[test] |
||||||
|
fn it_copies_a_license_default_path() { |
||||||
|
let fixture = fixture::single_license(); |
||||||
|
let out_dir = fixture.path.join("pkg"); |
||||||
|
fs::create_dir(&out_dir).expect("should create pkg directory OK"); |
||||||
|
let crate_data = CrateData::new(&fixture.path); |
||||||
|
|
||||||
|
let step = wasm_pack::progressbar::Step::new(1); |
||||||
|
assert!(license::copy_from_crate(&crate_data.unwrap(), &fixture.path, &out_dir, &step).is_ok()); |
||||||
|
|
||||||
|
let crate_license_path = fixture.path.join("LICENSE-WTFPL"); |
||||||
|
let pkg_license_path = out_dir.join("LICENSE-WTFPL"); |
||||||
|
println!( |
||||||
|
"wasm-pack: should have copied LICENSE from '{}' to '{}'", |
||||||
|
crate_license_path.display(), |
||||||
|
pkg_license_path.display() |
||||||
|
); |
||||||
|
assert!(fs::metadata(&crate_license_path).is_ok()); |
||||||
|
|
||||||
|
assert!(fs::metadata(&pkg_license_path).is_ok()); |
||||||
|
|
||||||
|
let crate_license = utils::file::read_file(&crate_license_path).unwrap(); |
||||||
|
let pkg_license = utils::file::read_file(&pkg_license_path).unwrap(); |
||||||
|
assert_eq!(crate_license, pkg_license); |
||||||
|
} |
||||||
|
|
||||||
|
#[test] |
||||||
|
fn it_copies_a_license_provied_path() { |
||||||
|
let fixture = fixture::single_license(); |
||||||
|
let out_dir = fixture.path.join("pkg"); |
||||||
|
fs::create_dir(&out_dir).expect("should create pkg directory OK"); |
||||||
|
let crate_data = CrateData::new(&fixture.path); |
||||||
|
|
||||||
|
let step = wasm_pack::progressbar::Step::new(1); |
||||||
|
assert!(license::copy_from_crate(&crate_data.unwrap(), &fixture.path, &out_dir, &step).is_ok()); |
||||||
|
let crate_license_path = fixture.path.join("LICENSE-WTFPL"); |
||||||
|
let pkg_license_path = out_dir.join("LICENSE-WTFPL"); |
||||||
|
println!( |
||||||
|
"wasm-pack: should have copied LICENSE-WTFPL from '{}' to '{}'", |
||||||
|
crate_license_path.display(), |
||||||
|
pkg_license_path.display() |
||||||
|
); |
||||||
|
assert!(fs::metadata(&crate_license_path).is_ok()); |
||||||
|
assert!(fs::metadata(&pkg_license_path).is_ok()); |
||||||
|
|
||||||
|
let crate_license = utils::file::read_file(&crate_license_path).unwrap(); |
||||||
|
let pkg_license = utils::file::read_file(&pkg_license_path).unwrap(); |
||||||
|
assert_eq!(crate_license, pkg_license); |
||||||
|
} |
||||||
|
|
||||||
|
#[test] |
||||||
|
fn it_copies_all_licenses_default_path() { |
||||||
|
let fixture = fixture::dual_license(); |
||||||
|
let out_dir = fixture.path.join("pkg"); |
||||||
|
fs::create_dir(&out_dir).expect("should create pkg directory OK"); |
||||||
|
let crate_data = CrateData::new(&fixture.path); |
||||||
|
|
||||||
|
let step = wasm_pack::progressbar::Step::new(1); |
||||||
|
assert!(license::copy_from_crate(&crate_data.unwrap(), &fixture.path, &out_dir, &step).is_ok()); |
||||||
|
|
||||||
|
let crate_license_path = fixture.path.join("LICENSE-WTFPL"); |
||||||
|
let pkg_license_path = out_dir.join("LICENSE-WTFPL"); |
||||||
|
|
||||||
|
let crate_license_path_2 = fixture.path.join("LICENSE-MIT"); |
||||||
|
let pkg_license_path_2 = out_dir.join("LICENSE-MIT"); |
||||||
|
|
||||||
|
println!( |
||||||
|
"wasm-pack: should have copied LICENSE from '{}' to '{}'", |
||||||
|
crate_license_path.display(), |
||||||
|
pkg_license_path.display() |
||||||
|
); |
||||||
|
assert!(fs::metadata(&crate_license_path).is_ok()); |
||||||
|
assert!(fs::metadata(&pkg_license_path).is_ok()); |
||||||
|
|
||||||
|
assert!(fs::metadata(&crate_license_path_2).is_ok()); |
||||||
|
assert!(fs::metadata(&pkg_license_path_2).is_ok()); |
||||||
|
|
||||||
|
let crate_license = utils::file::read_file(&crate_license_path).unwrap(); |
||||||
|
let pkg_license = utils::file::read_file(&pkg_license_path).unwrap(); |
||||||
|
assert_eq!(crate_license, pkg_license); |
||||||
|
|
||||||
|
let crate_license_2 = utils::file::read_file(&crate_license_path_2).unwrap(); |
||||||
|
let pkg_license_2 = utils::file::read_file(&pkg_license_path_2).unwrap(); |
||||||
|
assert_eq!(crate_license_2, pkg_license_2); |
||||||
|
} |
||||||
|
|
||||||
|
#[test] |
||||||
|
fn it_copies_all_licenses_provided_path() { |
||||||
|
let fixture = fixture::dual_license(); |
||||||
|
let out_dir = fixture.path.join("pkg"); |
||||||
|
fs::create_dir(&out_dir).expect("should create pkg directory OK"); |
||||||
|
let crate_data = CrateData::new(&fixture.path); |
||||||
|
|
||||||
|
let step = wasm_pack::progressbar::Step::new(1); |
||||||
|
assert!(license::copy_from_crate(&crate_data.unwrap(), &fixture.path, &out_dir, &step).is_ok()); |
||||||
|
|
||||||
|
let crate_license_path = fixture.path.join("LICENSE-WTFPL"); |
||||||
|
let pkg_license_path = out_dir.join("LICENSE-WTFPL"); |
||||||
|
|
||||||
|
let crate_license_path_2 = fixture.path.join("LICENSE-MIT"); |
||||||
|
let pkg_license_path_2 = out_dir.join("LICENSE-MIT"); |
||||||
|
|
||||||
|
println!( |
||||||
|
"wasm-pack: should have copied LICENSE from '{}' to '{}'", |
||||||
|
crate_license_path.display(), |
||||||
|
pkg_license_path.display() |
||||||
|
); |
||||||
|
assert!(fs::metadata(&crate_license_path).is_ok()); |
||||||
|
assert!(fs::metadata(&pkg_license_path).is_ok()); |
||||||
|
|
||||||
|
assert!(fs::metadata(&crate_license_path_2).is_ok()); |
||||||
|
assert!(fs::metadata(&pkg_license_path_2).is_ok()); |
||||||
|
|
||||||
|
let crate_license = utils::file::read_file(&crate_license_path).unwrap(); |
||||||
|
let pkg_license = utils::file::read_file(&pkg_license_path).unwrap(); |
||||||
|
assert_eq!(crate_license, pkg_license); |
||||||
|
|
||||||
|
let crate_license_2 = utils::file::read_file(&crate_license_path_2).unwrap(); |
||||||
|
let pkg_license_2 = utils::file::read_file(&pkg_license_path_2).unwrap(); |
||||||
|
assert_eq!(crate_license_2, pkg_license_2); |
||||||
|
} |
Loading…
Reference in new issue