cli: fix windows yarn error (#1965)

* fix windows yarn error

* add install_node_modules function
This commit is contained in:
metta0714 2022-12-06 12:20:19 +00:00 committed by GitHub
parent 57434279fd
commit 04b988299a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 20 additions and 13 deletions

View File

@ -589,21 +589,10 @@ fn init(
mocha.write_all(template::ts_mocha(&project_name).as_bytes())?;
}
// Install node modules.
let yarn_result = std::process::Command::new("yarn")
.stdout(Stdio::inherit())
.stderr(Stdio::inherit())
.output()
.map_err(|e| anyhow::format_err!("yarn install failed: {}", e.to_string()))?;
let yarn_result = install_node_modules("yarn")?;
if !yarn_result.status.success() {
println!("Failed yarn install will attempt to npm install");
std::process::Command::new("npm")
.arg("install")
.stdout(Stdio::inherit())
.stderr(Stdio::inherit())
.output()
.map_err(|e| anyhow::format_err!("npm install failed: {}", e.to_string()))?;
println!("Failed to install node dependencies")
install_node_modules("npm")?;
}
if !no_git {
@ -623,6 +612,24 @@ fn init(
Ok(())
}
fn install_node_modules(cmd: &str) -> Result<std::process::Output> {
if cfg!(target_os = "windows") {
std::process::Command::new("cmd")
.arg(format!("/C {} install", cmd))
.stdout(Stdio::inherit())
.stderr(Stdio::inherit())
.output()
.map_err(|e| anyhow::format_err!("{} install failed: {}", cmd, e.to_string()))
} else {
std::process::Command::new(cmd)
.arg("install")
.stdout(Stdio::inherit())
.stderr(Stdio::inherit())
.output()
.map_err(|e| anyhow::format_err!("{} install failed: {}", cmd, e.to_string()))
}
}
// Creates a new program crate in the `programs/<name>` directory.
fn new(cfg_override: &ConfigOverride, name: String) -> Result<()> {
with_workspace(cfg_override, |cfg| {