diff --git a/scripts/get b/scripts/get index a52a0a9a1..02884d7f9 100755 --- a/scripts/get +++ b/scripts/get @@ -62,31 +62,31 @@ verifySupported() { fi } -# checkLatestVersion checks the latest available version. -checkLatestVersion() { - # Use the GitHub releases webpage for the project to find the latest version for this project. - local latest_url="https://github.com/kubernetes/helm/releases/latest" +# checkDesiredVersion checks if the desired version is available. +checkDesiredVersion() { + # Use the GitHub releases webpage for the project to find the desired version for this project. + local release_url="https://github.com/kubernetes/helm/releases/${DESIRED_VERSION:-latest}" if type "curl" > /dev/null; then - TAG=$(curl -SsL $latest_url | awk '/\/tag\//' | head -n 1 | cut -d '"' -f 2 | awk '{n=split($NF,a,"/");print a[n]}') + TAG=$(curl -SsL $release_url | awk '/\/tag\//' | head -n 1 | cut -d '"' -f 2 | awk '{n=split($NF,a,"/");print a[n]}') elif type "wget" > /dev/null; then - TAG=$(wget -q -O - $latest_url | awk '/\/tag\//' | head -n 1 | cut -d '"' -f 2 | awk '{n=split($NF,a,"/");print a[n]}') + TAG=$(wget -q -O - $release_url | awk '/\/tag\//' | head -n 1 | cut -d '"' -f 2 | awk '{n=split($NF,a,"/");print a[n]}') fi if [ "x$TAG" == "x" ]; then - echo "Cannot determine latest tag." + echo "Cannot determine ${DESIRED_VERSION} tag." exit 1 fi } # checkHelmInstalledVersion checks which version of helm is installed and -# if it needs to be updated. +# if it needs to be changed. checkHelmInstalledVersion() { if [[ -f "${HELM_INSTALL_DIR}/${PROJECT_NAME}" ]]; then local version=$(helm version | grep '^Client' | cut -d'"' -f2) if [[ "$version" == "$TAG" ]]; then - echo "Helm ${version} is up-to-date." + echo "Helm ${version} is already ${DESIRED_VERSION:-latest}" return 0 else - echo "Helm ${TAG} is available. Upgrading from version ${version}." + echo "Helm ${TAG} is available. Changing from version ${version}." return 1 fi else @@ -137,7 +137,12 @@ installFile() { fail_trap() { result=$? if [ "$result" != "0" ]; then - echo "Failed to install $PROJECT_NAME" + if [[ -n "$INPUT_ARGUMENTS" ]]; then + echo "Failed to install $PROJECT_NAME with the arguments provided: $INPUT_ARGUMENTS" + help + else + echo "Failed to install $PROJECT_NAME" + fi echo -e "\tFor support, go to https://github.com/kubernetes/helm." fi exit $result @@ -156,15 +161,44 @@ testVersion() { echo "Run '$PROJECT_NAME init' to configure $PROJECT_NAME." } +# help provides possible cli installation arguments +help () { + echo "Accepted cli arguments are:" + echo -e "\t[--help|-h ] ->> prints this help" + echo -e "\t[--version|-v ] . When not defined it defaults to latest" + echo -e "\te.g. --version v2.4.0 or -v latest" +} + # Execution #Stop execution on any error trap "fail_trap" EXIT set -e + +# Parsing input arguments (if any) +export INPUT_ARGUMENTS="${@}" +set -u +while [[ $# -gt 0 ]]; do + case $1 in + '--version'|-v) + export DESIRED_VERSION="${2}" + shift + ;; + '--help'|-h) + help + exit 0 + ;; + *) exit 1 + ;; + esac + shift +done +set +u + initArch initOS verifySupported -checkLatestVersion +checkDesiredVersion if ! checkHelmInstalledVersion; then downloadFile installFile