Add support for `nvm ls-remote --lts`

Jordan Harband 2016-04-23 23:47:25 -07:00
parent cb326cb19d
commit ae07c3c345
No known key found for this signature in database
GPG Key ID: 64A196AEE0916D55
6 changed files with 371 additions and 35 deletions

57
nvm.sh
View File

@ -858,14 +858,16 @@ nvm_ls_remote() {
else else
PATTERN=".*" PATTERN=".*"
fi fi
nvm_ls_remote_index_tab node std "$NVM_NODEJS_ORG_MIRROR" "$PATTERN" NVM_LTS="${NVM_LTS-}" nvm_ls_remote_index_tab node std "$NVM_NODEJS_ORG_MIRROR" "$PATTERN"
} }
nvm_ls_remote_iojs() { nvm_ls_remote_iojs() {
nvm_ls_remote_index_tab iojs std "$NVM_IOJS_ORG_MIRROR" "$1" NVM_LTS="${NVM_LTS-}" nvm_ls_remote_index_tab iojs std "$NVM_IOJS_ORG_MIRROR" "$1"
} }
nvm_ls_remote_index_tab() { nvm_ls_remote_index_tab() {
local LTS
LTS="${NVM_LTS-}"
if [ "$#" -lt 4 ]; then if [ "$#" -lt 4 ]; then
nvm_err 'not enough arguments' nvm_err 'not enough arguments'
return 5 return 5
@ -915,10 +917,11 @@ nvm_ls_remote_index_tab() {
1d; 1d;
s/^/$PREFIX/; s/^/$PREFIX/;
" \ " \
| command awk -v pattern="${PATTERN-}" '{ | command awk -v pattern="${PATTERN-}" -v lts="${LTS-}" '{
if (!$1) { next } if (!$1) { next }
if (pattern && tolower($1) !~ tolower(pattern)) { next } if (pattern && tolower($1) !~ tolower(pattern)) { next }
if ($10 !~ /^\-?$/ && ! a[$10]++) print $1, $10; else print $1 if (lts == "*" && $10 ~ /^\-?$/) { next }
if ($10 !~ /^\-?$/) print $1, $10; else print $1
}' \ }' \
| nvm_grep -w "${PATTERN:-.*}" \ | nvm_grep -w "${PATTERN:-.*}" \
| $SORT_COMMAND)" | $SORT_COMMAND)"
@ -1012,7 +1015,7 @@ nvm_print_versions() {
fi fi
fi fi
if [ "$LTS" != "$VERSION" ]; then if [ "$LTS" != "$VERSION" ]; then
LTS=" (Latest LTS: $LTS)" LTS=" (LTS: $LTS)"
LTS_LENGTH="${#LTS}" LTS_LENGTH="${#LTS}"
if [ "${NVM_HAS_COLORS-}" = '1' ]; then if [ "${NVM_HAS_COLORS-}" = '1' ]; then
LTS_FORMAT="\033[1;32m%${LTS_LENGTH}s\033[0m" LTS_FORMAT="\033[1;32m%${LTS_LENGTH}s\033[0m"
@ -1791,9 +1794,11 @@ nvm() {
nvm_echo ' nvm run [--silent] <version> [<args>] Run `node` on <version> with <args> as arguments. Uses .nvmrc if available' nvm_echo ' nvm run [--silent] <version> [<args>] Run `node` on <version> with <args> as arguments. Uses .nvmrc if available'
nvm_echo ' nvm current Display currently activated version' nvm_echo ' nvm current Display currently activated version'
nvm_echo ' nvm ls List installed versions' nvm_echo ' nvm ls List installed versions'
nvm_echo ' nvm ls <version> List versions matching a given description' nvm_echo ' nvm ls <version> List versions matching a given <version>'
nvm_echo ' nvm ls-remote List remote versions available for install' nvm_echo ' nvm ls-remote List remote versions available for install'
nvm_echo ' --lts When listing, only show LTS (long-term support) versions'
nvm_echo ' nvm ls-remote <version> List remote versions available for install, matching a given <version>' nvm_echo ' nvm ls-remote <version> List remote versions available for install, matching a given <version>'
nvm_echo ' --lts When listing, only show LTS (long-term support) versions'
nvm_echo ' nvm version <version> Resolve the given description to a single local version' nvm_echo ' nvm version <version> Resolve the given description to a single local version'
nvm_echo ' nvm version-remote <version> Resolve the given description to a single remote version' nvm_echo ' nvm version-remote <version> Resolve the given description to a single remote version'
nvm_echo ' nvm deactivate Undo effects of `nvm` on current shell' nvm_echo ' nvm deactivate Undo effects of `nvm` on current shell'
@ -2370,19 +2375,39 @@ nvm() {
return $NVM_LS_EXIT_CODE return $NVM_LS_EXIT_CODE
;; ;;
"ls-remote" | "list-remote" ) "ls-remote" | "list-remote" )
local PATTERN local LTS
PATTERN="${2-}"
local NVM_IOJS_PREFIX local NVM_IOJS_PREFIX
NVM_IOJS_PREFIX="$(nvm_iojs_prefix)" NVM_IOJS_PREFIX="$(nvm_iojs_prefix)"
local NVM_NODE_PREFIX local NVM_NODE_PREFIX
NVM_NODE_PREFIX="$(nvm_node_prefix)" NVM_NODE_PREFIX="$(nvm_node_prefix)"
local PATTERN
local NVM_FLAVOR local NVM_FLAVOR
case "_$PATTERN" in while [ $# -gt 1 ]
"_$NVM_IOJS_PREFIX" | "_$NVM_NODE_PREFIX" ) do
NVM_FLAVOR="$PATTERN" case "$2" in
PATTERN="$3" --lts)
;; LTS='*'
esac ;;
--*)
nvm_err "Unsupported option \"$2\"."
return 55;
;;
*)
if [ -z "$PATTERN" ]; then
PATTERN="${2-}"
if [ -z "$NVM_FLAVOR" ]; then
case "_$PATTERN" in
"_$NVM_IOJS_PREFIX" | "_$NVM_NODE_PREFIX")
NVM_FLAVOR="$PATTERN"
PATTERN=""
;;
esac
fi
fi
;;
esac
shift
done
local NVM_LS_REMOTE_EXIT_CODE local NVM_LS_REMOTE_EXIT_CODE
NVM_LS_REMOTE_EXIT_CODE=0 NVM_LS_REMOTE_EXIT_CODE=0
@ -2392,7 +2417,7 @@ nvm() {
NVM_LS_REMOTE_POST_MERGED_OUTPUT='' NVM_LS_REMOTE_POST_MERGED_OUTPUT=''
if [ "_$NVM_FLAVOR" != "_$NVM_IOJS_PREFIX" ]; then if [ "_$NVM_FLAVOR" != "_$NVM_IOJS_PREFIX" ]; then
local NVM_LS_REMOTE_OUTPUT local NVM_LS_REMOTE_OUTPUT
NVM_LS_REMOTE_OUTPUT=$(nvm_ls_remote "$PATTERN") NVM_LS_REMOTE_OUTPUT=$(NVM_LTS="${LTS-}" nvm_ls_remote "$PATTERN")
# split output into two # split output into two
NVM_LS_REMOTE_PRE_MERGED_OUTPUT="${NVM_LS_REMOTE_OUTPUT%%v4\.0\.0*}" NVM_LS_REMOTE_PRE_MERGED_OUTPUT="${NVM_LS_REMOTE_OUTPUT%%v4\.0\.0*}"
NVM_LS_REMOTE_POST_MERGED_OUTPUT="${NVM_LS_REMOTE_OUTPUT#$NVM_LS_REMOTE_PRE_MERGED_OUTPUT}" NVM_LS_REMOTE_POST_MERGED_OUTPUT="${NVM_LS_REMOTE_OUTPUT#$NVM_LS_REMOTE_PRE_MERGED_OUTPUT}"
@ -2404,7 +2429,7 @@ nvm() {
local NVM_LS_REMOTE_IOJS_OUTPUT local NVM_LS_REMOTE_IOJS_OUTPUT
NVM_LS_REMOTE_IOJS_OUTPUT='' NVM_LS_REMOTE_IOJS_OUTPUT=''
if [ "_$NVM_FLAVOR" != "_$NVM_NODE_PREFIX" ]; then if [ "_$NVM_FLAVOR" != "_$NVM_NODE_PREFIX" ]; then
NVM_LS_REMOTE_IOJS_OUTPUT=$(nvm_ls_remote_iojs "$PATTERN") NVM_LS_REMOTE_IOJS_OUTPUT=$(NVM_LTS="${LTS-}" nvm_ls_remote_iojs "$PATTERN")
NVM_LS_REMOTE_IOJS_EXIT_CODE=$? NVM_LS_REMOTE_IOJS_EXIT_CODE=$?
fi fi

View File

@ -0,0 +1,278 @@
v0.1.14
v0.1.15
v0.1.16
v0.1.17
v0.1.18
v0.1.19
v0.1.20
v0.1.21
v0.1.22
v0.1.23
v0.1.24
v0.1.25
v0.1.26
v0.1.27
v0.1.28
v0.1.29
v0.1.30
v0.1.31
v0.1.32
v0.1.33
v0.1.90
v0.1.91
v0.1.92
v0.1.93
v0.1.94
v0.1.95
v0.1.96
v0.1.97
v0.1.98
v0.1.99
v0.1.100
v0.1.101
v0.1.102
v0.1.103
v0.1.104
v0.2.0
v0.2.1
v0.2.2
v0.2.3
v0.2.4
v0.2.5
v0.2.6
v0.3.0
v0.3.1
v0.3.2
v0.3.3
v0.3.4
v0.3.5
v0.3.6
v0.3.7
v0.3.8
v0.4.0
v0.4.1
v0.4.2
v0.4.3
v0.4.4
v0.4.5
v0.4.6
v0.4.7
v0.4.8
v0.4.9
v0.4.10
v0.4.11
v0.4.12
v0.5.0
v0.5.1
v0.5.2
v0.5.3
v0.5.4
v0.5.5
v0.5.6
v0.5.7
v0.5.8
v0.5.9
v0.5.10
v0.6.0
v0.6.1
v0.6.2
v0.6.3
v0.6.4
v0.6.5
v0.6.6
v0.6.7
v0.6.8
v0.6.9
v0.6.10
v0.6.11
v0.6.12
v0.6.13
v0.6.14
v0.6.15
v0.6.16
v0.6.17
v0.6.18
v0.6.19
v0.6.20
v0.6.21
v0.7.0
v0.7.1
v0.7.2
v0.7.3
v0.7.4
v0.7.5
v0.7.6
v0.7.7
v0.7.8
v0.7.9
v0.7.10
v0.7.11
v0.7.12
v0.8.0
v0.8.1
v0.8.2
v0.8.3
v0.8.4
v0.8.5
v0.8.6
v0.8.7
v0.8.8
v0.8.9
v0.8.10
v0.8.11
v0.8.12
v0.8.13
v0.8.14
v0.8.15
v0.8.16
v0.8.17
v0.8.18
v0.8.19
v0.8.20
v0.8.21
v0.8.22
v0.8.23
v0.8.24
v0.8.25
v0.8.26
v0.8.27
v0.8.28
v0.9.0
v0.9.1
v0.9.2
v0.9.3
v0.9.4
v0.9.5
v0.9.6
v0.9.7
v0.9.8
v0.9.9
v0.9.10
v0.9.11
v0.9.12
v0.10.0
v0.10.1
v0.10.2
v0.10.3
v0.10.4
v0.10.5
v0.10.6
v0.10.7
v0.10.8
v0.10.9
v0.10.10
v0.10.11
v0.10.12
v0.10.13
v0.10.14
v0.10.15
v0.10.16
v0.10.17
v0.10.18
v0.10.19
v0.10.20
v0.10.21
v0.10.22
v0.10.23
v0.10.24
v0.10.25
v0.10.26
v0.10.27
v0.10.28
v0.10.29
v0.10.30
v0.10.31
v0.10.32
v0.10.33
v0.10.34
v0.10.35
v0.10.36
v0.10.37
v0.10.38
v0.10.39
v0.10.40
v0.10.41
v0.10.42
v0.10.43
v0.10.44
v0.10.45
v0.10.46
v0.11.0
v0.11.1
v0.11.2
v0.11.3
v0.11.4
v0.11.5
v0.11.6
v0.11.7
v0.11.8
v0.11.9
v0.11.10
v0.11.11
v0.11.12
v0.11.13
v0.11.14
v0.11.15
v0.11.16
v0.12.0
v0.12.1
v0.12.2
v0.12.3
v0.12.4
v0.12.5
v0.12.6
v0.12.7
v0.12.8
v0.12.9
v0.12.10
v0.12.11
v0.12.12
v0.12.13
v0.12.14
v0.12.15
v4.0.0
v4.1.0
v4.1.1
v4.1.2
v4.2.0 Argon
v4.2.1 Argon
v4.2.2 Argon
v4.2.3 Argon
v4.2.4 Argon
v4.2.5 Argon
v4.2.6 Argon
v4.3.0 Argon
v4.3.1 Argon
v4.3.2 Argon
v4.4.0 Argon
v4.4.1 Argon
v4.4.2 Argon
v4.4.3 Argon
v4.4.4 Argon
v4.4.5 Argon
v4.4.6 Argon
v4.4.7 Argon
v5.0.0
v5.1.0
v5.1.1
v5.2.0
v5.3.0
v5.4.0
v5.4.1
v5.5.0
v5.6.0
v5.7.0
v5.7.1
v5.8.0
v5.9.0
v5.9.1
v5.10.0
v5.10.1
v5.11.0
v5.11.1
v5.12.0
v6.0.0
v6.1.0
v6.2.0
v6.2.1
v6.2.2

View File

@ -0,0 +1,18 @@
v4.2.0 Argon
v4.2.1 Argon
v4.2.2 Argon
v4.2.3 Argon
v4.2.4 Argon
v4.2.5 Argon
v4.2.6 Argon
v4.3.0 Argon
v4.3.1 Argon
v4.3.2 Argon
v4.4.0 Argon
v4.4.1 Argon
v4.4.2 Argon
v4.4.3 Argon
v4.4.4 Argon
v4.4.5 Argon
v4.4.6 Argon
v4.4.7 Argon

View File

@ -234,23 +234,23 @@ v4.0.0
v4.1.0 v4.1.0
v4.1.1 v4.1.1
v4.1.2 v4.1.2
v4.2.0 v4.2.0 Argon
v4.2.1 v4.2.1 Argon
v4.2.2 v4.2.2 Argon
v4.2.3 v4.2.3 Argon
v4.2.4 v4.2.4 Argon
v4.2.5 v4.2.5 Argon
v4.2.6 v4.2.6 Argon
v4.3.0 v4.3.0 Argon
v4.3.1 v4.3.1 Argon
v4.3.2 v4.3.2 Argon
v4.4.0 v4.4.0 Argon
v4.4.1 v4.4.1 Argon
v4.4.2 v4.4.2 Argon
v4.4.3 v4.4.3 Argon
v4.4.4 v4.4.4 Argon
v4.4.5 v4.4.5 Argon
v4.4.6 v4.4.6 Argon
v4.4.7 Argon v4.4.7 Argon
v5.0.0 v5.0.0
v5.1.0 v5.1.0

View File

@ -8,13 +8,15 @@ cleanup() {
. ../../../nvm.sh . ../../../nvm.sh
MOCKS_DIR="$PWD/mocks"
# sample output at the time the test was written # sample output at the time the test was written
TAB_PATH="$PWD/mocks/nodejs.org-dist-index.tab" TAB_PATH="$MOCKS_DIR/nodejs.org-dist-index.tab"
nvm_download() { nvm_download() {
cat "$TAB_PATH" cat "$TAB_PATH"
} }
EXPECTED_OUTPUT_PATH="$PWD/mocks/nvm_ls_remote.txt" EXPECTED_OUTPUT_PATH="$MOCKS_DIR/nvm_ls_remote.txt"
OUTPUT="$(nvm_ls_remote foo)" OUTPUT="$(nvm_ls_remote foo)"
EXIT_CODE="$(nvm_ls_remote foo >/dev/null 2>&1 ; echo $?)" EXIT_CODE="$(nvm_ls_remote foo >/dev/null 2>&1 ; echo $?)"
@ -55,4 +57,15 @@ OUTPUT="$(nvm_ls_remote unstable)"
EXPECTED_OUTPUT="v0.11.16" EXPECTED_OUTPUT="v0.11.16"
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm_ls_remote unstable did not output $EXPECTED_OUTPUT; got $OUTPUT" [ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "nvm_ls_remote unstable did not output $EXPECTED_OUTPUT; got $OUTPUT"
EXPECTED_OUTPUT_PATH="$MOCKS_DIR/nvm_ls_remote LTS.txt"
EXPECTED_OUTPUT="$(cat "$EXPECTED_OUTPUT_PATH")"
OUTPUT="$(NVM_LTS='*' nvm_ls_remote)"
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "\`NVM_LTS='*' nvm_ls_remote\` did not output >$EXPECTED_OUTPUT<; got >$OUTPUT<"
EXPECTED_OUTPUT_PATH="$MOCKS_DIR/nvm_ls_remote LTS argon.txt"
EXPECTED_OUTPUT="$(cat "$EXPECTED_OUTPUT_PATH")"
OUTPUT="$(NVM_LTS=argon nvm_ls_remote)"
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "\`NVM_LTS=argon nvm_ls_remote\` did not output >$EXPECTED_OUTPUT<; got >$OUTPUT<"
cleanup cleanup

View File

@ -13,6 +13,8 @@ mkdir -p "$MOCKS_DIR"
nvm_ls_remote > "$MOCKS_DIR/nvm_ls_remote.txt" nvm_ls_remote > "$MOCKS_DIR/nvm_ls_remote.txt"
nvm_ls_remote_iojs > "$MOCKS_DIR/nvm_ls_remote_iojs.txt" nvm_ls_remote_iojs > "$MOCKS_DIR/nvm_ls_remote_iojs.txt"
NVM_LTS=* nvm_ls_remote > "$MOCKS_DIR/nvm_ls_remote LTS.txt"
NVM_LTS=argon nvm_ls_remote > "$MOCKS_DIR/nvm_ls_remote LTS argon.txt"
nvm_download -L -s "$NVM_NODEJS_ORG_MIRROR/index.tab" -o - > "$MOCKS_DIR/nodejs.org-dist-index.tab" nvm_download -L -s "$NVM_NODEJS_ORG_MIRROR/index.tab" -o - > "$MOCKS_DIR/nodejs.org-dist-index.tab"
nvm_download -L -s "$NVM_IOJS_ORG_MIRROR/index.tab" -o - > "$MOCKS_DIR/iojs.org-dist-index.tab" nvm_download -L -s "$NVM_IOJS_ORG_MIRROR/index.tab" -o - > "$MOCKS_DIR/iojs.org-dist-index.tab"