[Fix] `default_packages`: work when the file lacks a trailing newline
Fixes #1995.
parent
5c117e6ab3
commit
db19450caa
10
nvm.sh
10
nvm.sh
|
@ -3495,12 +3495,18 @@ nvm() {
|
||||||
}
|
}
|
||||||
|
|
||||||
nvm_get_default_packages() {
|
nvm_get_default_packages() {
|
||||||
if [ -f "${NVM_DIR}/default-packages" ]; then
|
local NVM_DEFAULT_PACKAGE_FILE="${NVM_DIR}/default-packages"
|
||||||
|
if [ -f "${NVM_DEFAULT_PACKAGE_FILE}" ]; then
|
||||||
local DEFAULT_PACKAGES
|
local DEFAULT_PACKAGES
|
||||||
DEFAULT_PACKAGES=''
|
DEFAULT_PACKAGES=''
|
||||||
|
|
||||||
# Read lines from $NVM_DIR/default-packages
|
# Read lines from $NVM_DIR/default-packages
|
||||||
local line
|
local line
|
||||||
|
# ensure a trailing newline
|
||||||
|
WORK=$(mktemp -d) || exit $?
|
||||||
|
trap "rm -rf '$WORK'" EXIT
|
||||||
|
# shellcheck disable=SC1003
|
||||||
|
sed -e '$a\' "${NVM_DEFAULT_PACKAGE_FILE}" > "${WORK}/default-packages"
|
||||||
while IFS=' ' read -r line; do
|
while IFS=' ' read -r line; do
|
||||||
# Skip empty lines.
|
# Skip empty lines.
|
||||||
[ -n "${line-}" ] || continue
|
[ -n "${line-}" ] || continue
|
||||||
|
@ -3517,7 +3523,7 @@ nvm_get_default_packages() {
|
||||||
esac
|
esac
|
||||||
|
|
||||||
DEFAULT_PACKAGES="${DEFAULT_PACKAGES}${line} "
|
DEFAULT_PACKAGES="${DEFAULT_PACKAGES}${line} "
|
||||||
done < "${NVM_DIR}/default-packages"
|
done < "${WORK}/default-packages"
|
||||||
echo "${DEFAULT_PACKAGES}" | xargs
|
echo "${DEFAULT_PACKAGES}" | xargs
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,6 +52,21 @@ cleanup
|
||||||
|
|
||||||
setup
|
setup
|
||||||
|
|
||||||
|
cat > $FILE << EOF
|
||||||
|
rimraf
|
||||||
|
not~a~package~name
|
||||||
|
mkdirp
|
||||||
|
EOF
|
||||||
|
printf %s "$(cat "${FILE}")" > $FILE # strip trailing newline
|
||||||
|
|
||||||
|
DEFAULT_PKGS="$(nvm_get_default_packages)"
|
||||||
|
EXPECTED_PKGS='rimraf not~a~package~name mkdirp'
|
||||||
|
[ "${DEFAULT_PKGS}" = "${EXPECTED_PKGS}" ] || die "3: expected default packages >${EXPECTED_PKGS}<; got >${DEFAULT_PKGS}<"
|
||||||
|
|
||||||
|
cleanup
|
||||||
|
|
||||||
|
setup
|
||||||
|
|
||||||
cat > $FILE << EOF
|
cat > $FILE << EOF
|
||||||
object-inspect @ 1.0.2
|
object-inspect @ 1.0.2
|
||||||
rimraf
|
rimraf
|
||||||
|
@ -59,7 +74,7 @@ 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 the $FILE 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 "3: expected default packages >${EXPECTED_PKGS}<; got >${DEFAULT_PKGS}<"
|
[ "${DEFAULT_PKGS}" = "${EXPECTED_PKGS}" ] || die "4: expected default packages >${EXPECTED_PKGS}<; got >${DEFAULT_PKGS}<"
|
||||||
|
|
||||||
cleanup
|
cleanup
|
||||||
|
|
||||||
|
@ -69,7 +84,7 @@ rm -rf $FILE
|
||||||
|
|
||||||
DEFAULT_PKGS="$(nvm_get_default_packages)"
|
DEFAULT_PKGS="$(nvm_get_default_packages)"
|
||||||
EXPECTED_PKGS=''
|
EXPECTED_PKGS=''
|
||||||
[ "${DEFAULT_PKGS}" = "${EXPECTED_PKGS}" ] || die "4: expected default packages >${EXPECTED_PKGS}<; got >${DEFAULT_PKGS}<"
|
[ "${DEFAULT_PKGS}" = "${EXPECTED_PKGS}" ] || die "5: expected default packages >${EXPECTED_PKGS}<; got >${DEFAULT_PKGS}<"
|
||||||
|
|
||||||
touch $FILE
|
touch $FILE
|
||||||
|
|
||||||
|
|
|
@ -30,8 +30,11 @@ object-inspect@1.0.2
|
||||||
# commented-package
|
# commented-package
|
||||||
|
|
||||||
stevemao/left-pad
|
stevemao/left-pad
|
||||||
|
daytime
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
printf %s "$(cat "${FILE}")" > $FILE # strip trailing newline
|
||||||
|
|
||||||
nvm install v6.10.1 2>&1
|
nvm install v6.10.1 2>&1
|
||||||
EXIT_CODE=$?
|
EXIT_CODE=$?
|
||||||
[ "_$EXIT_CODE" = "_0" ] || die "expected 'nvm install v6.10.1' to exit with 0, got $EXIT_CODE"
|
[ "_$EXIT_CODE" = "_0" ] || die "expected 'nvm install v6.10.1' to exit with 0, got $EXIT_CODE"
|
||||||
|
@ -41,6 +44,11 @@ if [ -z "$?" ]; then
|
||||||
die "expected 'nvm exec v6.10.1 npm ls -g --depth=0 | grep -q 'rimraf'' to exit with 0, got $?"
|
die "expected 'nvm exec v6.10.1 npm ls -g --depth=0 | grep -q 'rimraf'' to exit with 0, got $?"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
nvm exec v6.10.1 npm ls -g --depth=0 | grep -q 'daytime'
|
||||||
|
if [ -z "$?" ]; then
|
||||||
|
die "expected 'nvm exec v6.10.1 npm ls -g --depth=0 | grep -q 'daytime'' to exit with 0, got $?"
|
||||||
|
fi
|
||||||
|
|
||||||
cleanup
|
cleanup
|
||||||
|
|
||||||
setup
|
setup
|
||||||
|
|
Loading…
Reference in New Issue