Skip the NPM root check in macOS (fix #303)

macOS users install NPM using brew to /usr/local. This directory is
writable by the user
This commit is contained in:
Roey Darwish Dror
2020-01-28 16:27:43 +02:00
parent b5e5cb0b32
commit 944011793f
2 changed files with 12 additions and 5 deletions

View File

@@ -121,7 +121,8 @@ Just run `topgrade`. It will run the following steps:
* [Voom](https://github.com/airblade/voom)
* Node
* Run `yarn global update` if yarn is installed.
* Run `npm update -g` if NPM is installed and `npm root -g` is a path inside your home directory.
* Run `npm update -g`. In Unix systems other then macOS the step will be
performed only if`npm root -g` is a path inside your home directory.
* Run `composer global update` if Composer's home directory is inside the home directory of the
user. Run `valet install` after.
* Upgrade Atom packages

View File

@@ -1,3 +1,4 @@
#![allow(unused_imports)]
use crate::error::SkipStep;
use crate::executor::{CommandExt, RunType};
use crate::terminal::print_separator;
@@ -17,6 +18,7 @@ impl NPM {
Self { command }
}
#[cfg(not(target_os = "macos"))]
fn root(&self) -> Result<PathBuf> {
Command::new(&self.command)
.args(&["root", "-g"])
@@ -31,11 +33,15 @@ impl NPM {
}
}
pub fn run_npm_upgrade(base_dirs: &BaseDirs, run_type: RunType) -> Result<()> {
pub fn run_npm_upgrade(_base_dirs: &BaseDirs, run_type: RunType) -> Result<()> {
let npm = require("npm").map(NPM::new)?;
let npm_root = npm.root()?;
if !npm_root.is_descendant_of(base_dirs.home_dir()) {
return Err(SkipStep.into());
#[cfg(not(target_os = "macos"))]
{
let npm_root = npm.root()?;
if !npm_root.is_descendant_of(_base_dirs.home_dir()) {
return Err(SkipStep.into());
}
}
print_separator("Node Package Manager");