|
2 | 2 | set -e |
3 | 3 | set -o pipefail |
4 | 4 |
|
| 5 | +if [[ -z "$HELM_PLUGIN_DIR" ]]; then |
| 6 | + echo "ERROR: env var HELM_PLUGIN_DIR not set (script must be called by helm)" |
| 7 | + exit 1 |
| 8 | +fi |
| 9 | + |
| 10 | +FORCE=0 |
| 11 | +if [[ "$1" == "force" ]]; then |
| 12 | + FORCE=1 |
| 13 | +fi |
| 14 | + |
5 | 15 | HELM_AZURE_TPL_VERSION=$(sed -n -e 's/version:[ "]*\([^"]*\).*/\1/p' "${HELM_PLUGIN_DIR}/plugin.yaml") |
6 | 16 |
|
7 | 17 | HOST_OS=$(uname -s | tr '[:upper:]' '[:lower:]') |
@@ -35,16 +45,50 @@ PLUGIN_DOWNLOAD_FILE="helm-azure-tpl.${HOST_OS}.${HOST_ARCH}${FILE_SUFFIX}" |
35 | 45 | PLUGIN_DOWNLOAD_URL="https://github.com/webdevops/helm-azure-tpl/releases/download/${HELM_AZURE_TPL_VERSION}/${PLUGIN_DOWNLOAD_FILE}" |
36 | 46 | PLUGIN_TARGET_PATH="${HELM_PLUGIN_DIR}/helm-azure-tpl${FILE_SUFFIX}" |
37 | 47 |
|
38 | | -echo "starting download (via curl)" |
| 48 | +echo "installing helm-azure-tpl executable" |
39 | 49 | echo " platform: ${HOST_OS}/${HOST_ARCH}" |
40 | 50 | echo " url: $PLUGIN_DOWNLOAD_URL" |
41 | 51 | echo " target: $PLUGIN_TARGET_PATH" |
42 | 52 |
|
43 | | -rm -f -- "$PLUGIN_TARGET_PATH" |
44 | | -curl --fail --location "$PLUGIN_DOWNLOAD_URL" -o "$PLUGIN_TARGET_PATH" |
45 | | -if [ "$?" -ne 0 ]; then |
46 | | - >&2 echo "[ERROR] failed to download plugin executable" |
47 | | - exit 1 |
| 53 | +## detect hostedtoolcache |
| 54 | +PLUGIN_CACHE_DIR="" |
| 55 | +PLUGIN_CACHE_FILE="" |
| 56 | +if [[ -n "$RUNNER_TOOL_CACHE" ]]; then |
| 57 | + PLUGIN_CACHE_DIR="${RUNNER_TOOL_CACHE}/helm-azure-tpl/${HELM_AZURE_TPL_VERSION}" |
| 58 | + PLUGIN_CACHE_FILE="${PLUGIN_CACHE_DIR}/${PLUGIN_DOWNLOAD_FILE}" |
| 59 | + echo " cache: $PLUGIN_CACHE_FILE" |
| 60 | +fi |
| 61 | + |
| 62 | +## force (cleanup/upgrade) |
| 63 | +if [[ "$FORCE" -eq 1 && -f "$PLUGIN_TARGET_PATH" ]]; then |
| 64 | + echo "removing old executable (update/force mode)" |
| 65 | + rm -f -- "$PLUGIN_TARGET_PATH" |
| 66 | +fi |
| 67 | + |
| 68 | +## get from hostedtoolcache |
| 69 | +if [[ -n "$PLUGIN_CACHE_FILE" && -e "$PLUGIN_CACHE_FILE" ]]; then |
| 70 | + echo "fetching from RUNNER_TOOL_CACHE ($RUNNER_TOOL_CACHE)" |
| 71 | + cp -- "$PLUGIN_CACHE_FILE" "$PLUGIN_TARGET_PATH" |
| 72 | + chmod +x "$PLUGIN_TARGET_PATH" |
| 73 | +fi |
| 74 | + |
| 75 | +## download |
| 76 | +if [[ ! -e "$PLUGIN_TARGET_PATH" ]]; then |
| 77 | + echo "starting download (using curl)" |
| 78 | + curl --fail --location "$PLUGIN_DOWNLOAD_URL" -o "$PLUGIN_TARGET_PATH" |
| 79 | + if [ "$?" -ne 0 ]; then |
| 80 | + >&2 echo "[ERROR] failed to download plugin executable" |
| 81 | + exit 1 |
| 82 | + fi |
| 83 | + |
| 84 | + ## store to hostedtoolcache |
| 85 | + if [[ -n "$PLUGIN_CACHE_FILE" ]]; then |
| 86 | + echo "storing to RUNNER_TOOL_CACHE ($RUNNER_TOOL_CACHE)" |
| 87 | + mkdir -p -- "${PLUGIN_CACHE_DIR}" |
| 88 | + cp -a -- "$PLUGIN_TARGET_PATH" "${PLUGIN_CACHE_FILE}" |
| 89 | + fi |
| 90 | +else |
| 91 | + echo "executable already exists, skipping download" |
48 | 92 | fi |
49 | 93 |
|
50 | 94 | if [[ ! -f "$PLUGIN_TARGET_PATH" ]]; then |
|
54 | 98 |
|
55 | 99 | chmod +x "$PLUGIN_TARGET_PATH" |
56 | 100 |
|
57 | | -echo "successfully downloaded executable" |
| 101 | +echo "successfully installed executable" |
0 commit comments