[New] add `lts/-1` etc, to point to an LTS line relative to "latest"

Jordan Harband 2020-03-04 01:03:36 -08:00
parent c372ff03e0
commit 4626d1aae6
No known key found for this signature in database
GPG Key ID: 9F6A681E35EF8B56
4 changed files with 62 additions and 1 deletions

19
nvm.sh
View File

@ -855,8 +855,25 @@ nvm_alias() {
return 1 return 1
fi fi
local NVM_ALIAS_DIR
NVM_ALIAS_DIR="$(nvm_alias_path)"
if [ "$(expr "${ALIAS}" : '^lts/-[1-9][0-9]*$')" -gt 0 ]; then
local N
N="$(echo "${ALIAS}" | cut -d '-' -f 2)"
local RESULT
RESULT="$(command ls "${NVM_ALIAS_DIR}/lts" | command tail -n "${N}" | command head -n 1)"
if [ "${RESULT}" != '*' ]; then
nvm_alias "lts/${RESULT}"
return $?
else
nvm_err 'That many LTS releases do not exist yet.'
return 2
fi
fi
local NVM_ALIAS_PATH local NVM_ALIAS_PATH
NVM_ALIAS_PATH="$(nvm_alias_path)/${ALIAS}" NVM_ALIAS_PATH="${NVM_ALIAS_DIR}/${ALIAS}"
if [ ! -f "${NVM_ALIAS_PATH}" ]; then if [ ! -f "${NVM_ALIAS_PATH}" ]; then
nvm_err 'Alias does not exist.' nvm_err 'Alias does not exist.'
return 2 return 2

View File

@ -0,0 +1,5 @@
erbium
dubnium
carbon
boron
argon

View File

@ -0,0 +1,34 @@
#!/bin/sh
die () { echo "$@" ; cleanup ; exit 1; }
cleanup() {
unset -f nvm_download
}
\. ../../../nvm.sh
set -ex
MOCKS_DIR="${PWD}/mocks"
# sample output at the time the test was written
TAB_PATH="${MOCKS_DIR}/nodejs.org-dist-index.tab"
nvm_download() {
cat "${TAB_PATH}"
}
nvm_ls_remote >/dev/null || die "nvm_ls_remote_failed?!"
LTS_NAMES_PATH="${MOCKS_DIR}/LTS_names.txt"
N=0
while IFS= read -r LTS; do
N=$(($N+1))
EXPECTED="$(nvm_alias "lts/${LTS}")"
ACTUAL="$(nvm_alias "lts/-${N}")"
[ "${EXPECTED}" = "${ACTUAL}" ] || die "\`nvm_alias lts/-${N}\` was \`${ACTUAL}\`; expected \`${EXPECTED}\`"
done < "${LTS_NAMES_PATH}"
cleanup

View File

@ -44,9 +44,14 @@ set -e
ALIAS_PATH="$MOCKS_DIR/nvm_make_alias LTS alias calls.txt" ALIAS_PATH="$MOCKS_DIR/nvm_make_alias LTS alias calls.txt"
: > "$ALIAS_PATH" : > "$ALIAS_PATH"
LTS_NAMES_PATH="$MOCKS_DIR/LTS_names.txt"
: > "$LTS_NAMES_PATH"
nvm_make_alias() { nvm_make_alias() {
# prevent local alias creation, and store arguments # prevent local alias creation, and store arguments
echo "${1}|${2}" >> "$ALIAS_PATH" echo "${1}|${2}" >> "$ALIAS_PATH"
if [ "${1}" != 'lts/*' ]; then
echo "${1#lts/}" >> "$LTS_NAMES_PATH"
fi
} }
nvm ls-remote --lts > /dev/null nvm ls-remote --lts > /dev/null