Implement post hook on download.

This commit is contained in:
Marco Vermeulen
2016-10-28 15:40:08 +01:00
parent 4e83aeb2fe
commit 528dfe75a6
3 changed files with 19 additions and 11 deletions

View File

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

View File

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

View File

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