From 528dfe75a61108b2c889b711f31de337eb35c976 Mon Sep 17 00:00:00 2001 From: Marco Vermeulen Date: Fri, 28 Oct 2016 15:40:08 +0100 Subject: [PATCH] Implement post hook on download. --- src/main/bash/sdkman-install.sh | 24 ++++++++++++------- .../sdkman/env/SdkmanBashEnvBuilder.groovy | 2 +- .../groovy/sdkman/steps/stub_steps.groovy | 4 +++- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/main/bash/sdkman-install.sh b/src/main/bash/sdkman-install.sh index 93b875c4..ae0412fc 100644 --- a/src/main/bash/sdkman-install.sh +++ b/src/main/bash/sdkman-install.sh @@ -106,18 +106,24 @@ function __sdkman_download { echo "" echo "In progress..." echo "" - local download_url="${SDKMAN_CURRENT_API}/broker/download/${candidate}/${version}/$(echo $SDKMAN_PLATFORM | tr '[:upper:]' '[:lower:]')" - local download_binary="${SDKMAN_DIR}/tmp/$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1).bin" - __sdkman_secure_curl_download "$download_url" > "$download_binary" - echo "" - __sdkman_echo_debug "Downloaded binary to: $download_binary" + local platform_parameter="$(echo $SDKMAN_PLATFORM | tr '[:upper:]' '[:lower:]')" + local download_url="${SDKMAN_CURRENT_API}/broker/download/${candidate}/${version}/${platform_parameter}" + local base_name="$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)" + local zip_archive_target="${SDKMAN_DIR}/archives/${candidate}-${version}.zip" - #TODO: post installation hook here + export local binary_input="${SDKMAN_DIR}/tmp/${base_name}.bin" + export local zip_output="${SDKMAN_DIR}/tmp/$base_name.zip" - local zip_archive="${SDKMAN_DIR}/archives/${candidate}-${version}.zip" - mv "$download_binary" "$zip_archive" - __sdkman_echo_debug "Moved to archive folder: $zip_archive" + __sdkman_secure_curl_download "$download_url" > "$binary_input" + __sdkman_echo_debug "Downloaded binary to: $binary_input" + + #responsible for taking `binary_input` and producing `zip_output` + __sdkman_secure_curl "${SDKMAN_CURRENT_API}/hooks/post/${candidate}/${version}/${platform_parameter}" | bash + __sdkman_echo_debug "Processed binary as: $zip_output" + + mv "$zip_output" "$zip_archive_target" + __sdkman_echo_debug "Moved to archive folder: $zip_archive_target" else echo "" echo "Found a previously downloaded ${candidate} ${version} archive. Not downloading it again..." diff --git a/src/test/groovy/sdkman/env/SdkmanBashEnvBuilder.groovy b/src/test/groovy/sdkman/env/SdkmanBashEnvBuilder.groovy index 502e085f..993a90bd 100644 --- a/src/test/groovy/sdkman/env/SdkmanBashEnvBuilder.groovy +++ b/src/test/groovy/sdkman/env/SdkmanBashEnvBuilder.groovy @@ -126,7 +126,7 @@ class SdkmanBashEnvBuilder { SDKMAN_LEGACY_API : legacyService, SDKMAN_CURRENT_API : currentService, SDKMAN_VERSION : sdkmanVersion, - SDKMAN_DEBUG_MODE : "true", + sdkman_debug_mode : 'true', JAVA_HOME : jdkHome ] diff --git a/src/test/groovy/sdkman/steps/stub_steps.groovy b/src/test/groovy/sdkman/steps/stub_steps.groovy index 7aec6b8b..9e4ef34e 100644 --- a/src/test/groovy/sdkman/steps/stub_steps.groovy +++ b/src/test/groovy/sdkman/steps/stub_steps.groovy @@ -28,11 +28,13 @@ And(~'^the candidate "([^"]*)" version "([^"]*)" is not available for download$' And(~/^the candidate "(.*?)" version "(.*?)" is available for download on "(.*?)"$/) { String candidate, String version, String platform -> String lowerCaseUname = UnixUtils.asUname(platform).toLowerCase() primeEndpointWithString("/candidates/${candidate}/${version}/${lowerCaseUname}", "valid") + primeEndpointWithString("/hooks/post/${candidate}/${version}/${lowerCaseUname}", 'mv $binary_input $zip_output') //bash command primeDownloadFor(SERVICE_UP_URL, candidate, version, lowerCaseUname) } And(~/^the candidate "(.*?)" version "(.*?)" is not available for download on "(.*?)"$/) { String candidate, String version, String platform -> - primeEndpointWithString("/candidates/${candidate}/${version}/${UnixUtils.asUname(platform).toLowerCase()}", "invalid") + String lowerCaseUname = UnixUtils.asUname(platform).toLowerCase() + primeEndpointWithString("/candidates/${candidate}/${version}/${lowerCaseUname}", "invalid") } And(~'^a "([^"]*)" list view is available for consumption$') { String candidate ->