|
|
|
@ -26,6 +26,7 @@ pub fn create_pkg_dir(path: &str, step: &Step) -> result::Result<(), Error> { |
|
|
|
|
pub enum InitMode { |
|
|
|
|
Normal, |
|
|
|
|
Nobuild, |
|
|
|
|
Noinstall, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
pub struct Init { |
|
|
|
@ -34,7 +35,7 @@ pub struct Init { |
|
|
|
|
disable_dts: bool, |
|
|
|
|
target: String, |
|
|
|
|
debug: bool, |
|
|
|
|
crate_name: Option<String>, |
|
|
|
|
crate_name: String, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
type InitStep = fn(&mut Init, &Step, &Logger) -> result::Result<(), Error>; |
|
|
|
@ -46,15 +47,17 @@ impl Init { |
|
|
|
|
disable_dts: bool, |
|
|
|
|
target: String, |
|
|
|
|
debug: bool, |
|
|
|
|
) -> Init { |
|
|
|
|
Init { |
|
|
|
|
crate_path: set_crate_path(path), |
|
|
|
|
) -> Result<Init, Error> { |
|
|
|
|
let crate_path = set_crate_path(path); |
|
|
|
|
let crate_name = manifest::get_crate_name(&crate_path)?; |
|
|
|
|
Ok(Init { |
|
|
|
|
crate_path, |
|
|
|
|
scope, |
|
|
|
|
disable_dts, |
|
|
|
|
target, |
|
|
|
|
debug, |
|
|
|
|
crate_name: None, |
|
|
|
|
} |
|
|
|
|
crate_name, |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fn get_process_steps(mode: InitMode) -> Vec<(&'static str, InitStep)> { |
|
|
|
@ -78,9 +81,17 @@ impl Init { |
|
|
|
|
step_create_json, |
|
|
|
|
step_copy_readme, |
|
|
|
|
step_install_wasm_bindgen, |
|
|
|
|
step_running_wasm_bindgen, |
|
|
|
|
step_run_wasm_bindgen, |
|
|
|
|
], |
|
|
|
|
InitMode::Nobuild => steps![step_create_dir, step_create_json, step_copy_readme,], |
|
|
|
|
InitMode::Noinstall => steps![ |
|
|
|
|
step_check_crate_config, |
|
|
|
|
step_build_wasm, |
|
|
|
|
step_create_dir, |
|
|
|
|
step_create_json, |
|
|
|
|
step_copy_readme, |
|
|
|
|
step_run_wasm_bindgen |
|
|
|
|
], |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -193,33 +204,29 @@ impl Init { |
|
|
|
|
info!(&log, "Installing wasm-bindgen-cli was successful."); |
|
|
|
|
|
|
|
|
|
info!(&log, "Getting the crate name from the manifest..."); |
|
|
|
|
self.crate_name = Some(manifest::get_crate_name(&self.crate_path)?); |
|
|
|
|
self.crate_name = manifest::get_crate_name(&self.crate_path)?; |
|
|
|
|
#[cfg(not(target_os = "windows"))] |
|
|
|
|
info!( |
|
|
|
|
&log, |
|
|
|
|
"Got crate name {} from the manifest at {}/Cargo.toml.", |
|
|
|
|
&self.crate_name.as_ref().unwrap(), |
|
|
|
|
&self.crate_name, |
|
|
|
|
&self.crate_path |
|
|
|
|
); |
|
|
|
|
#[cfg(target_os = "windows")] |
|
|
|
|
info!( |
|
|
|
|
&log, |
|
|
|
|
"Got crate name {} from the manifest at {}\\Cargo.toml.", |
|
|
|
|
&self.crate_name.as_ref().unwrap(), |
|
|
|
|
&self.crate_name, |
|
|
|
|
&self.crate_path |
|
|
|
|
); |
|
|
|
|
Ok(()) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fn step_running_wasm_bindgen( |
|
|
|
|
&mut self, |
|
|
|
|
step: &Step, |
|
|
|
|
log: &Logger, |
|
|
|
|
) -> result::Result<(), Error> { |
|
|
|
|
fn step_run_wasm_bindgen(&mut self, step: &Step, log: &Logger) -> result::Result<(), Error> { |
|
|
|
|
info!(&log, "Building the wasm bindings..."); |
|
|
|
|
bindgen::wasm_bindgen_build( |
|
|
|
|
&self.crate_path, |
|
|
|
|
&self.crate_name.as_ref().unwrap(), |
|
|
|
|
&self.crate_name, |
|
|
|
|
self.disable_dts, |
|
|
|
|
&self.target, |
|
|
|
|
self.debug, |
|
|
|
@ -259,7 +266,7 @@ mod test { |
|
|
|
|
"step_create_json", |
|
|
|
|
"step_copy_readme", |
|
|
|
|
"step_install_wasm_bindgen", |
|
|
|
|
"step_running_wasm_bindgen" |
|
|
|
|
"step_run_wasm_bindgen" |
|
|
|
|
] |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
@ -275,4 +282,23 @@ mod test { |
|
|
|
|
["step_create_dir", "step_create_json", "step_copy_readme"] |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#[test] |
|
|
|
|
fn init_skip_install() { |
|
|
|
|
let steps: Vec<&str> = Init::get_process_steps(InitMode::Noinstall) |
|
|
|
|
.into_iter() |
|
|
|
|
.map(|(n, _)| n) |
|
|
|
|
.collect(); |
|
|
|
|
assert_eq!( |
|
|
|
|
steps, |
|
|
|
|
[ |
|
|
|
|
"step_check_crate_config", |
|
|
|
|
"step_build_wasm", |
|
|
|
|
"step_create_dir", |
|
|
|
|
"step_create_json", |
|
|
|
|
"step_copy_readme", |
|
|
|
|
"step_run_wasm_bindgen" |
|
|
|
|
] |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|