From 9168de0c21ccc41bdc818bd42fcdebc5f89b6714 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chlo=C3=A9?= Date: Mon, 23 Mar 2026 10:11:00 +0000 Subject: [PATCH] fix: address review feedback - Use $SDKMAN_DIR instead of hardcoded ~/.sdkman in network warning - Add hint to open a new terminal after changing config - Restore offline list fallback for 'sdk list ' when internet is unreachable (renamed to __sdkman_installed_versions) - Restore offline list test scenarios in service_unavailable.feature --- src/main/bash/sdkman-availability.sh | 4 ++- src/main/bash/sdkman-list.sh | 33 ++++++++++++++++++- .../features/service_unavailable.feature | 10 +++++- 3 files changed, 44 insertions(+), 3 deletions(-) diff --git a/src/main/bash/sdkman-availability.sh b/src/main/bash/sdkman-availability.sh index 30795c43..0a1cd5cf 100644 --- a/src/main/bash/sdkman-availability.sh +++ b/src/main/bash/sdkman-availability.sh @@ -48,10 +48,12 @@ function __sdkman_display_network_warning() { __sdkman_echo_red "==== INTERNET NOT REACHABLE! ===================================================" __sdkman_echo_red "" __sdkman_echo_red " Some functionality is disabled or only partially available." - __sdkman_echo_red " If this persists, disable the healthcheck in ~/.sdkman/etc/config:" + __sdkman_echo_red " If this persists, disable the healthcheck in ${SDKMAN_DIR}/etc/config:" __sdkman_echo_red "" __sdkman_echo_red " sdkman_healthcheck_enable=false" __sdkman_echo_red "" + __sdkman_echo_red " Then open a new terminal for the change to take effect." + __sdkman_echo_red "" __sdkman_echo_red "================================================================================" echo "" fi diff --git a/src/main/bash/sdkman-list.sh b/src/main/bash/sdkman-list.sh index 6ce4ddfd..b618d5d2 100644 --- a/src/main/bash/sdkman-list.sh +++ b/src/main/bash/sdkman-list.sh @@ -42,12 +42,43 @@ function __sdkman_list_versions() { __sdkman_determine_current_version "$candidate" if [[ "$SDKMAN_AVAILABLE" == "false" ]]; then - __sdkman_echo_red "This command is not available. Internet unreachable." + __sdkman_installed_versions "$candidate" "$versions_csv" else __sdkman_echo_paged "$(__sdkman_secure_curl "${SDKMAN_CANDIDATES_API}/candidates/${candidate}/${SDKMAN_PLATFORM}/versions/list?current=${CURRENT}&installed=${versions_csv}")" fi } +function __sdkman_installed_versions() { + local candidate versions_csv + + candidate="$1" + versions_csv="$2" + + __sdkman_echo_no_colour "--------------------------------------------------------------------------------" + __sdkman_echo_yellow "Offline: only showing installed ${candidate} versions" + __sdkman_echo_no_colour "--------------------------------------------------------------------------------" + + local versions=($(echo ${versions_csv//,/ })) + for ((i = ${#versions} - 1; i >= 0; i--)); do + if [[ -n "${versions[${i}]}" ]]; then + if [[ "${versions[${i}]}" == "$CURRENT" ]]; then + __sdkman_echo_no_colour " > ${versions[${i}]}" + else + __sdkman_echo_no_colour " * ${versions[${i}]}" + fi + fi + done + + if [[ -z "${versions[@]}" ]]; then + __sdkman_echo_yellow " None installed!" + fi + + __sdkman_echo_no_colour "--------------------------------------------------------------------------------" + __sdkman_echo_no_colour "* - installed " + __sdkman_echo_no_colour "> - currently in use " + __sdkman_echo_no_colour "--------------------------------------------------------------------------------" +} + function __sdkman_build_version_csv() { local candidate versions_csv diff --git a/src/test/resources/features/service_unavailable.feature b/src/test/resources/features/service_unavailable.feature index b53181fa..056d41c1 100644 --- a/src/test/resources/features/service_unavailable.feature +++ b/src/test/resources/features/service_unavailable.feature @@ -11,7 +11,15 @@ Feature: Service Unavailable And the candidate "grails" version "1.3.9" is already installed but not default And the system is bootstrapped When I enter "sdk list grails" - Then I see "This command is not available. Internet unreachable." + Then I see "Offline: only showing installed grails versions" + And I see "> 2.1.0" + And I see "* 1.3.9" + + Scenario: List candidate versions not found while internet unreachable + Given the system is bootstrapped + When I enter "sdk list grails" + Then I see "Offline: only showing installed grails versions" + And I see "None installed!" Scenario: List Available Candidates while internet unreachable Given the system is bootstrapped