From 2bb63c1dfa1d8afc0c758ca10cf7cb30070857bd Mon Sep 17 00:00:00 2001 From: Isaac Tay Date: Thu, 17 Nov 2022 13:12:16 +0800 Subject: [PATCH 1/2] fix: fixed symlink code for windows --- packages/perseus-cli/src/export.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/perseus-cli/src/export.rs b/packages/perseus-cli/src/export.rs index 4d8f17291c..0036ee1bf4 100644 --- a/packages/perseus-cli/src/export.rs +++ b/packages/perseus-cli/src/export.rs @@ -85,7 +85,7 @@ macro_rules! copy_directory { } } #[cfg(windows)] - if std::os::unix::fs::symlink_dir($target.join($from), $target.join($to_symlink)).is_err() { + if std::os::windows::fs::symlink_dir($target.join($from), $target.join($to_symlink)).is_err() { // That failed, try a usual copy if let Err(err) = fs_extra::dir::copy( $target.join($from), From 5e28f7a3f1cd90409586a21f5d350e2bd4f98c83 Mon Sep 17 00:00:00 2001 From: Isaac Tay Date: Thu, 17 Nov 2022 13:38:43 +0800 Subject: [PATCH 2/2] fix: fixed #227 with change to tool path Changes tool paths to use "& '\{tool_path}'\" so that they work on windows powershell when there are whitespaces in the directory path --- packages/perseus-cli/src/install.rs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/perseus-cli/src/install.rs b/packages/perseus-cli/src/install.rs index f09350ffc1..1c5f026ea1 100644 --- a/packages/perseus-cli/src/install.rs +++ b/packages/perseus-cli/src/install.rs @@ -141,11 +141,15 @@ impl Tools { if let (ToolStatus::Available(wb_path), ToolStatus::Available(wo_path)) = (&wb_status, &wo_status) { + #[cfg(unix)] + let (wb_path, wo_path) = (wb_path.to_string(), wo_path.to_string()); + #[cfg(windows)] + let (wb_path, wo_path) = (format!("& \'{}\'", wb_path), format!("& \'{}\'", wo_path)); Ok(Tools { cargo_engine: global_opts.cargo_engine_path.clone(), cargo_browser: global_opts.cargo_browser_path.clone(), - wasm_bindgen: wb_path.to_string(), - wasm_opt: wo_path.to_string(), + wasm_bindgen: wb_path, + wasm_opt: wo_path, }) } else { // We need to install some things, which may take some time @@ -167,12 +171,16 @@ impl Tools { // If we're here, we have the paths succeed_spinner(&spinner, &spinner_msg); let paths = res.unwrap(); + #[cfg(unix)] + let (wb_path, wo_path) = paths; + #[cfg(windows)] + let (wb_path, wo_path) = (format!("& \'{}\'", paths.0), format!("& \'{}\'", paths.1)); Ok(Tools { cargo_engine: global_opts.cargo_engine_path.clone(), cargo_browser: global_opts.cargo_browser_path.clone(), - wasm_bindgen: paths.0, - wasm_opt: paths.1, + wasm_bindgen: wb_path, + wasm_opt: wo_path, }) } }