From a81e16aee963f22f496b84ad0e0bfb06f84de9bc Mon Sep 17 00:00:00 2001 From: ryenus Date: Mon, 29 Jan 2024 22:34:53 +0800 Subject: [PATCH] do not skip installed versions --- nvm.sh | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/nvm.sh b/nvm.sh index 69d2f6dfa5..6911168e3e 100644 --- a/nvm.sh +++ b/nvm.sh @@ -1740,7 +1740,7 @@ nvm_print_versions() { -v old_lts_color="$DEFAULT_COLOR" -v has_colors="$NVM_HAS_COLORS" ' function alen(arr, i, len) { len=0; for(i in arr) len++; return len; } function v2a(v, a, s) { s=v; sub(/^(iojs-)?v/, "", s); split(s, a, "."); } -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; } +function vcmp(v1,v2,a1,a2,i,d) { v2a(v1,a1); v2a(v2,a2); for(i in a1) { d = a1[i] - a2[i]; if (d != 0) return d; } return 0; } BEGIN { fmt_installed = has_colors ? (installed_color ? "\033[" installed_color "%15s\033[0m" : "%15s") : "%15s *"; fmt_system = has_colors ? (system_color ? "\033[" system_color "%15s\033[0m" : "%15s") : "%15s *"; @@ -1755,14 +1755,12 @@ BEGIN { split(remote_versions, lines, "|"); split(installed_versions, installed, "|"); rows = alen(lines); - filter = (min_ver != "v0"); + filter_on = (min_ver != "v0"); for (m = n = 1; n <= rows; n++) { split(lines[n], fields, "[[:blank:]]+"); cols = alen(fields); version = fields[1]; - if (filter && comp(version, min_ver) < 0) continue; - filter = 0; is_installed = 0; for (i in installed) { if (version == installed[i]) { @@ -1771,6 +1769,14 @@ BEGIN { } } + if (filter_on && !is_installed) { + if (vcmp(version, min_ver) >= 0) { + filter_on = 0; + } else { + continue; + } + } + fmt_version = "%15s"; if (version == current) { fmt_version = fmt_current;