Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
e06bf90
Add new option to exclude EoL'ed versions
metalefty Jan 30, 2020
4577be8
Fix CI: Add `--list-exclude-eol` option to test
metalefty Jan 30, 2020
45ec7a7
ruby-build: add short option "-d" alias to "--definitions"
metalefty Feb 19, 2020
12b17e6
rbenv-install: show the short list by default
metalefty Feb 19, 2020
f9aae4e
Fix CI
metalefty Feb 19, 2020
92da5bb
-rc, -preview, -dev versions are also removed from short list
metalefty Mar 3, 2020
abaebf3
Fix CI
metalefty Mar 3, 2020
e67a940
do not exclude warn_unsupported versions in short list
metalefty Mar 6, 2020
67ac0b4
the short list now shows only latest stable versions
metalefty Mar 6, 2020
ad48baa
rename some functions to reflect more closely what it does
metalefty Mar 7, 2020
47c18a4
revert adding -d options alias for --definitions
metalefty Mar 7, 2020
b2c25b6
skip cd in to DEFINITION_DIR in subshell
metalefty Mar 7, 2020
c634b8e
Reword s/Try/Use/
metalefty Mar 7, 2020
66647e3
s/all built-in definitions/all available definitions/
metalefty Mar 19, 2020
c76bf6f
s/all available definitions/all local definitions/
metalefty Mar 20, 2020
a3b52e7
Update to OpenSSL 1.1.1f for Ruby 2.5+
jnozsc Mar 31, 2020
504f6e6
Merge pull request #1426 from jnozsc/openssl-1.1.1f
hsbt Apr 1, 2020
59a0774
mark ruby 2.5 to security maintenance
jnozsc Apr 9, 2020
1c83641
Merge pull request #1419 from metalefty/rewording
jasonkarns Apr 12, 2020
637ddf3
Merge pull request #1432 from jnozsc/ruby-2.5-warn_unsupported
hsbt Apr 13, 2020
43539b2
CVE-2020-1967, bump openssl to 1.1.1g
jnozsc Apr 21, 2020
3ef704e
Merge pull request #1436 from jnozsc/CVE-2020-1967
hsbt Apr 21, 2020
e2b65f5
Merge branch 'master' into list-exclude-eol
metalefty Apr 27, 2020
e5951b2
PR: #1419 should be applied also bin/rbenv-install
metalefty Apr 27, 2020
c27fc59
Add artichoke-dev to install the latest Artichoke nightly build
deepj Apr 29, 2020
61ca880
Replace one more "all available versions" with "all local versions"
metalefty May 2, 2020
12af1c3
Merge pull request #1438 from deepj/add-artichoke-dev
hsbt May 10, 2020
8cf308a
Merge pull request #1402 from metalefty/list-exclude-eol
eregon May 18, 2020
d00f2e9
ruby-build 20200518
eregon May 18, 2020
f29f5fa
Merge ruby-build tag 'v20200518'
jasonkarns May 12, 2024
78453e6
Rework filtering of unmaintained releases
jasonkarns May 24, 2024
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 28 additions & 1 deletion bin/node-build
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
# -v/--verbose Verbose mode: print compilation status to stdout
# -4/--ipv4 Resolve names to IPv4 addresses only
# -6/--ipv6 Resolve names to IPv6 addresses only
# --definitions List all built-in definitions
# --definitions List all local definitions
# -l/--list List latest stable releases for each Node
# --version Show version of node-build
#

Expand Down Expand Up @@ -837,13 +838,35 @@ usage() {
[ -z "$1" ] || exit "$1"
}

# list all versions
list_definitions() {
{ for DEFINITION_DIR in "${NODE_BUILD_DEFINITIONS[@]}"; do
[ -d "$DEFINITION_DIR" ] && ls "$DEFINITION_DIR"
done
} | sort_versions | uniq
}

# list only latest stable versions excluding RC, preview, dev and EoL'ed
list_maintained_versions() {
{ for DEFINITION_DIR in "${NODE_BUILD_DEFINITIONS[@]}"; do
[ -d "$DEFINITION_DIR" ] && \
grep -L -e warn_eol "$DEFINITION_DIR"/* 2>/dev/null | \
sed 's|.*/||'
done
} | exclude_prereleases | extract_latest_versions | sort_versions | uniq
}

exclude_prereleases() {
grep -vE -e'-(dev|next|rc|nightly)'
}

extract_latest_versions() {
sort_versions |
sed -E 'h; s/$/.z/; G; s/\n/ /' | # create 'index' for each major version
sed -E 's/([0-9]+).*z/\1/' | # truncate to major from first column
awk '{ latest[$1] =$2 } END{ for(key in latest) { print latest[key] } }'
}

