Compare commits

..

1 Commits

2 changed files with 31 additions and 17 deletions

46
nvm.sh
View File

@ -4456,23 +4456,37 @@ nvm() {
} }
nvm_get_default_packages() { nvm_get_default_packages() {
local NVM_DEFAULT_PACKAGE_FILE local NVM_DEFAULT_PACKAGE_FILE="${NVM_DIR}/default-packages"
NVM_DEFAULT_PACKAGE_FILE="${NVM_DIR}/default-packages"
if [ -f "${NVM_DEFAULT_PACKAGE_FILE}" ]; then if [ -f "${NVM_DEFAULT_PACKAGE_FILE}" ]; then
command awk -v filename="${NVM_DEFAULT_PACKAGE_FILE}" ' local DEFAULT_PACKAGES
/^[[:space:]]*#/ { next } # Skip lines that begin with # DEFAULT_PACKAGES=''
/^[[:space:]]*$/ { next } # Skip empty lines
/[[:space:]]/ && !/^[[:space:]]*#/ { # Read lines from $NVM_DIR/default-packages
print "Only one package per line is allowed in `" filename "`. Please remove any lines with multiple space-separated values." > "/dev/stderr" local line
err = 1 # ensure a trailing newline
exit 1 WORK=$(mktemp -d) || exit $?
} # shellcheck disable=SC2064
{ trap "command rm -rf '$WORK'" EXIT
if (NR > 1 && !prev_space) printf " " # shellcheck disable=SC1003
printf "%s", $0 sed -e '$a\' "${NVM_DEFAULT_PACKAGE_FILE}" > "${WORK}/default-packages"
prev_space = 0 while IFS=' ' read -r line; do
} # Skip empty lines.
' "${NVM_DEFAULT_PACKAGE_FILE}" [ -n "${line-}" ] || continue
# Skip comment lines that begin with `#`.
[ "$(nvm_echo "${line}" | command cut -c1)" != "#" ] || continue
# Fail on lines that have multiple space-separated words
case $line in
*\ *)
nvm_err "Only one package per line is allowed in the ${NVM_DIR}/default-packages file. Please remove any lines with multiple space-separated values."
return 1
;;
esac
DEFAULT_PACKAGES="${DEFAULT_PACKAGES}${line} "
done < "${WORK}/default-packages"
echo "${DEFAULT_PACKAGES}" | command xargs
fi fi
} }

View File

@ -74,7 +74,7 @@ rimraf
EOF EOF
DEFAULT_PKGS="$(nvm_get_default_packages 2>&1 >/dev/null)" DEFAULT_PKGS="$(nvm_get_default_packages 2>&1 >/dev/null)"
EXPECTED_PKGS="Only one package per line is allowed in \`${FILE}\`. Please remove any lines with multiple space-separated values." EXPECTED_PKGS="Only one package per line is allowed in the $FILE file. Please remove any lines with multiple space-separated values."
[ "${DEFAULT_PKGS}" = "${EXPECTED_PKGS}" ] || die "4: expected default packages >${EXPECTED_PKGS}<; got >${DEFAULT_PKGS}<" [ "${DEFAULT_PKGS}" = "${EXPECTED_PKGS}" ] || die "4: expected default packages >${EXPECTED_PKGS}<; got >${DEFAULT_PKGS}<"
cleanup cleanup