Skip to content

Commit 28444c5

Browse files
committed
show only versions newer than NVM_MIN_VER if set
1 parent 4e2a71b commit 28444c5

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

nvm.sh

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1733,12 +1733,14 @@ nvm_print_versions() {
17331733
fi
17341734

17351735
command awk \
1736-
-v remote_versions="$(printf '%s' "${1-}" | tr '\n' '|')" \
1736+
-v remote_versions="$(printf '%s' "${1-}" | tr '\n' '|')" -v min_ver="${NVM_MIN_VER:-v0}" \
17371737
-v installed_versions="$(nvm_ls | tr '\n' '|')" -v current="$NVM_CURRENT" \
17381738
-v installed_color="$INSTALLED_COLOR" -v system_color="$SYSTEM_COLOR" \
17391739
-v current_color="$CURRENT_COLOR" -v default_color="$DEFAULT_COLOR" \
17401740
-v old_lts_color="$DEFAULT_COLOR" -v has_colors="$NVM_HAS_COLORS" '
17411741
function alen(arr, i, len) { len=0; for(i in arr) len++; return len; }
1742+
function v2a(v, a, s) { s=v; sub(/^(iojs-)?v/, "", s); split(s, a, "."); }
1743+
function comp(v1,v2,d,a1,a2,i) { v2a(v1,a1); v2a(v2,a2); for(i in a1) d[i] = a1[i] - a2[i]; for(i in d) { if(d[i] != 0) return d[i]}; return 0; }
17421744
BEGIN {
17431745
fmt_installed = has_colors ? (installed_color ? "\033[" installed_color "%15s\033[0m" : "%15s") : "%15s *";
17441746
fmt_system = has_colors ? (system_color ? "\033[" system_color "%15s\033[0m" : "%15s") : "%15s *";
@@ -1753,13 +1755,15 @@ BEGIN {
17531755
split(remote_versions, lines, "|");
17541756
split(installed_versions, installed, "|");
17551757
rows = alen(lines);
1756-
1757-
for (n = 1; n <= rows; n++) {
1758+
filter = (min_ver != "v0");
1759+
for (m = n = 1; n <= rows; n++) {
17581760
split(lines[n], fields, "[[:blank:]]+");
17591761
cols = alen(fields);
17601762
version = fields[1];
1761-
is_installed = 0;
1763+
if (filter && comp(version, min_ver) < 0) continue;
17621764
1765+
filter = 0;
1766+
is_installed = 0;
17631767
for (i in installed) {
17641768
if (version == installed[i]) {
17651769
is_installed = 1;
@@ -1776,8 +1780,7 @@ BEGIN {
17761780
fmt_version = fmt_installed;
17771781
}
17781782
1779-
padding = (!has_colors && is_installed) ? "" : " ";
1780-
1783+
padding = (is_installed && !has_colors) ? "" : " ";
17811784
if (cols == 1) {
17821785
formatted = sprintf(fmt_version, version);
17831786
} else if (cols == 2) {
@@ -1786,11 +1789,11 @@ BEGIN {
17861789
formatted = sprintf((fmt_version padding fmt_latest_lts), version, fields[2]);
17871790
}
17881791
1789-
output[n] = formatted;
1792+
output[m++] = formatted;
17901793
}
17911794
1792-
for (n = 1; n <= rows; n++) {
1793-
print output[n]
1795+
for (m in output) {
1796+
print output[m]
17941797
}
17951798
17961799
exit

0 commit comments

Comments
 (0)