Skip to content

Commit 1ac7e23

Browse files
committed
[New] Add lts/foo support to remote commands.
- `nvm ls-remote` - `nvm version-remote` - `nvm install` - `nvm uninstall` Document existing support: - `nvm use` - `nvm exec` - `nvm run` Fixes #1208.
1 parent 681c81a commit 1ac7e23

File tree

3 files changed

+60
-15
lines changed

3 files changed

+60
-15
lines changed

README.markdown

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -160,13 +160,13 @@ In place of a version pointer like "0.10" or "5.0" or "4.2.1", you can use the f
160160

161161
### Long-term support
162162
Node has a [schedule](https://github.com/nodejs/LTS#lts_schedule) for long-term support (LTS) You can reference LTS versions in aliases and `.nvmrc` files with the notation `lts/*` for the latest LTS, and `lts/argon` for LTS releases from the "argon" line, for example. In addition, the following commands support LTS arguments:
163-
- `nvm install --lts` / `nvm install --lts=argon`
164-
- `nvm uninstall --lts` / `nvm uninstall --lts=argon`
165-
- `nvm use --lts` / `nvm use --lts=argon`
166-
- `nvm exec --lts` / `nvm exec --lts=argon`
167-
- `nvm run --lts` / `nvm run --lts=argon`
168-
- `nvm ls-remote --lts` / `nvm ls-remote --lts=argon`
169-
- `nvm version-remote --lts` / `nvm version-remote --lts=argon`
163+
- `nvm install --lts` / `nvm install --lts=argon` / `nvm install 'lts/*'` / `nvm install lts/argon`
164+
- `nvm uninstall --lts` / `nvm uninstall --lts=argon` / `nvm uninstall 'lts/*'` / `nvm uninstall lts/argon`
165+
- `nvm use --lts` / `nvm use --lts=argon` / `nvm use 'lts/*'` / `nvm use lts/argon`
166+
- `nvm exec --lts` / `nvm exec --lts=argon` / `nvm exec 'lts/*'` / `nvm exec lts/argon`
167+
- `nvm run --lts` / `nvm run --lts=argon` / `nvm run 'lts/*'` / `nvm run lts/argon`
168+
- `nvm ls-remote --lts` / `nvm ls-remote --lts=argon` `nvm ls-remote 'lts/*'` / `nvm ls-remote lts/argon`
169+
- `nvm version-remote --lts` / `nvm version-remote --lts=argon` / `nvm version-remote 'lts/*'` / `nvm version-remote lts/argon`
170170

171171
Any time your local copy of `nvm` connects to https://nodejs.org, it will re-create the appropriate local aliases for all available LTS lines. These aliases (stored under `$NVM_DIR/alias/lts`), are managed by `nvm`, and you should not modify, remove, or create these files - expect your changes to be undone, and expect meddling with these files to cause bugs that will likely not be supported.
172172

nvm.sh

Lines changed: 45 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2066,7 +2066,18 @@ nvm() {
20662066
shift
20672067
fi
20682068

2069-
VERSION="$(NVM_VERSION_ONLY=true NVM_LTS="${LTS-}" nvm_remote_version "$provided_version")"
2069+
case "${provided_version}" in
2070+
'lts/*')
2071+
LTS='*'
2072+
provided_version=''
2073+
;;
2074+
lts/*)
2075+
LTS="${provided_version##lts/}"
2076+
provided_version=''
2077+
;;
2078+
esac
2079+
2080+
VERSION="$(NVM_VERSION_ONLY=true NVM_LTS="${LTS-}" nvm_remote_version "${provided_version}")"
20702081

20712082
if [ "_$VERSION" = "_N/A" ]; then
20722083
local LTS_MSG
@@ -2200,9 +2211,12 @@ nvm() {
22002211
PATTERN="${1-}"
22012212
case "${PATTERN-}" in
22022213
--) ;;
2203-
--lts)
2214+
--lts | 'lts/*')
22042215
VERSION="$(nvm_match_version "lts/*")"
22052216
;;
2217+
lts/*)
2218+
VERSION="$(nvm_match_version "lts/${PATTERN##lts/}")"
2219+
;;
22062220
--lts=*)
22072221
VERSION="$(nvm_match_version "lts/${PATTERN##--lts=}")"
22082222
;;
@@ -2614,7 +2628,10 @@ nvm() {
26142628
do
26152629
case "${1-}" in
26162630
--) ;;
2617-
--lts) LTS='*' ;;
2631+
--lts)
2632+
LTS='*'
2633+
NVM_FLAVOR="${NVM_NODE_PREFIX}"
2634+
;;
26182635
--lts=*)
26192636
LTS="${1##--lts=}"
26202637
NVM_FLAVOR="${NVM_NODE_PREFIX}"
@@ -2625,14 +2642,24 @@ nvm() {
26252642
return 55;
26262643
;;
26272644
*)
2628-
if [ -z "$PATTERN" ]; then
2645+
if [ -z "${PATTERN-}" ]; then
26292646
PATTERN="${1-}"
2630-
if [ -z "$NVM_FLAVOR" ]; then
2631-
case "_$PATTERN" in
2632-
"_$NVM_IOJS_PREFIX" | "_$NVM_NODE_PREFIX")
2633-
NVM_FLAVOR="$PATTERN"
2647+
if [ -z "${NVM_FLAVOR-}" ]; then
2648+
case "${PATTERN}" in
2649+
"${NVM_IOJS_PREFIX}" | "${NVM_NODE_PREFIX}")
2650+
NVM_FLAVOR="${PATTERN}"
26342651
PATTERN=""
26352652
;;
2653+
'lts/*')
2654+
LTS='*'
2655+
PATTERN=''
2656+
NVM_FLAVOR="${NVM_NODE_PREFIX}"
2657+
;;
2658+
lts/*)
2659+
LTS="${PATTERN##lts/}"
2660+
PATTERN=''
2661+
NVM_FLAVOR="${NVM_NODE_PREFIX}"
2662+
;;
26362663
esac
26372664
fi
26382665
fi
@@ -2879,6 +2906,16 @@ $NVM_LS_REMOTE_POST_MERGED_OUTPUT" | nvm_grep -v "N/A" | command sed '/^$/d')"
28792906
esac
28802907
shift
28812908
done
2909+
case "${PATTERN}" in
2910+
'lts/*')
2911+
NVM_LTS='*'
2912+
unset PATTERN
2913+
;;
2914+
lts/*)
2915+
NVM_LTS="${PATTERN##lts/}"
2916+
unset PATTERN
2917+
;;
2918+
esac
28822919
NVM_VERSION_ONLY=true NVM_LTS="${NVM_LTS-}" nvm_remote_version "${PATTERN:-node}"
28832920
;;
28842921
"--version" )

test/fast/Unit tests/nvm version-remote

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,14 @@ OUTPUT="$(nvm version-remote --lts=argon foo)"
3232
EXPECTED_OUTPUT='NVM_VERSION_ONLY:true,NVM_LTS:argon,PATTERN:foo'
3333
[ "${OUTPUT}" = "${EXPECTED_OUTPUT}" ] || die "\`nvm version-remote --lts=argon foo\` called nvm_remote_version with >${OUTPUT}<, expected >${EXPECTED_OUTPUT}<"
3434

35+
OUTPUT="$(nvm version-remote lts/foo)"
36+
EXPECTED_OUTPUT='NVM_VERSION_ONLY:true,NVM_LTS:foo,PATTERN:'
37+
[ "${OUTPUT}" = "${EXPECTED_OUTPUT}" ] || die "\`nvm version-remote lts/foo\` called nvm_remote_version with >${OUTPUT}<, expected >${EXPECTED_OUTPUT}<"
38+
39+
OUTPUT="$(nvm version-remote 'lts/*')"
40+
EXPECTED_OUTPUT='NVM_VERSION_ONLY:true,NVM_LTS:*,PATTERN:'
41+
[ "${OUTPUT}" = "${EXPECTED_OUTPUT}" ] || die "\`nvm version-remote lts/*\` called nvm_remote_version with >${OUTPUT}<, expected >${EXPECTED_OUTPUT}<"
42+
3543
set +ex # needed for stderr
3644
OUTPUT="$(nvm version-remote --foo bar 2>&1)"
3745
set -ex

0 commit comments

Comments
 (0)