Compare commits
18 Commits
v0.39.6
...
block_iojs
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
663c9968cb | ||
|
|
1fd0c8ca90 | ||
|
|
762f9ef9d1 | ||
|
|
e597bb208e | ||
|
|
aa427ad396 | ||
|
|
c20db2ab86 | ||
|
|
29dce5edfd | ||
|
|
95081f0bc2 | ||
|
|
1750b8d327 | ||
|
|
97093dc1b3 | ||
|
|
811c039e2b | ||
|
|
294ff9e3aa | ||
|
|
c24c3134a7 | ||
|
|
c82e7a6f62 | ||
|
|
4e2a71ba9b | ||
|
|
6c9cd2f2d1 | ||
|
|
bab86d5de5 | ||
|
|
d86f270438 |
@@ -26,3 +26,10 @@ insert_final_newline = off
|
||||
|
||||
[Makefile]
|
||||
indent_style = tab
|
||||
|
||||
[test/fixtures/nvmrc/**]
|
||||
indent_style = off
|
||||
insert_final_newline = off
|
||||
|
||||
[test/fixtures/actual/alias/empty]
|
||||
insert_final_newline = off
|
||||
|
||||
2
.github/THREAT_MODEL.md
vendored
2
.github/THREAT_MODEL.md
vendored
@@ -11,7 +11,7 @@ The aim of this section is to facilitate the identification of potential securit
|
||||
|
||||
The following assets are considered important for the `nvm` project:
|
||||
- `nvm` source code and project documentation
|
||||
- Underlying `nvm`` dependencies
|
||||
- Underlying `nvm` dependencies
|
||||
- `nvm` development infrastructure
|
||||
- `nvm` installed devices including servers
|
||||
|
||||
|
||||
16
.github/workflows/latest-npm.yml
vendored
16
.github/workflows/latest-npm.yml
vendored
@@ -2,6 +2,9 @@ name: 'Tests: `nvm install-latest-npm`'
|
||||
|
||||
on: [pull_request, push]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
matrix:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -9,11 +12,12 @@ jobs:
|
||||
latest: ${{ steps.set-matrix.outputs.requireds }}
|
||||
steps:
|
||||
- name: Harden Runner
|
||||
uses: step-security/harden-runner@v1
|
||||
uses: step-security/harden-runner@v2
|
||||
with:
|
||||
allowed-endpoints:
|
||||
iojs.org:443
|
||||
nodejs.org:443
|
||||
raw.githubusercontent.com:443
|
||||
- uses: ljharb/actions/node/matrix@main
|
||||
id: set-matrix
|
||||
with:
|
||||
@@ -46,7 +50,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Harden Runner
|
||||
uses: step-security/harden-runner@v1
|
||||
uses: step-security/harden-runner@v2
|
||||
with:
|
||||
allowed-endpoints:
|
||||
github.com:443
|
||||
@@ -54,7 +58,7 @@ jobs:
|
||||
iojs.org:443
|
||||
nodejs.org:443
|
||||
registry.npmjs.org:443
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- uses: ljharb/actions/node/install@main
|
||||
name: 'install node'
|
||||
with:
|
||||
@@ -74,8 +78,4 @@ jobs:
|
||||
needs: [nodes]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Harden Runner
|
||||
uses: step-security/harden-runner@v1
|
||||
with:
|
||||
egress-policy: block
|
||||
- run: 'echo tests completed'
|
||||
- run: true
|
||||
|
||||
27
.github/workflows/lint.yml
vendored
27
.github/workflows/lint.yml
vendored
@@ -2,20 +2,21 @@ name: 'Tests: linting'
|
||||
|
||||
on: [pull_request, push]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
eclint:
|
||||
permissions:
|
||||
contents: read
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: step-security/harden-runner@v1
|
||||
- uses: step-security/harden-runner@v2
|
||||
with:
|
||||
allowed-endpoints:
|
||||
github.com:443
|
||||
raw.githubusercontent.com:443
|
||||
nodejs.org:443
|
||||
registry.npmjs.org:443
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- uses: ljharb/actions/node/install@main
|
||||
name: 'nvm install ${{ matrix.node-version }} && npm install'
|
||||
with:
|
||||
@@ -23,11 +24,9 @@ jobs:
|
||||
- run: npm run eclint
|
||||
|
||||
dockerfile_lint:
|
||||
permissions:
|
||||
contents: read
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: step-security/harden-runner@v1
|
||||
- uses: step-security/harden-runner@v2
|
||||
with:
|
||||
allowed-endpoints:
|
||||
ghcr.io:443
|
||||
@@ -36,7 +35,7 @@ jobs:
|
||||
pkg-containers.githubusercontent.com:443
|
||||
nodejs.org:443
|
||||
registry.npmjs.org:443
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- uses: ljharb/actions/node/install@main
|
||||
name: 'nvm install ${{ matrix.node-version }} && npm install'
|
||||
with:
|
||||
@@ -44,18 +43,16 @@ jobs:
|
||||
- run: npm run dockerfile_lint
|
||||
|
||||
doctoc:
|
||||
permissions:
|
||||
contents: read
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: step-security/harden-runner@v1
|
||||
- uses: step-security/harden-runner@v2
|
||||
with:
|
||||
allowed-endpoints:
|
||||
github.com:443
|
||||
raw.githubusercontent.com:443
|
||||
nodejs.org:443
|
||||
registry.npmjs.org:443
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- uses: ljharb/actions/node/install@main
|
||||
name: 'nvm install ${{ matrix.node-version }} && npm install'
|
||||
with:
|
||||
@@ -63,15 +60,13 @@ jobs:
|
||||
- run: npm run doctoc:check
|
||||
|
||||
test_naming:
|
||||
permissions:
|
||||
contents: read
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: step-security/harden-runner@v1
|
||||
- uses: step-security/harden-runner@v2
|
||||
with:
|
||||
allowed-endpoints:
|
||||
github.com:443
|
||||
raw.githubusercontent.com:443
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- name: check tests filenames
|
||||
run: ./rename_test.sh --check
|
||||
|
||||
7
.github/workflows/rebase.yml
vendored
7
.github/workflows/rebase.yml
vendored
@@ -2,6 +2,9 @@ name: Automatic Rebase
|
||||
|
||||
on: [pull_request_target]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
_:
|
||||
permissions:
|
||||
@@ -12,12 +15,12 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Harden Runner
|
||||
uses: step-security/harden-runner@v1
|
||||
uses: step-security/harden-runner@v2
|
||||
with:
|
||||
allowed-endpoints:
|
||||
api.github.com:443
|
||||
github.com:443
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- uses: ljharb/rebase@master
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
14
.github/workflows/release.yml
vendored
14
.github/workflows/release.yml
vendored
@@ -2,20 +2,24 @@ name: 'Tests: release process'
|
||||
|
||||
on: [pull_request, push]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
release:
|
||||
permissions:
|
||||
contents: read
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Harden Runner
|
||||
uses: step-security/harden-runner@v1
|
||||
uses: step-security/harden-runner@v2
|
||||
with:
|
||||
allowed-endpoints:
|
||||
github.com:443
|
||||
api.github.com:443
|
||||
objects.githubusercontent.com:443
|
||||
raw.githubusercontent.com:443
|
||||
registry.npmjs.org:443
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: "14"
|
||||
- run: npm install
|
||||
|
||||
5
.github/workflows/require-allow-edits.yml
vendored
5
.github/workflows/require-allow-edits.yml
vendored
@@ -2,6 +2,9 @@ name: Require “Allow Edits”
|
||||
|
||||
on: [pull_request_target]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
_:
|
||||
permissions:
|
||||
@@ -12,7 +15,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Harden Runner
|
||||
uses: step-security/harden-runner@v1
|
||||
uses: step-security/harden-runner@v2
|
||||
with:
|
||||
allowed-endpoints:
|
||||
api.github.com:443
|
||||
|
||||
16
.github/workflows/shellcheck.yml
vendored
16
.github/workflows/shellcheck.yml
vendored
@@ -2,10 +2,11 @@ name: 'Tests: shellcheck'
|
||||
|
||||
on: [pull_request, push]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
shellcheck_matrix:
|
||||
permissions:
|
||||
contents: read
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
@@ -27,13 +28,14 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Harden Runner
|
||||
uses: step-security/harden-runner@v1
|
||||
uses: step-security/harden-runner@v2
|
||||
with:
|
||||
allowed-endpoints:
|
||||
ghcr.io:443
|
||||
github.com:443
|
||||
pkg-containers.githubusercontent.com:443
|
||||
- uses: actions/checkout@v3
|
||||
formulae.brew.sh:443
|
||||
- uses: actions/checkout@v4
|
||||
- name: Set up Homebrew
|
||||
uses: Homebrew/actions/setup-homebrew@master
|
||||
- name: Install latest shellcheck
|
||||
@@ -51,8 +53,4 @@ jobs:
|
||||
needs: [shellcheck_matrix]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Harden Runner
|
||||
uses: step-security/harden-runner@v1
|
||||
with:
|
||||
egress-policy: block
|
||||
- run: 'echo tests completed'
|
||||
- run: true
|
||||
|
||||
11
.github/workflows/tests.yml
vendored
11
.github/workflows/tests.yml
vendored
@@ -2,6 +2,9 @@ name: urchin tests
|
||||
|
||||
on: [push]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
tests:
|
||||
permissions:
|
||||
@@ -26,7 +29,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Harden Runner
|
||||
uses: step-security/harden-runner@v1
|
||||
uses: step-security/harden-runner@v2
|
||||
with:
|
||||
allowed-endpoints:
|
||||
github.com:443
|
||||
@@ -34,7 +37,7 @@ jobs:
|
||||
raw.githubusercontent.com:443
|
||||
nodejs.org:443
|
||||
iojs.org:443
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- run: sudo ${{ matrix.shell }} --version 2> /dev/null || dpkg -s ${{ matrix.shell }} 2> /dev/null || which ${{ matrix.shell }}
|
||||
- run: curl --version
|
||||
- run: wget --version
|
||||
@@ -49,8 +52,10 @@ jobs:
|
||||
- run: make TERM=xterm-256color TEST_SUITE="${{ matrix.suite }}" SHELL="${{ matrix.shell }}" URCHIN="$(npx which urchin)" test-${{ matrix.shell }}
|
||||
|
||||
nvm:
|
||||
permissions:
|
||||
contents: none
|
||||
name: 'all test suites, all shells'
|
||||
needs: [tests]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- run: 'echo tests completed'
|
||||
- run: true
|
||||
|
||||
9
.github/workflows/toc.yml
vendored
9
.github/workflows/toc.yml
vendored
@@ -2,6 +2,9 @@ name: update readme TOC
|
||||
|
||||
on: [push]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
_:
|
||||
permissions:
|
||||
@@ -12,12 +15,12 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Harden Runner
|
||||
uses: step-security/harden-runner@v1
|
||||
uses: step-security/harden-runner@v2
|
||||
with:
|
||||
allowed-endpoints:
|
||||
github.com:443
|
||||
registry.npmjs.org:443
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
# https://github.com/actions/checkout/issues/217#issue-599945005
|
||||
# pulls all commits (needed for lerna / semantic release to correctly version)
|
||||
@@ -25,7 +28,7 @@ jobs:
|
||||
|
||||
# pulls all tags (needed for lerna / semantic release to correctly version)
|
||||
- run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
|
||||
- uses: actions/setup-node@v3
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '16'
|
||||
- run: npm install
|
||||
|
||||
9
.github/workflows/windows-npm.yml
vendored
9
.github/workflows/windows-npm.yml
vendored
@@ -2,6 +2,9 @@ name: 'Tests on Windows: `nvm install`'
|
||||
|
||||
on: [pull_request, push]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
env:
|
||||
NVM_INSTALL_GITHUB_REPO: ${{ github.repository }}
|
||||
NVM_INSTALL_VERSION: ${{ github.sha }}
|
||||
@@ -123,7 +126,7 @@ jobs:
|
||||
- ''
|
||||
- 'script'
|
||||
steps:
|
||||
- uses: Vampire/setup-wsl@v2
|
||||
- uses: Vampire/setup-wsl@v3
|
||||
with:
|
||||
distribution: ${{ matrix.wsl-distrib }}
|
||||
additional-packages: bash git curl ca-certificates wget
|
||||
@@ -166,7 +169,7 @@ jobs:
|
||||
- ''
|
||||
- 'script'
|
||||
steps:
|
||||
- uses: Vampire/setup-wsl@v2
|
||||
- uses: Vampire/setup-wsl@v3
|
||||
with:
|
||||
distribution: ${{ matrix.wsl-distrib }}
|
||||
additional-packages: bash git curl ca-certificates wget
|
||||
@@ -187,4 +190,4 @@ jobs:
|
||||
needs: [wsl_matrix, wsl_matrix_unofficial, cygwin_matrix, msys_matrix, msys_fail_install]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- run: 'echo tests completed'
|
||||
- run: true
|
||||
|
||||
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
[submodule "test/fixtures/nvmrc"]
|
||||
path = test/fixtures/nvmrc
|
||||
url = git@github.com:nvm-sh/nvmrc.git
|
||||
13
.travis.yml
13
.travis.yml
@@ -8,6 +8,12 @@ addons:
|
||||
# - gcc-4.8
|
||||
# - g++-4.8
|
||||
|
||||
# https://gist.github.com/iedemam/9830045
|
||||
git:
|
||||
submodules: false
|
||||
|
||||
group: previous
|
||||
|
||||
cache:
|
||||
ccache: true
|
||||
directories:
|
||||
@@ -16,6 +22,11 @@ cache:
|
||||
before_install:
|
||||
- sudo sed -i 's/mozilla\/DST_Root_CA_X3.crt/!mozilla\/DST_Root_CA_X3.crt/g' /etc/ca-certificates.conf
|
||||
- sudo update-ca-certificates -f
|
||||
|
||||
# https://gist.github.com/iedemam/9830045
|
||||
- sed -i 's/git@github.com:/https:\/\/github.com\//' .gitmodules
|
||||
- git submodule update --init --recursive
|
||||
|
||||
- $SHELL --version 2> /dev/null || dpkg -s $SHELL 2> /dev/null || which $SHELL
|
||||
- curl --version
|
||||
- wget --version
|
||||
@@ -23,7 +34,7 @@ before_install:
|
||||
- zsh --version
|
||||
- dpkg -s dash | grep ^Version | awk '{print $2}'
|
||||
# install python
|
||||
- pyenv install 2.7.18
|
||||
- pyenv local 2.7.18 || pyenv install 2.7.18
|
||||
- pyenv local 2.7.18 || echo 'pyenv failed'
|
||||
- python -V
|
||||
install:
|
||||
|
||||
45
README.md
45
README.md
@@ -6,7 +6,7 @@
|
||||
</a>
|
||||
|
||||
|
||||
# Node Version Manager [][3] [][4] [](https://bestpractices.coreinfrastructure.org/projects/684)
|
||||
# Node Version Manager [][3] [][4] [](https://bestpractices.dev/projects/684)
|
||||
|
||||
<!-- To update this table of contents, ensure you have run `npm install` then `npm run doctoc` -->
|
||||
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
|
||||
@@ -99,10 +99,10 @@ nvm is a version manager for [node.js](https://nodejs.org/en/), designed to be i
|
||||
|
||||
To **install** or **update** nvm, you should run the [install script][2]. To do that, you may either download and run the script manually, or use the following cURL or Wget command:
|
||||
```sh
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.6/install.sh | bash
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
|
||||
```
|
||||
```sh
|
||||
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.6/install.sh | bash
|
||||
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
|
||||
```
|
||||
|
||||
Running either of the above commands downloads a script and runs it. The script clones the nvm repository to `~/.nvm`, and attempts to add the source lines from the snippet below to the correct profile file (`~/.bash_profile`, `~/.zshrc`, `~/.profile`, or `~/.bashrc`).
|
||||
@@ -124,7 +124,7 @@ Eg: `curl ... | NVM_DIR="path/to/nvm"`. Ensure that the `NVM_DIR` does not conta
|
||||
|
||||
- The installer can use `git`, `curl`, or `wget` to download `nvm`, whichever is available.
|
||||
|
||||
- You can instruct the installer to not edit your shell config (for example if you already get completions via a [zsh nvm plugin](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/nvm)) by setting `PROFILE=/dev/null` before running the `install.sh` script. Here's an example one-line command to do that: `PROFILE=/dev/null bash -c 'curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.6/install.sh | bash'`
|
||||
- You can instruct the installer to not edit your shell config (for example if you already get completions via a [zsh nvm plugin](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/nvm)) by setting `PROFILE=/dev/null` before running the `install.sh` script. Here's an example one-line command to do that: `PROFILE=/dev/null bash -c 'curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash'`
|
||||
|
||||
#### Troubleshooting on Linux
|
||||
|
||||
@@ -172,7 +172,7 @@ You can use a task:
|
||||
```yaml
|
||||
- name: Install nvm
|
||||
ansible.builtin.shell: >
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.6/install.sh | bash
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
|
||||
args:
|
||||
creates: "{{ ansible_env.HOME }}/.nvm/nvm.sh"
|
||||
```
|
||||
@@ -234,7 +234,7 @@ If you have `git` installed (requires git v1.7.10+):
|
||||
|
||||
1. clone this repo in the root of your user profile
|
||||
- `cd ~/` from anywhere then `git clone https://github.com/nvm-sh/nvm.git .nvm`
|
||||
1. `cd ~/.nvm` and check out the latest version with `git checkout v0.39.6`
|
||||
1. `cd ~/.nvm` and check out the latest version with `git checkout v0.39.7`
|
||||
1. activate `nvm` by sourcing it from your shell: `. ./nvm.sh`
|
||||
|
||||
Now add these lines to your `~/.bashrc`, `~/.profile`, or `~/.zshrc` file to have it automatically sourced upon login:
|
||||
@@ -298,6 +298,13 @@ To install a specific version of node:
|
||||
nvm install 14.7.0 # or 16.3.0, 12.22.1, etc
|
||||
```
|
||||
|
||||
To set an alias:
|
||||
|
||||
```sh
|
||||
nvm alias my_alias v14.4.0
|
||||
```
|
||||
Make sure that your alias does not contain any spaces or slashes.
|
||||
|
||||
The first version installed becomes the default. New shells will start with the default version of node (e.g., `nvm alias default`).
|
||||
|
||||
You can list available versions using `ls-remote`:
|
||||
@@ -563,7 +570,11 @@ Now using node v5.9.1 (npm v3.7.3)
|
||||
|
||||
`nvm use` et. al. will traverse directory structure upwards from the current directory looking for the `.nvmrc` file. In other words, running `nvm use` et. al. in any subdirectory of a directory with an `.nvmrc` will result in that `.nvmrc` being utilized.
|
||||
|
||||
The contents of a `.nvmrc` file **must** be the `<version>` (as described by `nvm --help`) followed by a newline. No trailing spaces are allowed, and the trailing newline is required.
|
||||
The contents of a `.nvmrc` file **must** contain precisely one `<version>` (as described by `nvm --help`) followed by a newline. `.nvmrc` files may also have comments. The comment delimiter is `#`, and it and any text after it, as well as blank lines, and leading and trailing white space, will be ignored when parsing.
|
||||
|
||||
Key/value pairs using `=` are also allowed and ignored, but are reserved for future use, and may cause validation errors in the future.
|
||||
|
||||
Run [`npx nvmrc`](https://npmjs.com/nvmrc) to validate an `.nvmrc` file. If that tool’s results do not agree with nvm, one or the other has a bug - please file an issue.
|
||||
|
||||
### Deeper Shell Integration
|
||||
|
||||
@@ -822,13 +833,13 @@ If installing nvm on Alpine Linux *is* still what you want or need to do, you sh
|
||||
### Alpine Linux 3.13+
|
||||
```sh
|
||||
apk add -U curl bash ca-certificates openssl ncurses coreutils python3 make gcc g++ libgcc linux-headers grep util-linux binutils findutils
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.6/install.sh | bash
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
|
||||
```
|
||||
|
||||
### Alpine Linux 3.5 - 3.12
|
||||
```sh
|
||||
apk add -U curl bash ca-certificates openssl ncurses coreutils python2 make gcc g++ libgcc linux-headers grep util-linux binutils findutils
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.6/install.sh | bash
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
|
||||
```
|
||||
|
||||
_Note: Alpine 3.5 can only install NodeJS versions up to v6.9.5, Alpine 3.6 can only install versions up to v6.10.3, Alpine 3.7 installs versions up to v8.9.3, Alpine 3.8 installs versions up to v8.14.0, Alpine 3.9 installs versions up to v10.19.0, Alpine 3.10 installs versions up to v10.24.1, Alpine 3.11 installs versions up to v12.22.6, Alpine 3.12 installs versions up to v12.22.12, Alpine 3.13 & 3.14 install versions up to v14.20.0, Alpine 3.15 & 3.16 install versions up to v16.16.0 (**These are all versions on the main branch**). Alpine 3.5 - 3.12 required the package `python2` to build NodeJS, as they are older versions to build. Alpine 3.13+ requires `python3` to successfully build newer NodeJS versions, but you can use `python2` with Alpine 3.13+ if you need to build versions of node supported in Alpine 3.5 - 3.15, you just need to specify what version of NodeJS you need to install in the package install script._
|
||||
@@ -844,8 +855,12 @@ As a potential alternative, @mhart (a Node contributor) has some [Docker images
|
||||
|
||||
To remove `nvm` manually, execute the following:
|
||||
|
||||
First, use `nvm unload` to remove the nvm command from your terminal session and delete the installation directory:
|
||||
|
||||
```sh
|
||||
$ rm -rf "$NVM_DIR"
|
||||
$ nvm_dir="${NVM_DIR:-~/.nvm}"
|
||||
$ nvm unload
|
||||
$ rm -rf "$nvm_dir"
|
||||
```
|
||||
|
||||
Edit `~/.bashrc` (or other shell resource config) and remove the lines below:
|
||||
@@ -927,9 +942,9 @@ You have to make sure that the user directory name in `$HOME` and the user direc
|
||||
To change the user directory and/or account name follow the instructions [here](https://support.apple.com/en-us/HT201548)
|
||||
|
||||
[1]: https://github.com/nvm-sh/nvm.git
|
||||
[2]: https://github.com/nvm-sh/nvm/blob/v0.39.6/install.sh
|
||||
[2]: https://github.com/nvm-sh/nvm/blob/v0.39.7/install.sh
|
||||
[3]: https://app.travis-ci.com/nvm-sh/nvm
|
||||
[4]: https://github.com/nvm-sh/nvm/releases/tag/v0.39.6
|
||||
[4]: https://github.com/nvm-sh/nvm/releases/tag/v0.39.7
|
||||
[Urchin]: https://git.sdf.org/tlevine/urchin
|
||||
[Fish]: https://fishshell.com
|
||||
|
||||
@@ -987,7 +1002,7 @@ Here's what you will need to do:
|
||||
If one of these broken versions is installed on your system, the above step will likely still succeed even if you didn't include the `--shared-zlib` flag.
|
||||
However, later, when you attempt to `npm install` something using your old version of node.js, you will see `incorrect data check` errors.
|
||||
If you want to avoid the possible hassle of dealing with this, include that flag.
|
||||
For more details, see [this issue](https://github.com/nodejs/node/issues/39313) and [this comment](https://github.com/nodejs/node/issues/39313#issuecomment-90.39.676)
|
||||
For more details, see [this issue](https://github.com/nodejs/node/issues/39313) and [this comment](https://github.com/nodejs/node/issues/39313#issuecomment-90.39.776)
|
||||
|
||||
- Exit back to your native shell.
|
||||
|
||||
@@ -1014,7 +1029,7 @@ Now you should be able to use node as usual.
|
||||
If you've encountered this error on WSL-2:
|
||||
|
||||
```sh
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.6/install.sh | bash
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
|
||||
% Total % Received % Xferd Average Speed Time Time Time Current
|
||||
Dload Upload Total Spent Left Speed
|
||||
0 0 0 0 0 0 0 0 --:--:-- 0:00:09 --:--:-- 0curl: (6) Could not resolve host: raw.githubusercontent.com
|
||||
@@ -1035,7 +1050,7 @@ This could simply be solved by running this in your root directory:
|
||||
sudo chattr +i /etc/resolv.conf
|
||||
```
|
||||
|
||||
This deletes your `resolv.conf` file that is automatically generated when u run WSL, creates a new file and puts `nameserver 8.8.8.8`, then creates a `wsl.conf` file and adds `[network]` and `generateResolveConf = false` to prevent auto-generation of that file.
|
||||
This deletes your `resolv.conf` file that is automatically generated when you run WSL, creates a new file and puts `nameserver 8.8.8.8`, then creates a `wsl.conf` file and adds `[network]` and `generateResolveConf = false` to prevent auto-generation of that file.
|
||||
|
||||
You can check the contents of the file by running:
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ nvm_install_dir() {
|
||||
}
|
||||
|
||||
nvm_latest_version() {
|
||||
nvm_echo "v0.39.6"
|
||||
nvm_echo "v0.39.7"
|
||||
}
|
||||
|
||||
nvm_profile_is_bash_or_zsh() {
|
||||
|
||||
106
nvm.sh
106
nvm.sh
@@ -467,7 +467,89 @@ nvm_find_nvmrc() {
|
||||
fi
|
||||
}
|
||||
|
||||
# Obtain nvm version from rc file
|
||||
nvm_nvmrc_invalid_msg() {
|
||||
local error_text
|
||||
error_text="invalid .nvmrc!
|
||||
all non-commented content (anything after # is a comment) must be either:
|
||||
- a single bare nvm-recognized version-ish
|
||||
- or, multiple distinct key-value pairs, each key/value separated by a single equals sign (=)
|
||||
|
||||
additionally, a single bare nvm-recognized version-ish must be present (after stripping comments)."
|
||||
|
||||
local warn_text
|
||||
warn_text="non-commented content parsed:
|
||||
${1}"
|
||||
|
||||
nvm_err "$(nvm_wrap_with_color_code r "${error_text}")
|
||||
|
||||
$(nvm_wrap_with_color_code y "${warn_text}")"
|
||||
}
|
||||
|
||||
nvm_process_nvmrc() {
|
||||
local NVMRC_PATH="$1"
|
||||
local lines
|
||||
local unpaired_line
|
||||
|
||||
lines=$(command sed 's/#.*//' "$NVMRC_PATH" | command sed 's/^[[:space:]]*//;s/[[:space:]]*$//' | nvm_grep -v '^$')
|
||||
|
||||
if [ -z "$lines" ]; then
|
||||
nvm_nvmrc_invalid_msg "${lines}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Initialize key-value storage
|
||||
local keys=''
|
||||
local values=''
|
||||
|
||||
while IFS= read -r line; do
|
||||
if [ -z "${line}" ]; then
|
||||
continue
|
||||
elif [ -z "${line%%=*}" ]; then
|
||||
if [ -n "${unpaired_line}" ]; then
|
||||
nvm_nvmrc_invalid_msg "${lines}"
|
||||
return 1
|
||||
fi
|
||||
unpaired_line="${line}"
|
||||
elif case "$line" in *'='*) true;; *) false;; esac; then
|
||||
key="${line%%=*}"
|
||||
value="${line#*=}"
|
||||
|
||||
# Trim whitespace around key and value
|
||||
key=$(nvm_echo "${key}" | command sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
|
||||
value=$(nvm_echo "${value}" | command sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
|
||||
|
||||
# Check for invalid key "node"
|
||||
if [ "${key}" = 'node' ]; then
|
||||
nvm_nvmrc_invalid_msg "${lines}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Check for duplicate keys
|
||||
if nvm_echo "${keys}" | nvm_grep -q -E "(^| )${key}( |$)"; then
|
||||
nvm_nvmrc_invalid_msg "${lines}"
|
||||
return 1
|
||||
fi
|
||||
keys="${keys} ${key}"
|
||||
values="${values} ${value}"
|
||||
else
|
||||
if [ -n "${unpaired_line}" ]; then
|
||||
nvm_nvmrc_invalid_msg "${lines}"
|
||||
return 1
|
||||
fi
|
||||
unpaired_line="${line}"
|
||||
fi
|
||||
done <<EOF
|
||||
$lines
|
||||
EOF
|
||||
|
||||
if [ -z "${unpaired_line}" ]; then
|
||||
nvm_nvmrc_invalid_msg "${lines}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
nvm_echo "${unpaired_line}"
|
||||
}
|
||||
|
||||
nvm_rc_version() {
|
||||
export NVM_RC_VERSION=''
|
||||
local NVMRC_PATH
|
||||
@@ -478,7 +560,12 @@ nvm_rc_version() {
|
||||
fi
|
||||
return 1
|
||||
fi
|
||||
NVM_RC_VERSION="$(command head -n 1 "${NVMRC_PATH}" | command tr -d '\r')" || command printf ''
|
||||
|
||||
|
||||
if ! NVM_RC_VERSION="$(nvm_process_nvmrc "${NVMRC_PATH}")"; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [ -z "${NVM_RC_VERSION}" ]; then
|
||||
if [ "${NVM_SILENT:-0}" -ne 1 ]; then
|
||||
nvm_err "Warning: empty .nvmrc file found at \"${NVMRC_PATH}\""
|
||||
@@ -678,6 +765,11 @@ nvm_remote_versions() {
|
||||
NVM_FLAVOR="${NVM_NODE_PREFIX}"
|
||||
unset PATTERN
|
||||
;;
|
||||
*)
|
||||
if [ "${NVM_IOJS_ORG_MIRROR-x}" = '' ]; then
|
||||
NVM_FLAVOR="${NVM_NODE_PREFIX}"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
if nvm_validate_implicit_alias "${PATTERN-}" 2>/dev/null; then
|
||||
@@ -3565,7 +3657,7 @@ nvm() {
|
||||
fi
|
||||
else
|
||||
export PATH="${NEWPATH}"
|
||||
command hash -r
|
||||
\hash -r
|
||||
if [ "${NVM_SILENT:-0}" -ne 1 ]; then
|
||||
nvm_echo "${NVM_DIR}/*/bin removed from \${PATH}"
|
||||
fi
|
||||
@@ -3697,7 +3789,7 @@ nvm() {
|
||||
export MANPATH
|
||||
fi
|
||||
export PATH
|
||||
command hash -r
|
||||
\hash -r
|
||||
export NVM_BIN="${NVM_VERSION_DIR}/bin"
|
||||
export NVM_INC="${NVM_VERSION_DIR}/include/node"
|
||||
if [ "${NVM_SYMLINK_CURRENT-}" = true ]; then
|
||||
@@ -4058,6 +4150,9 @@ nvm() {
|
||||
# so, unalias it.
|
||||
nvm unalias "${ALIAS}"
|
||||
return $?
|
||||
elif echo "${ALIAS}" | grep -q "#"; then
|
||||
nvm_err 'Aliases with a comment delimiter (#) are not supported.'
|
||||
return 1
|
||||
elif [ "${TARGET}" != '--' ]; then
|
||||
# a target was passed: create an alias
|
||||
if [ "${ALIAS#*\/}" != "${ALIAS}" ]; then
|
||||
@@ -4226,7 +4321,7 @@ nvm() {
|
||||
NVM_VERSION_ONLY=true NVM_LTS="${NVM_LTS-}" nvm_remote_version "${PATTERN:-node}"
|
||||
;;
|
||||
"--version" | "-v")
|
||||
nvm_echo '0.39.6'
|
||||
nvm_echo '0.39.7'
|
||||
;;
|
||||
"unload")
|
||||
nvm deactivate >/dev/null 2>&1
|
||||
@@ -4271,6 +4366,7 @@ nvm() {
|
||||
nvm_get_colors nvm_set_colors nvm_print_color_code nvm_wrap_with_color_code nvm_format_help_message_colors \
|
||||
nvm_echo_with_colors nvm_err_with_colors \
|
||||
nvm_get_artifact_compression nvm_install_binary_extract nvm_extract_tarball \
|
||||
nvm_process_nvmrc nvm_nvmrc_invalid_msg \
|
||||
>/dev/null 2>&1
|
||||
unset NVM_RC_VERSION NVM_NODEJS_ORG_MIRROR NVM_IOJS_ORG_MIRROR NVM_DIR \
|
||||
NVM_CD_FLAGS NVM_BIN NVM_INC NVM_MAKE_JOBS \
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "nvm",
|
||||
"version": "0.39.6",
|
||||
"version": "0.39.7",
|
||||
"description": "Node Version Manager - Simple bash script to manage multiple active node.js versions",
|
||||
"directories": {
|
||||
"test": "test"
|
||||
@@ -43,9 +43,9 @@
|
||||
"dockerfile_lint": "^0.3.4",
|
||||
"doctoc": "^2.2.1",
|
||||
"eclint": "^2.8.1",
|
||||
"markdown-link-check": "^3.11.2",
|
||||
"markdown-link-check": "^3.12.2",
|
||||
"replace": "^1.2.2",
|
||||
"semver": "^7.5.4",
|
||||
"semver": "^7.6.2",
|
||||
"urchin": "^0.0.5"
|
||||
}
|
||||
}
|
||||
|
||||
144
test/common.sh
144
test/common.sh
@@ -101,3 +101,147 @@ watch() {
|
||||
kill %2;
|
||||
return $EXIT_CODE
|
||||
}
|
||||
|
||||
|
||||
# JSON parsing from https://gist.github.com/assaf/ee377a186371e2e269a7
|
||||
nvm_json_throw() {
|
||||
nvm_err "$*"
|
||||
exit 1
|
||||
}
|
||||
|
||||
nvm_json_awk_egrep() {
|
||||
local pattern_string
|
||||
pattern_string="${1}"
|
||||
|
||||
awk '{
|
||||
while ($0) {
|
||||
start=match($0, pattern);
|
||||
token=substr($0, start, RLENGTH);
|
||||
print token;
|
||||
$0=substr($0, start+RLENGTH);
|
||||
}
|
||||
}' "pattern=${pattern_string}"
|
||||
}
|
||||
|
||||
nvm_json_tokenize() {
|
||||
local GREP
|
||||
GREP='grep -Eao'
|
||||
|
||||
local ESCAPE
|
||||
local CHAR
|
||||
|
||||
# if echo "test string" | grep -Eo "test" > /dev/null 2>&1; then
|
||||
# ESCAPE='(\\[^u[:cntrl:]]|\\u[0-9a-fA-F]{4})'
|
||||
# CHAR='[^[:cntrl:]"\\]'
|
||||
# else
|
||||
GREP=nvm_json_awk_egrep
|
||||
ESCAPE='(\\\\[^u[:cntrl:]]|\\u[0-9a-fA-F]{4})'
|
||||
CHAR='[^[:cntrl:]"\\\\]'
|
||||
# fi
|
||||
|
||||
local STRING
|
||||
STRING="\"${CHAR}*(${ESCAPE}${CHAR}*)*\""
|
||||
local NUMBER
|
||||
NUMBER='-?(0|[1-9][0-9]*)([.][0-9]*)?([eE][+-]?[0-9]*)?'
|
||||
local KEYWORD
|
||||
KEYWORD='null|false|true'
|
||||
local SPACE
|
||||
SPACE='[[:space:]]+'
|
||||
|
||||
$GREP "${STRING}|${NUMBER}|${KEYWORD}|${SPACE}|." | TERM=dumb grep -Ev "^${SPACE}$"
|
||||
}
|
||||
|
||||
_json_parse_array() {
|
||||
local index=0
|
||||
local ary=''
|
||||
read -r token
|
||||
case "$token" in
|
||||
']') ;;
|
||||
*)
|
||||
while :; do
|
||||
_json_parse_value "${1}" "${index}"
|
||||
index=$((index+1))
|
||||
ary="${ary}${value}"
|
||||
read -r token
|
||||
case "${token}" in
|
||||
']') break ;;
|
||||
',') ary="${ary}," ;;
|
||||
*) nvm_json_throw "EXPECTED , or ] GOT ${token:-EOF}" ;;
|
||||
esac
|
||||
read -r token
|
||||
done
|
||||
;;
|
||||
esac
|
||||
:
|
||||
}
|
||||
|
||||
_json_parse_object() {
|
||||
local key
|
||||
local obj=''
|
||||
read -r token
|
||||
case "$token" in
|
||||
'}') ;;
|
||||
*)
|
||||
while :; do
|
||||
case "${token}" in
|
||||
'"'*'"') key="${token}" ;;
|
||||
*) nvm_json_throw "EXPECTED string GOT ${token:-EOF}" ;;
|
||||
esac
|
||||
read -r token
|
||||
case "${token}" in
|
||||
':') ;;
|
||||
*) nvm_json_throw "EXPECTED : GOT ${token:-EOF}" ;;
|
||||
esac
|
||||
read -r token
|
||||
_json_parse_value "${1}" "${key}"
|
||||
obj="${obj}${key}:${value}"
|
||||
read -r token
|
||||
case "${token}" in
|
||||
'}') break ;;
|
||||
',') obj="${obj}," ;;
|
||||
*) nvm_json_throw "EXPECTED , or } GOT ${token:-EOF}" ;;
|
||||
esac
|
||||
read -r token
|
||||
done
|
||||
;;
|
||||
esac
|
||||
:
|
||||
}
|
||||
|
||||
_json_parse_value() {
|
||||
local jpath="${1:+$1,}$2"
|
||||
local isleaf=0
|
||||
local isempty=0
|
||||
local print=0
|
||||
|
||||
case "$token" in
|
||||
'{') _json_parse_object "${jpath}" ;;
|
||||
'[') _json_parse_array "${jpath}" ;;
|
||||
# At this point, the only valid single-character tokens are digits.
|
||||
''|[!0-9]) nvm_json_throw "EXPECTED value GOT >${token:-EOF}<" ;;
|
||||
*)
|
||||
value=$token
|
||||
isleaf=1
|
||||
[ "${value}" = '""' ] && isempty=1
|
||||
;;
|
||||
esac
|
||||
|
||||
[ "${value}" = '' ] && return
|
||||
[ "${isleaf}" -eq 1 ] && [ $isempty -eq 0 ] && print=1
|
||||
[ "${print}" -eq 1 ] && printf "[%s]\t%s\n" "${jpath}" "${value}"
|
||||
:
|
||||
}
|
||||
|
||||
_json_parse() {
|
||||
read -r token
|
||||
_json_parse_value
|
||||
read -r token
|
||||
case "${token}" in
|
||||
'') ;;
|
||||
*) nvm_json_throw "EXPECTED EOF GOT >${token}<" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
nvm_json_extract() {
|
||||
nvm_json_tokenize | _json_parse | grep -e "${1}" | awk '{print $2 $3}'
|
||||
}
|
||||
|
||||
26
test/fast/Aliases/'nvm alias' should not accept aliases with a hash
Executable file
26
test/fast/Aliases/'nvm alias' should not accept aliases with a hash
Executable file
@@ -0,0 +1,26 @@
|
||||
#!/bin/sh
|
||||
|
||||
\. ../../../nvm.sh
|
||||
|
||||
die () { echo "$@" ; exit 1; }
|
||||
|
||||
OUTPUT="$(nvm alias foo#bar baz 2>&1)"
|
||||
EXPECTED_OUTPUT="Aliases with a comment delimiter (#) are not supported."
|
||||
[ "$OUTPUT" = "$EXPECTED_OUTPUT" ] || die "trying to create an alias with a hash should fail with '$EXPECTED_OUTPUT', got '$OUTPUT'"
|
||||
|
||||
EXIT_CODE="$(nvm alias foo#bar baz >/dev/null 2>&1 ; echo $?)"
|
||||
[ "$EXIT_CODE" = "1" ] || die "trying to create an alias with a hash should fail with code 1, got '$EXIT_CODE'"
|
||||
|
||||
OUTPUT="$(nvm alias foo# baz 2>&1)"
|
||||
EXPECTED_OUTPUT="Aliases with a comment delimiter (#) are not supported."
|
||||
[ "$OUTPUT" = "$EXPECTED_OUTPUT" ] || die "trying to create an alias ending with a hash should fail with '$EXPECTED_OUTPUT', got '$OUTPUT'"
|
||||
|
||||
EXIT_CODE="$(nvm alias foo# baz >/dev/null 2>&1 ; echo $?)"
|
||||
[ "$EXIT_CODE" = "1" ] || die "trying to create an alias ending with a hash should fail with code 1, got '$EXIT_CODE'"
|
||||
|
||||
OUTPUT="$(nvm alias \#bar baz 2>&1)"
|
||||
EXPECTED_OUTPUT="Aliases with a comment delimiter (#) are not supported."
|
||||
[ "$OUTPUT" = "$EXPECTED_OUTPUT" ] || die "trying to create an alias starting with a hash should fail with '$EXPECTED_OUTPUT', got '$OUTPUT'"
|
||||
|
||||
EXIT_CODE="$(nvm alias \#bar baz >/dev/null 2>&1 ; echo $?)"
|
||||
[ "$EXIT_CODE" = "1" ] || die "trying to create an alias starting with a hash should fail with code 1, got '$EXIT_CODE'"
|
||||
34
test/fast/Unit tests/nvm_process_nvmrc
Executable file
34
test/fast/Unit tests/nvm_process_nvmrc
Executable file
@@ -0,0 +1,34 @@
|
||||
#!/bin/sh
|
||||
|
||||
die () { echo "$@" ; cleanup ; exit 1; }
|
||||
|
||||
cleanup() {
|
||||
echo 'cleaned up'
|
||||
}
|
||||
|
||||
\. ../../../nvm.sh
|
||||
|
||||
\. ../../common.sh
|
||||
|
||||
for f in ../../../test/fixtures/nvmrc/test/fixtures/valid/*; do
|
||||
STDOUT="$(nvm_process_nvmrc $f/.nvmrc 2>/dev/null)"
|
||||
EXIT_CODE="$(nvm_process_nvmrc $f/.nvmrc >/dev/null 2>/dev/null; echo $?)"
|
||||
|
||||
EXPECTED="$(nvm_json_extract node < "${f}/expected.json" | tr -d '"')"
|
||||
|
||||
[ "${EXIT_CODE}" = "0" ] || die "$(basename "${f}"): expected exit code of 0 but got ${EXIT_CODE}"
|
||||
|
||||
[ "${STDOUT}" = "${EXPECTED}" ] || die "$(basename "${f}"): expected STDOUT of \`${EXPECTED}\` but got \`${STDOUT}\`"
|
||||
done
|
||||
|
||||
for f in ../../../test/fixtures/nvmrc/test/fixtures/invalid/*; do
|
||||
STDOUT="$(nvm_process_nvmrc $f/.nvmrc 2>/dev/null)"
|
||||
STDERR="$(nvm_process_nvmrc $f/.nvmrc 2>&1 >/dev/null | awk '{if(NR > 8) print $0}' | strip_colors)"
|
||||
EXIT_CODE="$(nvm_process_nvmrc $f/.nvmrc >/dev/null 2>/dev/null; echo $?)"
|
||||
|
||||
EXPECTED="$(nvm_json_extract < "${f}/expected.json" | tr -d '"')"
|
||||
|
||||
[ "${EXIT_CODE}" != "0" ] || die "$(basename "${f}"): expected exit code of 'not 0' but got ${EXIT_CODE}"
|
||||
|
||||
[ "${STDERR}" = "${EXPECTED}" ] || die "$(basename "${f}"): expected STDERR of \`${EXPECTED}\` but got \`${STDERR}\`"
|
||||
done
|
||||
@@ -3,7 +3,7 @@
|
||||
die () { echo "$@" ; cleanup ; exit 1; }
|
||||
|
||||
cleanup() {
|
||||
unset -f nvm_ls_remote nvm_ls_remote_iojs
|
||||
unset -f nvm_ls_remote nvm_ls_remote_iojs nvm_ls_remote_node NVM_IOJS_ORG_MIRROR
|
||||
}
|
||||
|
||||
\. ../../../nvm.sh
|
||||
@@ -11,67 +11,72 @@ cleanup() {
|
||||
OUTPUT="$(nvm_remote_versions stable 2>&1)"
|
||||
EXPECTED_OUTPUT="Implicit aliases are not supported in nvm_remote_versions."
|
||||
EXIT_CODE="$(nvm_remote_versions stable >/dev/null 2>&1; echo $?)"
|
||||
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "implicit alias 'stable' did not error out with correct message, got $OUTPUT"
|
||||
[ "_$EXIT_CODE" = "_1" ] || die "implicit alias 'stable' did not exit with code 1, got $EXIT_CODE"
|
||||
[ "_${OUTPUT}" = "_${EXPECTED_OUTPUT}" ] || die "implicit alias 'stable' did not error out with correct message, got ${OUTPUT}"
|
||||
[ "_${EXIT_CODE}" = '_1' ] || die "implicit alias 'stable' did not exit with code 1, got ${EXIT_CODE}"
|
||||
|
||||
OUTPUT="$(nvm_remote_versions unstable 2>&1)"
|
||||
EXPECTED_OUTPUT="Implicit aliases are not supported in nvm_remote_versions."
|
||||
EXIT_CODE="$(nvm_remote_versions unstable >/dev/null 2>&1; echo $?)"
|
||||
[ "_$OUTPUT" = "_$EXPECTED_OUTPUT" ] || die "implicit alias 'unstable' did not error out with correct message, got $OUTPUT"
|
||||
[ "_$EXIT_CODE" = "_1" ] || die "implicit alias 'unstable' did not exit with code 1, got $EXIT_CODE"
|
||||
[ "_${OUTPUT}" = "_${EXPECTED_OUTPUT}" ] || die "implicit alias 'unstable' did not error out with correct message, got ${OUTPUT}"
|
||||
[ "_${EXIT_CODE}" = '_1' ] || die "implicit alias 'unstable' did not exit with code 1, got ${EXIT_CODE}"
|
||||
|
||||
nvm_ls_remote() {
|
||||
echo "N/A"
|
||||
}
|
||||
OUTPUT="$(nvm_remote_versions foo)"
|
||||
EXIT_CODE="$(nvm_remote_versions foo >/dev/null 2>&1 ; echo $?)"
|
||||
[ "_$OUTPUT" = "_N/A" ] || die "nonexistent version did not report N/A"
|
||||
[ "_$EXIT_CODE" = "_3" ] || die "nonexistent version did not exit with code 3, got $EXIT_CODE"
|
||||
[ "_${OUTPUT}" = "_N/A" ] || die "nonexistent version did not report N/A"
|
||||
[ "_${EXIT_CODE}" = '_3' ] || die "nonexistent version did not exit with code 3, got ${EXIT_CODE}"
|
||||
|
||||
nvm_ls_remote_iojs() {
|
||||
echo "N/A"
|
||||
}
|
||||
OUTPUT="$(nvm_remote_versions iojs-foo)"
|
||||
EXIT_CODE="$(nvm_remote_versions iojs-foo >/dev/null 2>&1 ; echo $?)"
|
||||
[ "_$OUTPUT" = "_N/A" ] || die "nonexistent version did not report N/A"
|
||||
[ "_$EXIT_CODE" = "_3" ] || die "nonexistent version did not exit with code 3, got $EXIT_CODE"
|
||||
[ "_${OUTPUT}" = "_N/A" ] || die "nonexistent version did not report N/A"
|
||||
[ "_${EXIT_CODE}" = '_3' ] || die "nonexistent version did not exit with code 3, got ${EXIT_CODE}"
|
||||
|
||||
|
||||
nvm_ls_remote() {
|
||||
nvm_ls_remote_node() {
|
||||
echo "test output"
|
||||
echo "more test output"
|
||||
echo "pattern received: _$1_"
|
||||
echo "pattern received: _${1}_"
|
||||
}
|
||||
nvm_ls_remote_iojs() {
|
||||
echo "test iojs output"
|
||||
echo "more iojs test output"
|
||||
echo "iojs pattern received: _$1_"
|
||||
echo "iojs pattern received: _${1}_"
|
||||
}
|
||||
|
||||
OUTPUT="$(nvm_remote_versions foo)"
|
||||
EXIT_CODE="$(nvm_remote_versions foo >/dev/null 2>&1 ; echo $?)"
|
||||
[ "_$OUTPUT" = "_$(nvm_ls_remote foo)
|
||||
[ "_${OUTPUT}" = "_$(nvm_ls_remote foo)
|
||||
$(nvm_ls_remote_iojs foo)" ] \
|
||||
|| die "nvm_remote_versions foo did not return contents of nvm_ls_remote foo combined with nvm_ls_remote_iojs foo; got $OUTPUT"
|
||||
[ "_$EXIT_CODE" = "_0" ] || die "nvm_remote_versions foo did not exit with 0, got $EXIT_CODE"
|
||||
|| die "nvm_remote_versions foo did not return contents of nvm_ls_remote foo combined with nvm_ls_remote_iojs foo; got ${OUTPUT}"
|
||||
[ "_${EXIT_CODE}" = '_0' ] || die "nvm_remote_versions foo did not exit with 0, got ${EXIT_CODE}"
|
||||
|
||||
OUTPUT="$(nvm_remote_versions node)"
|
||||
EXIT_CODE="$(nvm_remote_versions node >/dev/null 2>&1 ; echo $?)"
|
||||
[ "_$OUTPUT" = "_$(nvm_ls_remote)" ] \
|
||||
|| die "nvm_remote_versions node did not return contents of nvm_ls_remote; got $OUTPUT"
|
||||
[ "_$EXIT_CODE" = "_0" ] || die "nvm_remote_versions node did not exit with 0, got $EXIT_CODE"
|
||||
[ "_${OUTPUT}" = "_$(nvm_ls_remote)" ] \
|
||||
|| die "nvm_remote_versions node did not return contents of nvm_ls_remote; got ${OUTPUT}"
|
||||
[ "_${EXIT_CODE}" = '_0' ] || die "nvm_remote_versions node did not exit with 0, got ${EXIT_CODE}"
|
||||
|
||||
OUTPUT="$(nvm_remote_versions iojs-foo)"
|
||||
EXIT_CODE="$(nvm_remote_versions iojs-foo >/dev/null 2>&1 ; echo $?)"
|
||||
[ "_$OUTPUT" = "_$(nvm_ls_remote iojs-foo)
|
||||
[ "_${OUTPUT}" = "_$(nvm_ls_remote iojs-foo)
|
||||
$(nvm_ls_remote_iojs iojs-foo)" ] \
|
||||
|| die "nvm_remote_versions iojs-foo did not return contents of nvm_ls_remote iojs-foo combined with nvm_ls_remote_iojs iojs-foo; got $OUTPUT"
|
||||
[ "_$EXIT_CODE" = "_0" ] || die "nvm_remote_versions iojs-foo did not exit with 0, got $EXIT_CODE"
|
||||
|| die "nvm_remote_versions iojs-foo did not return contents of nvm_ls_remote iojs-foo combined with nvm_ls_remote_iojs iojs-foo; got ${OUTPUT}"
|
||||
[ "_${EXIT_CODE}" = '_0' ] || die "nvm_remote_versions iojs-foo did not exit with 0, got ${EXIT_CODE}"
|
||||
|
||||
OUTPUT="$(nvm_remote_versions iojs)"
|
||||
EXIT_CODE="$(nvm_remote_versions iojs >/dev/null 2>&1 ; echo $?)"
|
||||
[ "_$OUTPUT" = "_$(nvm_ls_remote_iojs)" ] \
|
||||
|| die "nvm_remote_versions iojs did not return contents of nvm_ls_remote_iojs; got $OUTPUT"
|
||||
[ "_$EXIT_CODE" = "_0" ] || die "nvm_remote_versions iojs did not exit with 0, got $EXIT_CODE"
|
||||
[ "_${OUTPUT}" = "_$(nvm_ls_remote_iojs)" ] \
|
||||
|| die "nvm_remote_versions iojs did not return contents of nvm_ls_remote_iojs; got ${OUTPUT}"
|
||||
[ "_${EXIT_CODE}" = '_0' ] || die "nvm_remote_versions iojs did not exit with 0, got ${EXIT_CODE}"
|
||||
|
||||
OUTPUT="$(NVM_IOJS_ORG_MIRROR= nvm_remote_versions)"
|
||||
EXIT_CODE="$(nvm_remote_versions iojs >/dev/null 2>&1 ; echo $?)"
|
||||
[ "_${OUTPUT}" = "_$(nvm_ls_remote_node)" ] \
|
||||
|| die "NVM_IOJS_ORG_MIRROR= nvm_remote_versions did not return contents of nvm_ls_remote_node; got ${OUTPUT}"
|
||||
[ "_${EXIT_CODE}" = '_0' ] || die "nvm_ls_remote_node= nvm_remote_versions did not exit with 0, got ${EXIT_CODE}"
|
||||
|
||||
cleanup
|
||||
|
||||
1
test/fixtures/nvmrc
vendored
Submodule
1
test/fixtures/nvmrc
vendored
Submodule
Submodule test/fixtures/nvmrc added at 0d325aa903
Reference in New Issue
Block a user