diff --git a/install-binary.sh b/install-binary.sh index 5906338b..323be495 100755 --- a/install-binary.sh +++ b/install-binary.sh @@ -89,10 +89,20 @@ getDownloadURL() { fi } +# Temporary dir +mkTempDir() { + HELM_TMP="$(mktemp -d -t "${PROJECT_NAME}-XXXX")" +} +rmTempDir() { + if [ -d "${HELM_TMP:-/tmp/helm-diff-tmp}" ]; then + rm -rf "${HELM_TMP:-/tmp/helm-diff-tmp}" + fi +} + # downloadFile downloads the latest binary package and also the checksum # for that binary. downloadFile() { - PLUGIN_TMP_FILE="/tmp/${PROJECT_NAME}.tgz" + PLUGIN_TMP_FILE="${HELM_TMP}/${PROJECT_NAME}.tgz" echo "Downloading $DOWNLOAD_URL" if type "curl" >/dev/null; then curl -L "$DOWNLOAD_URL" -o "$PLUGIN_TMP_FILE" @@ -104,8 +114,6 @@ downloadFile() { # installFile verifies the SHA256 for the file, then unpacks and # installs it. installFile() { - HELM_TMP="/tmp/$PROJECT_NAME" - mkdir -p "$HELM_TMP" tar xvzf "$PLUGIN_TMP_FILE" -C "$HELM_TMP" HELM_TMP_BIN="$HELM_TMP/diff/bin/diff" echo "Preparing to install into ${HELM_PLUGIN_DIR}" @@ -113,9 +121,10 @@ installFile() { cp "$HELM_TMP_BIN" "$HELM_PLUGIN_DIR/bin" } -# fail_trap is executed if an error occurs. -fail_trap() { +# exit_trap is executed if on exit (error or not). +exit_trap() { result=$? + rmTempDir if [ "$result" != "0" ]; then echo "Failed to install $PROJECT_NAME" printf '\tFor support, go to https://github.com/databus23/helm-diff.\n' @@ -134,12 +143,13 @@ testVersion() { # Execution #Stop execution on any error -trap "fail_trap" EXIT +trap "exit_trap" EXIT set -e initArch initOS verifySupported getDownloadURL +mkTempDir downloadFile installFile testVersion