#!/usr/bin/env bash

set -o errexit
set -o nounset
set -o pipefail

ROOT=$(cd $(dirname "${BASH_SOURCE[0]}")/../..; pwd -P)
PULUMI=${BIN:-"${ROOT}/bin/pulumi"}
PULUMI_NODEJS_PLUGIN=$(dirname "$PULUMI")/pulumi-language-nodejs

if [ ! -f "${PULUMI}" ] || [ ! -f "${PULUMI_NODEJS_PLUGIN}" ]; then
    echo "Downloading pulumi"
    mkdir -p $ROOT/bin

    OS=""
    case $(uname) in
        "Linux") OS="linux";;
        "Darwin") OS="darwin";;
        *)
            echo "unsupported platform"
            exit 1
            ;;
    esac

    ARCH=""
    case $(uname -m) in
        "x86_64") ARCH="x64";;
        "arm64") ARCH="arm64";;
        "aarch64") ARCH="arm64";;
        *)
            echo "unsupported arch"
            exit 1
            ;;
    esac

    TARBALL_URL="https://get.pulumi.com/releases/sdk/pulumi-v3.72.2-${OS}-${ARCH}.tar.gz"
    TARBALL_DEST=$(mktemp -t pulumi.tar.gz.XXXXXXXXXX)
    curl --fail -s -L -o "${TARBALL_DEST}" "${TARBALL_URL}"
    EXTRACT_DIR=$(mktemp -d -t pulumi.XXXXXXXXXX)
    tar zxf "${TARBALL_DEST}" -C "${EXTRACT_DIR}"
    cp -f "${EXTRACT_DIR}/pulumi/pulumi" "${PULUMI}"
    cp -f "${EXTRACT_DIR}/pulumi/pulumi-language-nodejs" "${PULUMI_NODEJS_PLUGIN}"

    rm -rf "${EXTRACT_DIR}" "${TARBALL_DEST}"
fi

echo "pulumi has been downloaded, version: `$PULUMI version`"
