Invoke NPM only if the global installation dir is in the home directory (fix #21)

This commit is contained in:
Roey Darwish Dror
2018-06-09 20:39:13 +03:00
parent 59de02b8cf
commit 511d5f0559
3 changed files with 54 additions and 14 deletions

32
src/npm.rs Normal file
View File

@@ -0,0 +1,32 @@
use super::Check;
use failure;
use std::path::PathBuf;
use std::process::Command;
pub struct NPM {
command: PathBuf,
}
impl NPM {
pub fn new(command: PathBuf) -> Self {
Self { command }
}
pub fn root(&self) -> Result<PathBuf, failure::Error> {
let output = Command::new(&self.command).args(&["root", "-g"]).output()?;
output.status.check()?;
Ok(PathBuf::from(&String::from_utf8(output.stdout)?))
}
pub fn upgrade(&self) -> Result<(), failure::Error> {
Command::new(&self.command)
.args(&["update", "-g"])
.spawn()?
.wait()?
.check()?;
Ok(())
}
}