Compare commits

..

2 Commits

Author SHA1 Message Date
Jordan Harband
759f70f196
[Refactor] prefer case over if/else chains 2025-02-04 22:45:35 -08:00
Jordan Harband
06a9179309
[Refactor] combine sed -e invocations/arguments 2025-02-04 15:55:10 -08:00

80
nvm.sh
View File

@ -63,11 +63,13 @@ nvm_command_info() {
local INFO local INFO
COMMAND="${1}" COMMAND="${1}"
if type "${COMMAND}" | nvm_grep -q hashed; then if type "${COMMAND}" | nvm_grep -q hashed; then
INFO="$(type "${COMMAND}" | command awk '{ gsub(/[()]/,""); print $4 }')" INFO="$(type "${COMMAND}" | command sed -E 's/\(|\)//g' | command awk '{print $4}')"
elif type "${COMMAND}" | nvm_grep -q aliased; then elif type "${COMMAND}" | nvm_grep -q aliased; then
INFO="$(which "${COMMAND}") ($(type "${COMMAND}" | command awk "{ \$1=\$2=\$3=\$4=\"\"; sub(/^ */, \"\"); gsub(/[\\\`']/, \"\"); print}"))" # shellcheck disable=SC2230
INFO="$(which "${COMMAND}") ($(type "${COMMAND}" | command awk '{ $1=$2=$3=$4="" ;print }' | command sed -e 's/^\ *//g' -Ee "s/\`|'//g"))"
elif type "${COMMAND}" | nvm_grep -q "^${COMMAND} is an alias for"; then elif type "${COMMAND}" | nvm_grep -q "^${COMMAND} is an alias for"; then
INFO="$(which "${COMMAND}") ($(type "${COMMAND}" | command awk "{ \$1=\$2=\$3=\$4=\$5=\"\"; sub(/^ */, \"\"); print }"))" # shellcheck disable=SC2230
INFO="$(which "${COMMAND}") ($(type "${COMMAND}" | command awk '{ $1=$2=$3=$4=$5="" ;print }' | command sed 's/^\ *//g'))"
elif type "${COMMAND}" | nvm_grep -q "^${COMMAND} is /"; then elif type "${COMMAND}" | nvm_grep -q "^${COMMAND} is /"; then
INFO="$(type "${COMMAND}" | command awk '{print $3}')" INFO="$(type "${COMMAND}" | command awk '{print $3}')"
else else
@ -85,7 +87,7 @@ nvm_has_colors() {
} }
nvm_curl_libz_support() { nvm_curl_libz_support() {
curl -V 2>/dev/null | command awk '/^Features:.*libz/ { found=1; exit } END { exit (found ? 0 : 1) }' curl -V 2>/dev/null | nvm_grep "^Features:" | nvm_grep -q "libz"
} }
nvm_curl_use_compression() { nvm_curl_use_compression() {
@ -532,13 +534,9 @@ $(nvm_wrap_with_color_code 'y' "${warn_text}")"
nvm_process_nvmrc() { nvm_process_nvmrc() {
local NVMRC_PATH local NVMRC_PATH
NVMRC_PATH="$1" NVMRC_PATH="$1"
local lines local lines
lines=$(command awk '{
sub(/#.*/, "") lines=$(command sed 's/#.*//' "$NVMRC_PATH" | command sed 's/^[[:space:]]*//;s/[[:space:]]*$//' | nvm_grep -v '^$')
gsub(/^[[:space:]]+|[[:space:]]+$/, "")
if (length($0) > 0) print
}' "$NVMRC_PATH")
if [ -z "$lines" ]; then if [ -z "$lines" ]; then
nvm_nvmrc_invalid_msg "${lines}" nvm_nvmrc_invalid_msg "${lines}"
@ -1417,11 +1415,11 @@ nvm_add_iojs_prefix() {
nvm_strip_iojs_prefix() { nvm_strip_iojs_prefix() {
local NVM_IOJS_PREFIX local NVM_IOJS_PREFIX
NVM_IOJS_PREFIX="$(nvm_iojs_prefix)" NVM_IOJS_PREFIX="$(nvm_iojs_prefix)"
if [ "${1-}" = "${NVM_IOJS_PREFIX}" ]; then
nvm_echo case "${1-}" in
else "${NVM_IOJS_PREFIX}") nvm_echo ;;
nvm_echo "${1#"${NVM_IOJS_PREFIX}"-}" *) nvm_echo "${1#"${NVM_IOJS_PREFIX}"-}" ;;
fi esac
} }
nvm_ls() { nvm_ls() {
@ -1553,12 +1551,15 @@ nvm_ls() {
fi fi
if [ "${NVM_ADD_SYSTEM-}" = true ]; then if [ "${NVM_ADD_SYSTEM-}" = true ]; then
if [ -z "${PATTERN}" ] || [ "${PATTERN}" = 'v' ]; then case "${PATTERN}" in
VERSIONS="${VERSIONS} '' | v)
VERSIONS="${VERSIONS}
system" system"
elif [ "${PATTERN}" = 'system' ]; then ;;
VERSIONS="system" system)
fi VERSIONS="system"
;;
esac
fi fi
if [ -z "${VERSIONS}" ]; then if [ -z "${VERSIONS}" ]; then
@ -1692,7 +1693,7 @@ EOF
LTS="${LTS#lts/}" LTS="${LTS#lts/}"
fi fi
VERSIONS="$({ command awk -v lts="${LTS-}" '{ VERSIONS="$( { command awk -v lts="${LTS-}" '{
if (!$1) { next } if (!$1) { next }
if (lts && $10 ~ /^\-?$/) { next } if (lts && $10 ~ /^\-?$/) { next }
if (lts && lts != "*" && tolower($10) !~ tolower(lts)) { next } if (lts && lts != "*" && tolower($10) !~ tolower(lts)) { next }
@ -1997,28 +1998,7 @@ nvm_print_implicit_alias() {
NVM_IOJS_VERSION="$(${NVM_COMMAND})" &&: NVM_IOJS_VERSION="$(${NVM_COMMAND})" &&:
EXIT_CODE="$?" EXIT_CODE="$?"
if [ "_${EXIT_CODE}" = "_0" ]; then if [ "_${EXIT_CODE}" = "_0" ]; then
NVM_IOJS_VERSION="$(nvm_echo "${NVM_IOJS_VERSION}" | command awk -v prefix="^${NVM_IMPLICIT}-" ' NVM_IOJS_VERSION="$(nvm_echo "${NVM_IOJS_VERSION}" | command sed "s/^${NVM_IMPLICIT}-//" | nvm_grep -e '^v' | command cut -c2- | command cut -d . -f 1,2 | uniq | command tail -1)"
BEGIN {
last = ""
prev = ""
}
{
sub(prefix, "")
# skip lines that do not start with "v"
if ($0 !~ /^v/) next
# remove leading "v"
sub(/^v/, "")
# keep only major.minor
split($0, parts, "\\.")
short = parts[1] "." parts[2]
# replicate "uniq" by only updating if changed
if (short != prev) {
last = short
prev = short
}
}
END { print last }
')"
fi fi
if [ "_$NVM_IOJS_VERSION" = "_N/A" ]; then if [ "_$NVM_IOJS_VERSION" = "_N/A" ]; then
@ -2040,7 +2020,7 @@ nvm_print_implicit_alias() {
nvm_is_zsh && setopt local_options shwordsplit nvm_is_zsh && setopt local_options shwordsplit
LAST_TWO="$($NVM_COMMAND | command awk '/^v/ { sub(/^v/, ""); split($0, parts, "\\."); short=parts[1]"."parts[2]; if (!seen[short]++) print short }')" LAST_TWO=$($NVM_COMMAND | nvm_grep -e '^v' | command cut -c2- | command cut -d . -f 1,2 | uniq)
;; ;;
esac esac
local MINOR local MINOR
@ -2757,19 +2737,13 @@ nvm_npm_global_modules() {
local NPMLIST local NPMLIST
local VERSION local VERSION
VERSION="$1" VERSION="$1"
NPMLIST="$(nvm use "${VERSION}" >/dev/null && npm list -g --depth=0 2>/dev/null | command awk 'NR == 1 { next } /UNMET PEER DEPENDENCY/ { next } { print }')" NPMLIST=$(nvm use "${VERSION}" >/dev/null && npm list -g --depth=0 2>/dev/null | command sed -e '1d' -e '/UNMET PEER DEPENDENCY/d')
local INSTALLS local INSTALLS
INSTALLS="$(nvm_echo "${NPMLIST}" | command awk ' INSTALLS=$(nvm_echo "${NPMLIST}" | command sed -e '/ -> / d' -e '/\(empty\)/ d' -e 's/^.* \(.*@[^ ]*\).*/\1/' -e '/^npm@[^ ]*.*$/ d' | command xargs)
/ -> / { next }
/\(empty\)/ { next }
/^npm@/ { next }
{ sub(/^.* (.*@[^ ]*).*/,"\\1"); if (length($0) > 0) print }
' | command xargs
)"
local LINKS local LINKS
LINKS="$(nvm_echo "${NPMLIST}" | command awk '/ -> / { sub(/.* -> /,""); print } ')" LINKS="$(nvm_echo "${NPMLIST}" | command sed -n 's/.* -> \(.*\)/\1/ p')"
nvm_echo "${INSTALLS} //// ${LINKS}" nvm_echo "${INSTALLS} //// ${LINKS}"
} }