diff --git a/src/build.rs b/src/build.rs index 60c7412..03a2763 100644 --- a/src/build.rs +++ b/src/build.rs @@ -7,17 +7,23 @@ use structopt::StructOpt; use crate::config::{BuildConfiguration, Configuration}; -pub fn check(root: &Path) -> Result<(), failure::Error> { +pub fn check(root: &Path, config: &Configuration) -> Result<(), failure::Error> { debug!("running check"); debug!("changing directory to {}", root.display()); env::set_current_dir(&root)?; - debug!("running cargo-web check --target=wasm32-unknown-unknown"); + let mut args = vec!["--target=wasm32-unknown-unknown".to_owned()]; + + if let Some(default_package) = &config.package { + args.push(format!("--package={}", default_package)); + } + + debug!("running cargo-web check {}", args.join(" ")); let res = cargo_web::run(CargoWebOpts::Check( - CheckOpts::from_iter_safe(&["--target=wasm32-unknown-unknown"]) + CheckOpts::from_iter_safe(&args) .expect("expected hardcoded cargo-web args to be valid"), )); if let Err(e) = res { @@ -35,10 +41,16 @@ pub fn build(root: &Path, config: &Configuration) -> Result<(), failure::Error> env::set_current_dir(&root)?; - debug!("running cargo-web build --target=wasm32-unknown-unknown --release"); + let mut args = vec!["--target=wasm32-unknown-unknown".to_owned(), "--release".to_owned()]; + + if let Some(default_package) = &config.package { + args.push(format!("--package={}", default_package)); + } + + debug!("running cargo-web build {}", args.join(" ")); let res = cargo_web::run(CargoWebOpts::Build( - BuildOpts::from_iter_safe(&["--target=wasm32-unknown-unknown", "--release"]) + BuildOpts::from_iter_safe(&args) .expect("expected hardcoded cargo-web args to be valid"), )); if let Err(e) = res { diff --git a/src/config.rs b/src/config.rs index 200d921..5ccffd8 100644 --- a/src/config.rs +++ b/src/config.rs @@ -99,6 +99,8 @@ pub enum DeployMode { struct FileConfiguration { default_deploy_mode: Option, #[serde(default)] + package: Option, + #[serde(default)] build: BuildConfiguration, upload: Option, copy: Option, @@ -107,6 +109,7 @@ struct FileConfiguration { #[derive(Debug, Clone)] pub struct Configuration { pub default_deploy_mode: Option, + pub package: Option, pub build: BuildConfiguration, pub copy: Option, pub upload: Option, @@ -154,6 +157,7 @@ impl Configuration { fn new(config: FileConfiguration) -> Result { Ok(Configuration { default_deploy_mode: config.default_deploy_mode, + package: config.package, build: config.build, upload: match config.upload { Some(upload_config) => Some(UploadConfiguration::new(upload_config)?), diff --git a/src/run.rs b/src/run.rs index a754976..48abfb9 100644 --- a/src/run.rs +++ b/src/run.rs @@ -26,7 +26,7 @@ pub fn run() -> Result<(), failure::Error> { match cli_config.command { setup::Command::Build => run_build(&root, &config)?, - setup::Command::Check => run_check(&root)?, + setup::Command::Check => run_check(&root, &config)?, setup::Command::Upload => { run_build(&root, &config)?; run_upload(&root, &config)?; @@ -57,9 +57,9 @@ fn run_build(root: &Path, config: &Configuration) -> Result<(), failure::Error> Ok(()) } -fn run_check(root: &Path) -> Result<(), failure::Error> { +fn run_check(root: &Path, config: &Configuration) -> Result<(), failure::Error> { info!("checking..."); - build::check(root)?; + build::check(root, config)?; info!("checked."); Ok(())