From b7a00f683d8bc45b45c1738c92da482d73404b3d Mon Sep 17 00:00:00 2001 From: Marco Vermeulen Date: Thu, 21 Dec 2017 08:47:47 +0000 Subject: [PATCH] Defer version cache check to command invocation. --- src/main/bash/sdkman-init.sh | 27 ------------------ src/main/bash/sdkman-main.sh | 28 +++++++++++++++++++ .../specs/BetaChannelBootstrapSpec.groovy | 5 ++++ .../specs/VersionCacheBootstrapSpec.groovy | 7 +++++ 4 files changed, 40 insertions(+), 27 deletions(-) diff --git a/src/main/bash/sdkman-init.sh b/src/main/bash/sdkman-init.sh index 4b67ffeb..467e2d5a 100644 --- a/src/main/bash/sdkman-init.sh +++ b/src/main/bash/sdkman-init.sh @@ -98,33 +98,6 @@ fi if [[ -z "$sdkman_curl_connect_timeout" ]]; then sdkman_curl_connect_timeout=7; fi if [[ -z "$sdkman_curl_max_time" ]]; then sdkman_curl_max_time=10; fi -# determine if up to date -SDKMAN_VERSION_FILE="${SDKMAN_DIR}/var/version" -if [[ "$sdkman_beta_channel" != "true" && -f "$SDKMAN_VERSION_FILE" && -z "$(find "$SDKMAN_VERSION_FILE" -mmin +$((60*24)))" ]]; then - __sdkman_echo_debug "Not refreshing version cache now..." - SDKMAN_REMOTE_VERSION=$(cat "$SDKMAN_VERSION_FILE") - -else - __sdkman_echo_debug "Version cache needs updating..." - if [[ "$sdkman_beta_channel" == "true" ]]; then - __sdkman_echo_debug "Refreshing version cache with BETA version." - VERSION_URL="${SDKMAN_CURRENT_API}/broker/download/sdkman/version/beta" - else - __sdkman_echo_debug "Refreshing version cache with STABLE version." - VERSION_URL="${SDKMAN_CURRENT_API}/broker/download/sdkman/version/stable" - fi - - SDKMAN_REMOTE_VERSION=$(__sdkman_secure_curl_with_timeouts "$VERSION_URL") - if [[ -z "$SDKMAN_REMOTE_VERSION" || -n "$(echo "$SDKMAN_REMOTE_VERSION" | tr '[:upper:]' '[:lower:]' | grep 'html')" ]]; then - __sdkman_echo_debug "Version information corrupt or empty! Ignoring: $SDKMAN_REMOTE_VERSION" - SDKMAN_REMOTE_VERSION="$SDKMAN_VERSION" - - else - __sdkman_echo_debug "Overwriting version cache with: $SDKMAN_REMOTE_VERSION" - echo "${SDKMAN_REMOTE_VERSION}" > "$SDKMAN_VERSION_FILE" - fi -fi - # Read list of candidates and set array SDKMAN_CANDIDATES_CACHE="${SDKMAN_DIR}/var/candidates" SDKMAN_CANDIDATES_CSV=$(cat "$SDKMAN_CANDIDATES_CACHE") diff --git a/src/main/bash/sdkman-main.sh b/src/main/bash/sdkman-main.sh index ee6852d3..ec4ee5c5 100644 --- a/src/main/bash/sdkman-main.sh +++ b/src/main/bash/sdkman-main.sh @@ -57,6 +57,34 @@ function sdk { # Check candidates cache if [[ "$COMMAND" != "update" ]]; then ___sdkman_check_candidates_cache "$SDKMAN_CANDIDATES_CACHE" || return 1 + + # determine if up to date + SDKMAN_VERSION_FILE="${SDKMAN_DIR}/var/version" + if [[ "$sdkman_beta_channel" != "true" && -f "$SDKMAN_VERSION_FILE" && -z "$(find "$SDKMAN_VERSION_FILE" -mmin +$((60*24)))" ]]; then + __sdkman_echo_debug "Not refreshing version cache now..." + SDKMAN_REMOTE_VERSION=$(cat "$SDKMAN_VERSION_FILE") + + else + __sdkman_echo_debug "Version cache needs updating..." + if [[ "$sdkman_beta_channel" == "true" ]]; then + __sdkman_echo_debug "Refreshing version cache with BETA version." + VERSION_URL="${SDKMAN_CURRENT_API}/broker/download/sdkman/version/beta" + else + __sdkman_echo_debug "Refreshing version cache with STABLE version." + VERSION_URL="${SDKMAN_CURRENT_API}/broker/download/sdkman/version/stable" + fi + + SDKMAN_REMOTE_VERSION=$(__sdkman_secure_curl_with_timeouts "$VERSION_URL") + if [[ -z "$SDKMAN_REMOTE_VERSION" || -n "$(echo "$SDKMAN_REMOTE_VERSION" | tr '[:upper:]' '[:lower:]' | grep 'html')" ]]; then + __sdkman_echo_debug "Version information corrupt or empty! Ignoring: $SDKMAN_REMOTE_VERSION" + SDKMAN_REMOTE_VERSION="$SDKMAN_VERSION" + + else + __sdkman_echo_debug "Overwriting version cache with: $SDKMAN_REMOTE_VERSION" + echo "${SDKMAN_REMOTE_VERSION}" > "$SDKMAN_VERSION_FILE" + fi + fi + fi # Always presume internet availability diff --git a/src/test/groovy/sdkman/specs/BetaChannelBootstrapSpec.groovy b/src/test/groovy/sdkman/specs/BetaChannelBootstrapSpec.groovy index e7c05793..4e10b1b0 100644 --- a/src/test/groovy/sdkman/specs/BetaChannelBootstrapSpec.groovy +++ b/src/test/groovy/sdkman/specs/BetaChannelBootstrapSpec.groovy @@ -31,6 +31,7 @@ class BetaChannelBootstrapSpec extends SdkmanEnvSpecification { when: bash.execute("source $bootstrapScript") + bash.execute("sdk version") then: versionCache.exists() @@ -53,6 +54,8 @@ class BetaChannelBootstrapSpec extends SdkmanEnvSpecification { when: bash.execute("source $bootstrapScript") + bash.execute("sdk version") + then: versionCache.exists() @@ -74,6 +77,7 @@ class BetaChannelBootstrapSpec extends SdkmanEnvSpecification { when: bash.execute("source $bootstrapScript") + bash.execute("sdk version") then: versionCache.exists() @@ -96,6 +100,7 @@ class BetaChannelBootstrapSpec extends SdkmanEnvSpecification { when: bash.execute("source $bootstrapScript") + bash.execute("sdk version") then: versionCache.exists() diff --git a/src/test/groovy/sdkman/specs/VersionCacheBootstrapSpec.groovy b/src/test/groovy/sdkman/specs/VersionCacheBootstrapSpec.groovy index 9938b1f1..ce2c69d5 100644 --- a/src/test/groovy/sdkman/specs/VersionCacheBootstrapSpec.groovy +++ b/src/test/groovy/sdkman/specs/VersionCacheBootstrapSpec.groovy @@ -32,6 +32,7 @@ class VersionCacheBootstrapSpec extends SdkmanEnvSpecification { when: bash.execute("source $bootstrapScript") + bash.execute("sdk version") then: versionCache.exists() @@ -50,6 +51,7 @@ class VersionCacheBootstrapSpec extends SdkmanEnvSpecification { when: bash.execute("source $bootstrapScript") + bash.execute("sdk version") then: versionCache.exists() @@ -72,6 +74,7 @@ class VersionCacheBootstrapSpec extends SdkmanEnvSpecification { when: bash.execute("source $bootstrapScript") + bash.execute("sdk version") then: versionCache.exists() @@ -94,6 +97,7 @@ class VersionCacheBootstrapSpec extends SdkmanEnvSpecification { when: bash.execute("source $bootstrapScript") + bash.execute("sdk version") then: versionCache.text.contains("x.y.z") @@ -115,6 +119,7 @@ class VersionCacheBootstrapSpec extends SdkmanEnvSpecification { when: bash.execute("source $bootstrapScript") + bash.execute("sdk version") then: !bash.output.contains("SDKMAN can't reach the internet so going offline.") @@ -137,6 +142,7 @@ class VersionCacheBootstrapSpec extends SdkmanEnvSpecification { when: bash.execute("source $bootstrapScript") + bash.execute("sdk version") then: versionCache.text.contains(sdkmanVersion) @@ -156,6 +162,7 @@ class VersionCacheBootstrapSpec extends SdkmanEnvSpecification { when: bash.execute("source $bootstrapScript") + bash.execute("sdk version") then: versionCache.exists()