Refactor: make `check_crate_config` a method of `CargoManifest`

master
Nick Fitzgerald 7 years ago
parent 25490301e0
commit 6d3e9dfebb
  1. 2
      src/command/build.rs
  2. 2
      src/command/test.rs
  3. 48
      src/manifest/mod.rs
  4. 12
      tests/all/manifest.rs

@ -216,7 +216,7 @@ impl Build {
fn step_check_crate_config(&mut self, step: &Step, log: &Logger) -> Result<(), failure::Error> {
info!(&log, "Checking crate configuration...");
manifest::check_crate_config(&self.crate_data, step)?;
self.crate_data.check_crate_config(step)?;
info!(&log, "Crate is correctly configured.");
Ok(())
}

@ -244,7 +244,7 @@ impl Test {
fn step_check_crate_config(&mut self, step: &Step, log: &Logger) -> Result<(), failure::Error> {
info!(log, "Checking crate configuration...");
manifest::check_crate_config(&self.crate_data, step)?;
self.crate_data.check_crate_config(step)?;
info!(log, "Crate is correctly configured.");
Ok(())
}

@ -129,6 +129,30 @@ impl CargoManifest {
&self.package.name
}
/// Check that the crate the given path is properly configured.
pub fn check_crate_config(&self, step: &Step) -> Result<(), failure::Error> {
let msg = format!("{}Checking crate configuration...", emoji::WRENCH);
PBAR.step(&step, &msg);
self.check_crate_type()?;
Ok(())
}
fn check_crate_type(&self) -> Result<(), failure::Error> {
if self.lib.as_ref().map_or(false, |lib| {
lib.crate_type
.as_ref()
.map_or(false, |types| types.iter().any(|s| s == "cdylib"))
}) {
return Ok(());
}
Err(Error::crate_config(
"crate-type must be cdylib to compile to wasm32-unknown-unknown. Add the following to your \
Cargo.toml file:\n\n\
[lib]\n\
crate-type = [\"cdylib\", \"rlib\"]"
).into())
}
fn into_commonjs(mut self, scope: &Option<String>, disable_dts: bool) -> NpmPackage {
let filename = self.package.name.replace("-", "_");
let wasm_file = format!("{}_bg.wasm", filename);
@ -241,27 +265,3 @@ impl CargoManifest {
})
}
}
/// Check that the crate the given path is properly configured.
pub fn check_crate_config(crate_data: &CargoManifest, step: &Step) -> Result<(), failure::Error> {
let msg = format!("{}Checking crate configuration...", emoji::WRENCH);
PBAR.step(&step, &msg);
check_crate_type(crate_data)?;
Ok(())
}
fn check_crate_type(crate_data: &CargoManifest) -> Result<(), failure::Error> {
if crate_data.lib.as_ref().map_or(false, |lib| {
lib.crate_type
.as_ref()
.map_or(false, |types| types.iter().any(|s| s == "cdylib"))
}) {
return Ok(());
}
Err(Error::crate_config(
"crate-type must be cdylib to compile to wasm32-unknown-unknown. Add the following to your \
Cargo.toml file:\n\n\
[lib]\n\
crate-type = [\"cdylib\", \"rlib\"]"
).into())
}

@ -27,7 +27,7 @@ fn it_checks_has_cdylib_default_path() {
fixture.cargo_check();
let crate_data = manifest::CargoManifest::read(&fixture.path).unwrap();
let step = wasm_pack::progressbar::Step::new(1);
assert!(manifest::check_crate_config(&crate_data, &step).is_err());
assert!(crate_data.check_crate_config(&step).is_err());
}
#[test]
@ -37,7 +37,7 @@ fn it_checks_has_cdylib_provided_path() {
fixture.cargo_check();
let crate_data = manifest::CargoManifest::read(&fixture.path).unwrap();
let step = wasm_pack::progressbar::Step::new(1);
assert!(manifest::check_crate_config(&crate_data, &step).is_ok());
assert!(crate_data.check_crate_config(&step).is_ok());
}
#[test]
@ -45,7 +45,7 @@ fn it_checks_has_cdylib_wrong_crate_type() {
let fixture = fixture::bad_cargo_toml();
let crate_data = manifest::CargoManifest::read(&fixture.path).unwrap();
let step = wasm_pack::progressbar::Step::new(1);
assert!(manifest::check_crate_config(&crate_data, &step).is_err());
assert!(crate_data.check_crate_config(&step).is_err());
}
#[test]
@ -55,7 +55,7 @@ fn it_recognizes_a_map_during_depcheck() {
fixture.cargo_check();
let crate_data = manifest::CargoManifest::read(&fixture.path).unwrap();
let step = wasm_pack::progressbar::Step::new(1);
assert!(manifest::check_crate_config(&crate_data, &step).is_ok());
assert!(crate_data.check_crate_config(&step).is_ok());
}
#[test]
@ -287,7 +287,7 @@ fn it_errors_when_wasm_bindgen_is_not_declared() {
let fixture = fixture::bad_cargo_toml();
let crate_data = manifest::CargoManifest::read(&fixture.path).unwrap();
let step = wasm_pack::progressbar::Step::new(1);
assert!(manifest::check_crate_config(&crate_data, &step).is_err());
assert!(crate_data.check_crate_config(&step).is_err());
}
#[test]
@ -297,5 +297,5 @@ fn it_does_not_error_when_wasm_bindgen_is_declared() {
fixture.cargo_check();
let crate_data = manifest::CargoManifest::read(&fixture.path).unwrap();
let step = wasm_pack::progressbar::Step::new(1);
assert!(manifest::check_crate_config(&crate_data, &step).is_ok());
assert!(crate_data.check_crate_config(&step).is_ok());
}

Loading…
Cancel
Save