sort_versions() {
sed -E 'h; s/[~^<>=[:space:]]//g; s/^([[:digit:]])/a.\1/g; s/[+-]/./g; s/$/.0.0.0.0/; G; s/\n/ /' \
| LC_ALL=C sort -t. -k 1,1 -k 2,2n -k 3,3n -k 4,4n -k 5,5n \
Expand Down Expand Up @@ -879,6 +902,10 @@ for option in "${OPTIONS[@]}"; do
"c" | "compile" )
SKIP_BINARY=true
;;
"l" | "list")
list_maintained_versions
exit 0
;;
"k" | "keep" )
KEEP_BUILD_PATH=true
;;
Expand Down
16 changes: 14 additions & 2 deletions bin/nodenv-install
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
# nodenv install -l|--list
# nodenv install --version
#
# -l/--list List all available versions
# -l/--list List latest stable versions for each Node
# -L/--list-all List all local versions
# -f/--force Install even if the version appears to be installed already
# -s/--skip-existing Skip if the version appears to be installed already
#
Expand Down Expand Up @@ -39,6 +40,7 @@ shopt -u nullglob
# Provide nodenv completions
if [ "$1" = "--complete" ]; then
echo --list
echo --list-all
echo --force
echo --skip-existing
echo --compile
Expand Down Expand Up @@ -83,7 +85,17 @@ for option in "${OPTIONS[@]}"; do
SKIP_BINARY="-c"
;;
"l" | "list" )
exec node-build --definitions
node-build --list
{
echo
echo "Only latest stable releases for each Node implementation are shown."
echo "Use 'nodenv install --list-all' to show all local versions."
} 1>&2
exit
;;
"L" | "list-all" )
node-build --definitions
exit
;;
"f" | "force" )
FORCE=true
Expand Down
75 changes: 74 additions & 1 deletion test/definitions.bats
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
load test_helper
NUM_DEFINITIONS="$(ls "$BATS_TEST_DIRNAME"/../share/node-build | wc -l)"

@test "list built-in definitions" {
@test "list all local definitions" {
run node-build --definitions
assert_success
assert_output --partial "0.10.40"
Expand Down Expand Up @@ -89,6 +89,79 @@ iojs-3.3.1"
assert_output "$expected"
}

@test "filtering previous Node versions" {
export NODE_BUILD_ROOT="$BATS_TMPDIR"
mkdir -p "${NODE_BUILD_ROOT}/share/node-build"

eol_versions="17.0.0
17.9.1
19.0.0
19.9.0
21.0.0
21.7.3
graal+ce_java11-19.3.0
graal+ce_java11-19.3.0.2
graal+ce_java8-19.3.0
graal+ce_java8-19.3.0.2
graal+ce_java11-19.3.1
graal+ce_java8-19.3.1
iojs-1.0.0
iojs-1.8.4
iojs-2.0.0
iojs-2.5.0
iojs-3.0.0
iojs-3.3.1"

pre_versions="9.x-dev
chakracore-nightly
graal+ce-1.0.0-rc1
"

all_versions=$eol_versions\
$pre_versions"
18.0.0
18.20.2
20.0.0
20.12.2
22.0.0
22.1.0
chakracore-8.1.2
chakracore-8.11.1
chakracore-10.0.0
chakracore-10.13.0
graal+ce-19.0.0
graal+ce-19.2.1
graal+ce_java11-19.3.0
graal+ce_java11-19.3.0.2
graal+ce_java8-19.3.0
graal+ce_java8-19.3.0.2
graal+ce_java11-19.3.1
graal+ce_java8-19.3.1
graal+ce_java11-20.0.0
graal+ce_java8-20.0.0"

expected="18.20.2
20.12.2
22.1.0
chakracore-8.11.1
chakracore-10.13.0
graal+ce-19.2.1
graal+ce_java11-20.0.0
graal+ce_java8-20.0.0"

for ver in $all_versions; do
touch "${NODE_BUILD_ROOT}/share/node-build/$ver"
done

for eol in $eol_versions; do
echo "warn_eol" >> "${NODE_BUILD_ROOT}/share/node-build/$eol"
done

run node-build --list
assert_success
assert_output "$expected"
}

@test "removing duplicate Node versions" {
export NODE_BUILD_ROOT="$BATS_TMPDIR"
export NODE_BUILD_DEFINITIONS="${NODE_BUILD_ROOT}/share/node-build"
Expand Down
5 changes: 3 additions & 2 deletions test/nodenv.bats
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ stub_node_build() {
stub_node_build \
"--definitions : echo 0.8.7 0.10.4 0.11.0 1.0.0 4.1.2 | tr ' ' $'\\n'"

run nodenv-install --list
run nodenv-install --list-all
assert_success
assert_output - <<OUT
0.8.7
Expand Down Expand Up @@ -126,7 +126,7 @@ OUT
mkdir -p "${NODENV_ROOT}/plugins/bar/share/node-build"
stub_node_build "--definitions : echo \$NODE_BUILD_DEFINITIONS | tr ':' $'\\n'"

run nodenv-install --list
run nodenv-install --list-all
assert_success
assert_output - <<OUT

Expand All @@ -144,6 +144,7 @@ OUT
assert_success
assert_output - <<OUT
--list
--list-all
--force
--skip-existing
--compile
Expand Down