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 <candidate>' when
  internet is unreachable (renamed to __sdkman_installed_versions)
- Restore offline list test scenarios in service_unavailable.feature
This commit is contained in:
Chloé
2026-03-23 10:11:00 +00:00
committed by Marco Vermeulen
parent 1e879a8628
commit 9168de0c21
3 changed files with 44 additions and 3 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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