@@ -13,6 +13,42 @@
# shellcheck disable=SC3028
NVM_SCRIPT_SOURCE = " $_ "
NVM_LOG_LEVEL = ${ NVM_LOG_LEVEL :- INFO }
NVM_VERSION = "0.39.0" # Update this with the actual nvm version
nvm_log( ) {
local level = $1
shift
if [ [ $NVM_LOG_LEVEL = = DEBUG || ( $NVM_LOG_LEVEL = = INFO && $level != DEBUG) ] ] ; then
printf "[%s] [%s] %s\n" " $( date '+%Y-%m-%d %H:%M:%S' ) " " $level " " $* " >& 2
fi
}
nvm_debug( ) { nvm_log DEBUG " $@ " ; }
nvm_info( ) { nvm_log INFO " $@ " ; }
nvm_warn( ) { nvm_log WARN " $@ " ; }
nvm_error( ) { nvm_log ERROR " $@ " ; }
nvm_run_command( ) {
nvm_debug " Executing: $* "
" $@ "
}
nvm_time_operation( ) {
local start_time = $( date +%s)
" $@ "
local end_time = $( date +%s)
local duration = $(( end_time - start_time))
nvm_info " Operation took ${ duration } seconds "
}
nvm_log_env( ) {
nvm_debug "Environment:"
nvm_debug " NVM_DIR: $NVM_DIR "
nvm_debug " PATH: $PATH "
nvm_debug " Shell: $SHELL "
}
nvm_is_zsh( ) {
[ -n " ${ ZSH_VERSION - } " ]
}
@@ -196,6 +232,9 @@ nvm_install_latest_npm() {
nvm_echo 'Attempting to upgrade to the latest working version of npm...'
local NODE_VERSION
NODE_VERSION = " $( nvm_strip_iojs_prefix " $( nvm_ls_current) " ) "
local NPM_VERSION
NPM_VERSION = " $( npm --version 2>/dev/null) "
if [ " ${ NODE_VERSION } " = 'system' ] ; then
NODE_VERSION = " $( node --version) "
elif [ " ${ NODE_VERSION } " = 'none' ] ; then
@@ -206,8 +245,6 @@ nvm_install_latest_npm() {
nvm_err 'Unable to obtain node version.'
return 1
fi
local NPM_VERSION
NPM_VERSION = " $( npm --version 2>/dev/null) "
if [ -z " ${ NPM_VERSION } " ] ; then
nvm_err 'Unable to obtain npm version.'
return 2
@@ -700,7 +737,9 @@ nvm_ensure_version_installed() {
nvm_err " N/A: version \" ${ PREFIXED_VERSION :- $PROVIDED_VERSION } \" is not yet installed. "
fi
nvm_err ""
if [ " ${ IS_VERSION_FROM_NVMRC } " ! = '1 ' ] ; then
if [ " ${ PROVIDED_VERSION } " = 'lts ' ] ; then
nvm_err '`lts` is not an alias - you may need to run `nvm install --lts` to install and `nvm use --lts` to use it.'
elif [ " ${ IS_VERSION_FROM_NVMRC } " != '1' ] ; then
nvm_err " You need to run \`nvm install ${ PROVIDED_VERSION } \` to install and use it. "
else
nvm_err 'You need to run `nvm install` to install and use the node version specified in `.nvmrc`.'
@@ -794,7 +833,7 @@ nvm_remote_versions() {
esac
if nvm_validate_implicit_alias " ${ PATTERN - } " 2>/dev/null; then
nvm_err 'Implicit aliases are not supported in nvm_remote_versions.'
nvm_error 'Implicit aliases are not supported in nvm_remote_versions.'
return 1
fi
@@ -886,11 +925,15 @@ nvm_normalize_lts() {
if [ " ${ RESULT } " != '*' ] ; then
nvm_echo " lts/ ${ RESULT } "
else
nvm_err 'That many LTS releases do not exist yet.'
nvm_error 'That many LTS releases do not exist yet.'
return 2
fi
; ;
*)
if [ " ${ LTS } " != " $( echo " ${ LTS } " | command tr '[:upper:]' '[:lower:]' ) " ] ; then
nvm_error 'LTS names must be lowercase'
return 3
fi
nvm_echo " ${ LTS } "
; ;
esac
@@ -936,7 +979,7 @@ nvm_num_version_groups() {
nvm_strip_path( ) {
if [ -z " ${ NVM_DIR - } " ] ; then
nvm_err '${NVM_DIR} not set!'
nvm_error '${NVM_DIR} not set!'
return 1
fi
command printf %s " ${ 1 - } " | command awk -v NVM_DIR = " ${ NVM_DIR } " -v RS = : '
@@ -949,10 +992,10 @@ nvm_strip_path() {
}
nvm_change_path( ) {
# if there’ s no initial path, just return the supplementary path
# if there' s no initial path, just return the supplementary path
if [ -z " ${ 1 - } " ] ; then
nvm_echo " ${ 3 - } ${ 2 - } "
# if the initial path doesn’ t contain an nvm path, prepend the supplementary
# if the initial path doesn' t contain an nvm path, prepend the supplementary
# path
elif ! nvm_echo " ${ 1 - } " | nvm_grep -q " ${ NVM_DIR } /[^/]* ${ 2 - } " \
&& ! nvm_echo " ${ 1 - } " | nvm_grep -q " ${ NVM_DIR } /versions/[^/]*/[^/]* ${ 2 - } " ; then
@@ -1019,7 +1062,7 @@ nvm_get_colors() {
COLOR = $( nvm_echo " $SYS_COLOR " | command tr '0;' '1;' )
; ;
*)
nvm_err " Invalid color index, ${ 1 - } "
nvm_error " Invalid color index, ${ 1 - } "
return 1
; ;
esac
@@ -1059,7 +1102,7 @@ nvm_print_color_code() {
'e' ) nvm_echo '0;37m' ; ;
'W' ) nvm_echo '1;37m' ; ;
*)
nvm_err " Invalid color code: ${ 1 - } " ;
nvm_error " Invalid color code: ${ 1 - } " ;
return 1
; ;
esac
@@ -1141,13 +1184,13 @@ nvm_print_alias_path() {
local NVM_ALIAS_DIR
NVM_ALIAS_DIR = " ${ 1 - } "
if [ -z " ${ NVM_ALIAS_DIR } " ] ; then
nvm_err 'An alias dir is required.'
nvm_error 'An alias dir is required.'
return 1
fi
local ALIAS_PATH
ALIAS_PATH = " ${ 2 - } "
if [ -z " ${ ALIAS_PATH } " ] ; then
nvm_err 'An alias path is required.'
nvm_error 'An alias path is required.'
return 2
fi
local ALIAS
@@ -1163,7 +1206,7 @@ nvm_print_default_alias() {
local ALIAS
ALIAS = " ${ 1 - } "
if [ -z " ${ ALIAS } " ] ; then
nvm_err 'A default alias is required.'
nvm_error 'A default alias is required.'
return 1
fi
local DEST
@@ -1177,13 +1220,13 @@ nvm_make_alias() {
local ALIAS
ALIAS = " ${ 1 - } "
if [ -z " ${ ALIAS } " ] ; then
nvm_err "an alias name is required"
nvm_error "an alias name is required"
return 1
fi
local VERSION
VERSION = " ${ 2 - } "
if [ -z " ${ VERSION } " ] ; then
nvm_err "an alias target version is required"
nvm_error "an alias target version is required"
return 2
fi
nvm_echo " ${ VERSION } " | tee " $( nvm_alias_path) / ${ ALIAS } " >/dev/null
@@ -1246,10 +1289,12 @@ nvm_alias() {
local ALIAS
ALIAS = " ${ 1 - } "
if [ -z " ${ ALIAS } " ] ; then
nvm_err 'An alias is required.'
nvm_error 'An alias is required.'
return 1
fi
ALIAS = " $( nvm_normalize_lts " ${ ALIAS } " ) "
if ! ALIAS = " $( nvm_normalize_lts " ${ ALIAS } " ) " ; then
return $?
fi
if [ -z " ${ ALIAS } " ] ; then
return 2
@@ -1258,7 +1303,7 @@ nvm_alias() {
local NVM_ALIAS_PATH
NVM_ALIAS_PATH = " $( nvm_alias_path) / ${ ALIAS } "
if [ ! -f " ${ NVM_ALIAS_PATH } " ] ; then
nvm_err 'Alias does not exist.'
nvm_error 'Alias does not exist.'
return 2
fi
@@ -1563,7 +1608,7 @@ nvm_ls_remote_index_tab() {
local LTS
LTS = " ${ NVM_LTS - } "
if [ " $# " -lt 3 ] ; then
nvm_err 'not enough arguments'
nvm_error 'not enough arguments'
return 5
fi
@@ -1585,11 +1630,11 @@ nvm_ls_remote_index_tab() {
iojs-std) PREFIX = " $( nvm_iojs_prefix) - " ; ;
node-std) PREFIX = '' ; ;
iojs-*)
nvm_err 'unknown type of io.js release'
nvm_error 'unknown type of io.js release'
return 4
; ;
*)
nvm_err 'unknown type of node.js release'
nvm_error 'unknown type of node.js release'
return 4
; ;
esac
@@ -1652,7 +1697,9 @@ $VERSION_LIST
EOF
if [ -n " ${ LTS - } " ] ; then
LTS = " $( nvm_normalize_lts " lts/ ${ LTS } " ) "
if ! LTS = " $( nvm_normalize_lts " lts/ ${ LTS } " ) " ; then
return $?
fi
LTS = " ${ LTS #lts/ } "
fi
@@ -1701,8 +1748,8 @@ nvm_get_checksum_binary() {
elif nvm_has_non_aliased 'sha1' ; then
nvm_echo 'sha1'
else
nvm_err 'Unaliased sha256sum, shasum, sha256, gsha256sum, openssl, or bssl not found.'
nvm_err 'Unaliased sha1sum or sha1 not found.'
nvm_error 'Unaliased sha256sum, shasum, sha256, gsha256sum, openssl, or bssl not found.'
nvm_error 'Unaliased sha1sum or sha1 not found.'
return 1
fi
}
@@ -1728,36 +1775,36 @@ nvm_compute_checksum() {
local FILE
FILE = " ${ 1 - } "
if [ -z " ${ FILE } " ] ; then
nvm_err 'Provided file to checksum is empty.'
nvm_error 'Provided file to checksum is empty.'
return 2
elif ! [ -f " ${ FILE } " ] ; then
nvm_err 'Provided file to checksum does not exist.'
nvm_error 'Provided file to checksum does not exist.'
return 1
fi
if nvm_has_non_aliased "sha256sum" ; then
nvm_err 'Computing checksum with sha256sum'
nvm_debug 'Computing checksum with sha256sum'
command sha256sum " ${ FILE } " | command awk '{print $1}'
elif nvm_has_non_aliased "shasum" ; then
nvm_err 'Computing checksum with shasum -a 256'
nvm_debug 'Computing checksum with shasum -a 256'
command shasum -a 256 " ${ FILE } " | command awk '{print $1}'
elif nvm_has_non_aliased "sha256" ; then
nvm_err 'Computing checksum with sha256 -q'
nvm_debug 'Computing checksum with sha256 -q'
command sha256 -q " ${ FILE } " | command awk '{print $1}'
elif nvm_has_non_aliased "gsha256sum" ; then
nvm_err 'Computing checksum with gsha256sum'
nvm_debug 'Computing checksum with gsha256sum'
command gsha256sum " ${ FILE } " | command awk '{print $1}'
elif nvm_has_non_aliased "openssl" ; then
nvm_err 'Computing checksum with openssl dgst -sha256'
nvm_debug 'Computing checksum with openssl dgst -sha256'
command openssl dgst -sha256 " ${ FILE } " | command awk '{print $NF}'
elif nvm_has_non_aliased "bssl" ; then
nvm_err 'Computing checksum with bssl sha256sum'
nvm_debug 'Computing checksum with bssl sha256sum'
command bssl sha256sum " ${ FILE } " | command awk '{print $1}'
elif nvm_has_non_aliased "sha1sum" ; then
nvm_err 'Computing checksum with sha1sum'
nvm_debug 'Computing checksum with sha1sum'
command sha1sum " ${ FILE } " | command awk '{print $1}'
elif nvm_has_non_aliased "sha1" ; then
nvm_err 'Computing checksum with sha1 -q'
nvm_debug 'Computing checksum with sha1 -q'
command sha1 -q " ${ FILE } "
fi
}
@@ -1766,10 +1813,10 @@ nvm_compare_checksum() {
local FILE
FILE = " ${ 1 - } "
if [ -z " ${ FILE } " ] ; then
nvm_err 'Provided file to checksum is empty.'
nvm_error 'Provided file to checksum is empty.'
return 4
elif ! [ -f " ${ FILE } " ] ; then
nvm_err 'Provided file to checksum does not exist.'
nvm_error 'Provided file to checksum does not exist.'
return 3
fi
@@ -1779,19 +1826,19 @@ nvm_compare_checksum() {
local CHECKSUM
CHECKSUM = " ${ 2 - } "
if [ -z " ${ CHECKSUM } " ] ; then
nvm_err 'Provided checksum to compare to is empty.'
nvm_error 'Provided checksum to compare to is empty.'
return 2
fi
if [ -z " ${ COMPUTED_SUM } " ] ; then
nvm_err " Computed checksum of ' ${ FILE } ' is empty. " # missing in raspberry pi binary
nvm_err 'WARNING: Continuing *without checksum verification*'
nvm_error " Computed checksum of ' ${ FILE } ' is empty. " # missing in raspberry pi binary
nvm_warn 'WARNING: Continuing *without checksum verification*'
return
elif [ " ${ COMPUTED_SUM } " != " ${ CHECKSUM } " ] && [ " ${ COMPUTED_SUM } " != " \\ ${ CHECKSUM } " ] ; then
nvm_err " Checksums do not match: ' ${ COMPUTED_SUM } ' found, ' ${ CHECKSUM } ' expected. "
nvm_error " Checksums do not match: ' ${ COMPUTED_SUM } ' found, ' ${ CHECKSUM } ' expected. "
return 1
fi
nvm_err 'Checksums matched!'
nvm_debug 'Checksums matched!'
}
# args: flavor, type, version, slug, compression
@@ -1800,7 +1847,7 @@ nvm_get_checksum() {
case " ${ 1 - } " in
node | iojs) FLAVOR = " ${ 1 } " ; ;
*)
nvm_err 'supported flavors: node, iojs'
nvm_error 'supported flavors: node, iojs'
return 2
; ;
esac
@@ -1921,7 +1968,7 @@ nvm_validate_implicit_alias() {
return
; ;
*)
nvm_err " Only implicit aliases 'stable', 'unstable', ' ${ NVM_IOJS_PREFIX } ', and ' ${ NVM_NODE_PREFIX } ' are supported. "
nvm_error " Only implicit aliases 'stable', 'unstable', ' ${ NVM_IOJS_PREFIX } ', and ' ${ NVM_NODE_PREFIX } ' are supported. "
return 1
; ;
esac
@@ -1929,7 +1976,7 @@ nvm_validate_implicit_alias() {
nvm_print_implicit_alias( ) {
if [ " _ $1 " != "_local" ] && [ " _ $1 " != "_remote" ] ; then
nvm_err "nvm_print_implicit_alias must be specified with local or remote as the first argument."
nvm_error "nvm_print_implicit_alias must be specified with local or remote as the first argument."
return 1
fi
@@ -2090,13 +2137,13 @@ nvm_get_minor_version() {
VERSION = " $1 "
if [ -z " ${ VERSION } " ] ; then
nvm_err 'a version is required'
nvm_error 'a version is required'
return 1
fi
case " ${ VERSION } " in
v | .* | *..* | v*[ !.0123456789] * | [ !v] *[ !.0123456789] * | [ !v0123456789] * | v[ !0123456789] *)
nvm_err 'invalid version number'
nvm_error 'invalid version number'
return 2
; ;
esac
@@ -2107,7 +2154,7 @@ nvm_get_minor_version() {
local MINOR
MINOR = " $( nvm_echo " ${ PREFIXED_VERSION } " | nvm_grep -e '^v' | command cut -c2- | command cut -d . -f 1,2) "
if [ -z " ${ MINOR } " ] ; then
nvm_err 'invalid version number! (please report this)'
nvm_error 'invalid version number! (please report this)'
return 3
fi
nvm_echo " ${ MINOR } "
@@ -2117,7 +2164,7 @@ nvm_ensure_default_set() {
local VERSION
VERSION = " $1 "
if [ -z " ${ VERSION } " ] ; then
nvm_err 'nvm_ensure_default_set: a version is required'
nvm_error 'nvm_ensure_default_set: a version is required'
return 1
elif nvm_alias default >/dev/null 2>& 1; then
# default already set
@@ -2127,7 +2174,7 @@ nvm_ensure_default_set() {
OUTPUT = " $( nvm alias default " ${ VERSION } " ) "
local EXIT_CODE
EXIT_CODE = " $? "
nvm_ech o " Creating default alias: ${ OUTPUT } "
nvm_inf o " Creating default alias: ${ OUTPUT } "
return $EXIT_CODE
}
@@ -2142,21 +2189,21 @@ nvm_get_mirror() {
node-std) NVM_MIRROR = " ${ NVM_NODEJS_ORG_MIRROR :- https : //nodejs.org/dist } " ; ;
iojs-std) NVM_MIRROR = " ${ NVM_IOJS_ORG_MIRROR :- https : //iojs.org/dist } " ; ;
*)
nvm_err 'unknown type of node.js or io.js release'
nvm_error 'unknown type of node.js or io.js release'
return 1
; ;
esac
case " ${ NVM_MIRROR } " in
*\` * | *\\ * | *\' * | *\( * | *' ' * )
nvm_err '$NVM_NODEJS_ORG_MIRROR and $NVM_IOJS_ORG_MIRROR may only contain a URL'
nvm_error '$NVM_NODEJS_ORG_MIRROR and $NVM_IOJS_ORG_MIRROR may only contain a URL'
return 2
; ;
esac
if ! nvm_echo " ${ NVM_MIRROR } " | command awk '{ $0 ~ "^https?://[a-zA-Z0-9./_-]+$" }' ; then
nvm_err '$NVM_NODEJS_ORG_MIRROR and $NVM_IOJS_ORG_MIRROR may only contain a URL'
nvm_error '$NVM_NODEJS_ORG_MIRROR and $NVM_IOJS_ORG_MIRROR may only contain a URL'
return 2
fi
@@ -2166,7 +2213,7 @@ nvm_get_mirror() {
# args: os, prefixed version, version, tarball, extract directory
nvm_install_binary_extract( ) {
if [ " $# " -ne 5 ] ; then
nvm_err 'nvm_install_binary_extract needs 5 parameters'
nvm_error 'nvm_install_binary_extract needs 5 parameters'
return 1
fi
@@ -2184,7 +2231,7 @@ nvm_install_binary_extract() {
local VERSION_PATH
[ -n " ${ TMPDIR - } " ] && \
command mkdir -p " ${ TMPDIR } " && \
nvm_run_ command mkdir -p " ${ TMPDIR } " && \
VERSION_PATH = " $( nvm_version_path " ${ PREFIXED_VERSION } " ) " || return 1
# For Windows system (GitBash with MSYS, Cygwin)
@@ -2218,7 +2265,7 @@ nvm_install_binary() {
case " ${ 1 - } " in
node | iojs) FLAVOR = " ${ 1 } " ; ;
*)
nvm_err 'supported flavors: node, iojs'
nvm_error 'supported flavors: node, iojs'
return 4
; ;
esac
@@ -2229,7 +2276,7 @@ nvm_install_binary() {
local PREFIXED_VERSION
PREFIXED_VERSION = " ${ 3 - } "
if [ -z " ${ PREFIXED_VERSION } " ] ; then
nvm_err 'A version number is required.'
nvm_error 'A version number is required.'
return 3
fi
@@ -2257,18 +2304,17 @@ nvm_install_binary() {
NODE_OR_IOJS = "io.js"
fi
if [ " ${ NVM_NO_PROGRESS - } " = "1" ] ; then
# --silent, --show-error, use short option as @samrocketman mentions the compatibility issue.
PROGRESS_BAR = "-sS"
else
PROGRESS_BAR = "--progress-bar"
fi
nvm_ech o " Downloading and installing ${ NODE_OR_IOJS - } ${ VERSION } ... "
nvm_inf o " Downloading and installing ${ NODE_OR_IOJS - } ${ VERSION } ... "
TARBALL = " $( PROGRESS_BAR = " ${ PROGRESS_BAR } " nvm_download_artifact " ${ FLAVOR } " binary " ${ TYPE - } " " ${ VERSION } " | command tail -1) "
if [ -f " ${ TARBALL } " ] ; then
TMPDIR = " $( dirname " ${ TARBALL } " ) /files "
fi
if nvm_install_binary_extract " ${ NVM_OS } " " ${ PREFIXED_VERSION } " " ${ VERSION } " " ${ TARBALL } " " ${ TMPDIR } " ; then
if nvm_time_operation nvm_install_binary_extract " ${ NVM_OS } " " ${ PREFIXED_VERSION } " " ${ VERSION } " " ${ TARBALL } " " ${ TMPDIR } " ; then
if [ -n " ${ ALIAS - } " ] ; then
nvm alias " ${ ALIAS } " " ${ provided_version } "
fi
@@ -2278,11 +2324,11 @@ nvm_install_binary() {
# Read nosource from arguments
if [ " ${ nosource - } " = '1' ] ; then
nvm_err 'Binary download failed. Download from source aborted.'
nvm_error 'Binary download failed. Download from source aborted.'
return 0
fi
nvm_err 'Binary download failed, trying source.'
nvm_warn 'Binary download failed, trying source.'
if [ -n " ${ TMPDIR - } " ] ; then
command rm -rf " ${ TMPDIR } "
fi
@@ -2295,7 +2341,7 @@ nvm_get_download_slug() {
case " ${ 1 - } " in
node | iojs) FLAVOR = " ${ 1 } " ; ;
*)
nvm_err 'supported flavors: node, iojs'
nvm_error 'supported flavors: node, iojs'
return 1
; ;
esac
@@ -2304,7 +2350,7 @@ nvm_get_download_slug() {
case " ${ 2 - } " in
binary | source ) KIND = " ${ 2 } " ; ;
*)
nvm_err 'supported kinds: binary, source'
nvm_error 'supported kinds: binary, source'
return 2
; ;
esac
@@ -2365,7 +2411,7 @@ nvm_download_artifact() {
case " ${ 1 - } " in
node | iojs) FLAVOR = " ${ 1 } " ; ;
*)
nvm_err 'supported flavors: node, iojs'
nvm_error 'supported flavors: node, iojs'
return 1
; ;
esac
@@ -2374,7 +2420,7 @@ nvm_download_artifact() {
case " ${ 2 - } " in
binary | source ) KIND = " ${ 2 } " ; ;
*)
nvm_err 'supported kinds: binary, source'
nvm_error 'supported kinds: binary, source'
return 1
; ;
esac
@@ -2392,12 +2438,12 @@ nvm_download_artifact() {
VERSION = " ${ 4 } "
if [ -z " ${ VERSION } " ] ; then
nvm_err 'A version number is required.'
nvm_error 'A version number is required.'
return 3
fi
if [ " ${ KIND } " = 'binary' ] && ! nvm_binary_available " ${ VERSION } " ; then
nvm_err " No precompiled binary available for ${ VERSION } . "
nvm_error " No precompiled binary available for ${ VERSION } . "
return
fi
@@ -2417,7 +2463,7 @@ nvm_download_artifact() {
tmpdir = " $( nvm_cache_dir) /src/ ${ SLUG } "
fi
command mkdir -p " ${ tmpdir } /files " || (
nvm_err " creating directory ${ tmpdir } /files failed "
nvm_error " creating directory ${ tmpdir } /files failed "
return 3
)
@@ -2432,27 +2478,27 @@ nvm_download_artifact() {
fi
if [ -r " ${ TARBALL } " ] ; then
nvm_err " Local cache found: $( nvm_sanitize_path " ${ TARBALL } " ) "
nvm_error " Local cache found: $( nvm_sanitize_path " ${ TARBALL } " ) "
if nvm_compare_checksum " ${ TARBALL } " " ${ CHECKSUM } " >/dev/null 2>& 1; then
nvm_err " Checksums match! Using existing downloaded archive $( nvm_sanitize_path " ${ TARBALL } " ) "
nvm_info " Checksums match! Using existing downloaded archive $( nvm_sanitize_path " ${ TARBALL } " ) "
nvm_echo " ${ TARBALL } "
return 0
fi
nvm_compare_checksum " ${ TARBALL } " " ${ CHECKSUM } "
nvm_err "Checksum check failed!"
nvm_err "Removing the broken local cache..."
nvm_error "Checksum check failed!"
nvm_error "Removing the broken local cache..."
command rm -rf " ${ TARBALL } "
fi
nvm_err " Downloading ${ TARBALL_URL } ... "
nvm_info " Downloading ${ TARBALL_URL } ... "
nvm_download -L -C - " ${ PROGRESS_BAR } " " ${ TARBALL_URL } " -o " ${ TARBALL } " || (
command rm -rf " ${ TARBALL } " " ${ tmpdir } "
nvm_err " download from ${ TARBALL_URL } failed "
nvm_error " download from ${ TARBALL_URL } failed "
return 4
)
if nvm_grep '404 Not Found' " ${ TARBALL } " >/dev/null; then
command rm -rf " ${ TARBALL } " " ${ tmpdir } "
nvm_err " HTTP 404 at URL ${ TARBALL_URL } "
nvm_error " HTTP 404 at URL ${ TARBALL_URL } "
return 5
fi
@@ -2467,7 +2513,7 @@ nvm_download_artifact() {
# args: nvm_os, version, tarball, tmpdir
nvm_extract_tarball( ) {
if [ " $# " -ne 4 ] ; then
nvm_err 'nvm_extract_tarball requires exactly 4 arguments'
nvm_error 'nvm_extract_tarball requires exactly 4 arguments'
return 5
fi
@@ -2513,7 +2559,7 @@ nvm_get_make_jobs() {
return
elif [ -n " ${ 1 - } " ] ; then
unset NVM_MAKE_JOBS
nvm_err " $1 is invalid for number of \`make\` jobs, must be a natural number "
nvm_error " $1 is invalid for number of \`make\` jobs, must be a natural number "
fi
local NVM_OS
NVM_OS = " $( nvm_get_os) "
@@ -2533,8 +2579,8 @@ nvm_get_make_jobs() {
; ;
esac
if ! nvm_is_natural_num " ${ NVM_CPU_CORES } " ; then
nvm_err 'Can not determine how many core(s) are available, running in single-threaded mode.'
nvm_err 'Please report an issue on GitHub to help us make nvm run faster on your computer!'
nvm_error 'Can not determine how many core(s) are available, running in single-threaded mode.'
nvm_error 'Please report an issue on GitHub to help us make nvm run faster on your computer!'
NVM_MAKE_JOBS = 1
else
nvm_echo " Detected that you have ${ NVM_CPU_CORES } CPU core(s) "
@@ -2554,7 +2600,7 @@ nvm_install_source() {
case " ${ 1 - } " in
node | iojs) FLAVOR = " ${ 1 } " ; ;
*)
nvm_err 'supported flavors: node, iojs'
nvm_error 'supported flavors: node, iojs'
return 4
; ;
esac
@@ -2565,7 +2611,7 @@ nvm_install_source() {
local PREFIXED_VERSION
PREFIXED_VERSION = " ${ 3 - } "
if [ -z " ${ PREFIXED_VERSION } " ] ; then
nvm_err 'A version number is required.'
nvm_error 'A version number is required.'
return 3
fi
@@ -2645,7 +2691,7 @@ nvm_install_source() {
command rm -f " ${ VERSION_PATH } " 2>/dev/null && \
$make -j " ${ NVM_MAKE_JOBS } " ${ MAKE_CXX - } install
) ; then
nvm_err " nvm: install ${ VERSION } failed! "
nvm_error " nvm: install ${ VERSION } failed! "
command rm -rf " ${ TMPDIR - } "
return 1
fi
@@ -2664,10 +2710,10 @@ nvm_install_npm_if_needed() {
if ! nvm_has "npm" ; then
nvm_echo 'Installing npm...'
if nvm_version_greater 0.2.0 " ${ VERSION } " ; then
nvm_err 'npm requires node v0.2.3 or higher'
nvm_error 'npm requires node v0.2.3 or higher'
elif nvm_version_greater_than_or_equal_to " ${ VERSION } " 0.2.0; then
if nvm_version_greater 0.2.3 " ${ VERSION } " ; then
nvm_err 'npm requires node v0.2.3 or higher'
nvm_error 'npm requires node v0.2.3 or higher'
else
nvm_download -L https://npmjs.org/install.sh -o - | clean = yes npm_install = 0.2.19 sh
fi
@@ -2726,7 +2772,7 @@ nvm_die_on_prefix() {
case " ${ NVM_DELETE_PREFIX } " in
0 | 1) ; ;
*)
nvm_err 'First argument "delete the prefix" must be zero or one'
nvm_error 'First argument "delete the prefix" must be zero or one'
return 1
; ;
esac
@@ -2735,7 +2781,7 @@ nvm_die_on_prefix() {
local NVM_VERSION_DIR
NVM_VERSION_DIR = " ${ 3 - } "
if [ -z " ${ NVM_COMMAND } " ] || [ -z " ${ NVM_VERSION_DIR } " ] ; then
nvm_err 'Second argument "nvm command", and third argument "nvm version dir", must both be nonempty'
nvm_error 'Second argument "nvm command", and third argument "nvm version dir", must both be nonempty'
return 2
fi
@@ -2744,8 +2790,8 @@ nvm_die_on_prefix() {
# however, `npm exec` in npm v7.2+ sets $PREFIX; if set, inherit it
if [ -n " ${ PREFIX - } " ] && [ " $( nvm_version_path " $( node -v) " ) " != " ${ PREFIX } " ] ; then
nvm deactivate >/dev/null 2>& 1
nvm_err " nvm is not compatible with the \"PREFIX\" environment variable: currently set to \" ${ PREFIX } \" "
nvm_err 'Run `unset PREFIX` to unset it.'
nvm_error " nvm is not compatible with the \"PREFIX\" environment variable: currently set to \" ${ PREFIX } \" "
nvm_error 'Run `unset PREFIX` to unset it.'
return 3
fi
@@ -2768,8 +2814,8 @@ nvm_die_on_prefix() {
fi
if [ -n " ${ NVM_CONFIG_VALUE - } " ] && ! nvm_tree_contains_path " ${ NVM_DIR } " " ${ NVM_CONFIG_VALUE } " ; then
nvm deactivate >/dev/null 2>& 1
nvm_err " nvm is not compatible with the \" ${ NVM_NPM_CONFIG_x_PREFIX_ENV } \" environment variable: currently set to \" ${ NVM_CONFIG_VALUE } \" "
nvm_err " Run \`unset ${ NVM_NPM_CONFIG_x_PREFIX_ENV } \` to unset it. "
nvm_error " nvm is not compatible with the \" ${ NVM_NPM_CONFIG_x_PREFIX_ENV } \" environment variable: currently set to \" ${ NVM_CONFIG_VALUE } \" "
nvm_error " Run \`unset ${ NVM_NPM_CONFIG_x_PREFIX_ENV } \` to unset it. "
return 4
fi
fi
@@ -2793,9 +2839,9 @@ nvm_die_on_prefix() {
npm config --loglevel= warn delete prefix --userconfig= " ${ NVM_NPM_BUILTIN_NPMRC } "
npm config --loglevel= warn delete globalconfig --userconfig= " ${ NVM_NPM_BUILTIN_NPMRC } "
else
nvm_err " Your builtin npmrc file ( $( nvm_sanitize_path " ${ NVM_NPM_BUILTIN_NPMRC } " ) ) "
nvm_err 'has a `globalconfig` and/or a `prefix` setting, which are incompatible with nvm.'
nvm_err " Run \` ${ NVM_COMMAND } \` to unset it. "
nvm_error " Your builtin npmrc file ( $( nvm_sanitize_path " ${ NVM_NPM_BUILTIN_NPMRC } " ) ) "
nvm_error 'has a `globalconfig` and/or a `prefix` setting, which are incompatible with nvm.'
nvm_error " Run \` ${ NVM_COMMAND } \` to unset it. "
return 10
fi
fi
@@ -2807,9 +2853,9 @@ nvm_die_on_prefix() {
npm config --global --loglevel= warn delete prefix
npm config --global --loglevel= warn delete globalconfig
else
nvm_err " Your global npmrc file ( $( nvm_sanitize_path " ${ NVM_NPM_GLOBAL_NPMRC } " ) ) "
nvm_err 'has a `globalconfig` and/or a `prefix` setting, which are incompatible with nvm.'
nvm_err " Run \` ${ NVM_COMMAND } \` to unset it. "
nvm_error " Your global npmrc file ( $( nvm_sanitize_path " ${ NVM_NPM_GLOBAL_NPMRC } " ) ) "
nvm_error 'has a `globalconfig` and/or a `prefix` setting, which are incompatible with nvm.'
nvm_error " Run \` ${ NVM_COMMAND } \` to unset it. "
return 10
fi
fi
@@ -2821,9 +2867,9 @@ nvm_die_on_prefix() {
npm config --loglevel= warn delete prefix --userconfig= " ${ NVM_NPM_USER_NPMRC } "
npm config --loglevel= warn delete globalconfig --userconfig= " ${ NVM_NPM_USER_NPMRC } "
else
nvm_err " Your user’ s .npmrc file ( $( nvm_sanitize_path " ${ NVM_NPM_USER_NPMRC } " ) ) "
nvm_err 'has a `globalconfig` and/or a `prefix` setting, which are incompatible with nvm.'
nvm_err " Run \` ${ NVM_COMMAND } \` to unset it. "
nvm_error " Your user' s .npmrc file ( $( nvm_sanitize_path " ${ NVM_NPM_USER_NPMRC } " ) ) "
nvm_error 'has a `globalconfig` and/or a `prefix` setting, which are incompatible with nvm.'
nvm_error " Run \` ${ NVM_COMMAND } \` to unset it. "
return 10
fi
fi
@@ -2835,9 +2881,9 @@ nvm_die_on_prefix() {
npm config --loglevel= warn delete prefix
npm config --loglevel= warn delete globalconfig
else
nvm_err " Your project npmrc file ( $( nvm_sanitize_path " ${ NVM_NPM_PROJECT_NPMRC } " ) ) "
nvm_err 'has a `globalconfig` and/or a `prefix` setting, which are incompatible with nvm.'
nvm_err " Run \` ${ NVM_COMMAND } \` to unset it. "
nvm_error " Your project npmrc file ( $( nvm_sanitize_path " ${ NVM_NPM_PROJECT_NPMRC } " ) ) "
nvm_error 'has a `globalconfig` and/or a `prefix` setting, which are incompatible with nvm.'
nvm_error " Run \` ${ NVM_COMMAND } \` to unset it. "
return 10
fi
fi
@@ -2928,7 +2974,7 @@ nvm_write_nvmrc() {
fi
echo " ${ VERSION_STRING } " | tee " $PWD " /.nvmrc > /dev/null || {
if [ " ${ NVM_SILENT :- 0 } " -ne 1 ] ; then
nvm_err " Warning: Unable to write version number ( $VERSION_STRING ) to .nvmrc "
nvm_error " Warning: Unable to write version number ( $VERSION_STRING ) to .nvmrc "
fi
return 3
}
@@ -2943,13 +2989,13 @@ nvm_check_file_permissions() {
for FILE in " $1 " /* " $1 " /.[ !.] * " $1 " /..?* ; do
if [ -d " $FILE " ] ; then
if [ -n " ${ NVM_DEBUG - } " ] ; then
nvm_err " ${ FILE } "
nvm_error " ${ FILE } "
fi
if [ ! -L " ${ FILE } " ] && ! nvm_check_file_permissions " ${ FILE } " ; then
return 2
fi
elif [ -e " $FILE " ] && [ ! -w " $FILE " ] && [ ! -O " $FILE " ] ; then
nvm_err " file is not writable or self-owned: $( nvm_sanitize_path " $FILE " ) "
nvm_error " file is not writable or self-owned: $( nvm_sanitize_path " $FILE " ) "
return 1
fi
done
@@ -3417,9 +3463,11 @@ nvm() {
; ;
esac
local EXIT_CODE
VERSION = " $( NVM_VERSION_ONLY = true NVM_LTS = " ${ LTS - } " nvm_remote_version " ${ provided_version } " ) "
EXIT_CODE = " $? "
if [ " ${ VERSION } " = 'N/A' ] ; then
if [ " ${ VERSION } " = 'N/A' ] || [ $EXIT_CODE -ne 0 ] ; then
local LTS_MSG
local REMOTE_CMD
if [ " ${ LTS - } " = '*' ] ; then
@@ -3428,6 +3476,10 @@ nvm() {
elif [ -n " ${ LTS - } " ] ; then
LTS_MSG = " (with LTS filter ' ${ LTS } ') "
REMOTE_CMD = " nvm ls-remote --lts= ${ LTS } "
if [ -z " ${ provided_version } " ] ; then
nvm_err " Version with LTS filter ' ${ LTS } ' not found - try \` ${ REMOTE_CMD } \` to browse available versions. "
return 3
fi
else
REMOTE_CMD = 'nvm ls-remote'
fi
@@ -3492,7 +3544,6 @@ nvm() {
FLAVOR = " $( nvm_node_prefix) "
fi
local EXIT_CODE
EXIT_CODE = 0
if nvm_is_version_installed " ${ VERSION } " ; then