#!/usr/bin/env bash

set -euo pipefail

ROOT=$(cd $(dirname ${BASH_SOURCE[0]})/.. && pwd)
TEST_ROOT=${ROOT}/test
cd ${ROOT}

PROJECT=${PROJECT:-""}
if [[ -z $PROJECT ]] ; then
    echo "PROJECT must be set" >&2
    exit 1
fi
if [[ -z ${PULUMI_CONFIG_PASSPHRASE+undefined-guard} ]]; then
    echo "PULUMI_CONFIG_PASSPHRASE must be set">&2
    exit 1
fi
PULUMI_BUCKET_SUFFIX=${PULUMI_BUCKET_SUFFIX:-"pulumi-state"}
ENV=${ENV:-""}
if [[ -z $ENV ]] ; then
    bucket=${PROJECT}-${PULUMI_BUCKET_SUFFIX}
    echo "ENV not set, using bucket ${bucket}"
else
    bucket=${ENV}-${PULUMI_BUCKET_SUFFIX}
fi
image_tag=${IMAGE_TAG:-"local"}

pulumi_dir=${ROOT}/deploy/aws
cd ${pulumi_dir}
npm install
cd ${ROOT}
pulumi -C ${pulumi_dir} login --cloud-url=s3://${bucket}
pulumi -C ${pulumi_dir} stack select ${PROJECT}

echo "> Build Components"
IMAGE_TAG=${image_tag} ./build.sh
pulumi -C ${pulumi_dir} config set dbaas:image_tag ${image_tag}

echo "> Deploy Components"
pulumi -C ${pulumi_dir} up --yes
