#!/usr/bin/env bash
# shellcheck disable=SC2016
# shellcheck disable=SC2188

<<COMMENT
This script executes a helmfile sync using a target directory

Usage: DEPLOY_ENVIRONMENT= TARGET_DEPLOY= ./deploy_to_eks.sh

AWS_ACCOUNT_ID
AWS_CLUSTER
DEPLOY_ENVIRONMENT { alpha | labs | staging | demo | prod }
DEPLOY_REGION { us-west-2 | us-east-1 }
TARGET_DEPLOY { palolo-app }
COMMENT

set -eo pipefail

if [ -z "$AWS_ACCOUNT_ID" ]
then
    echo 'AWS Account ID must be provided in $AWS_ACCOUNT_ID'
    exit 1
fi

if [ -z "$AWS_CLUSTER" ]
then
    echo 'AWS EKS Cluster ID must be provided in $AWS_CLUSTER'
    exit 1
fi

if [ -z "$CLUSTER_ATTRIBUTE" ]
then
    echo 'AWS EKS Cluster Attribute must be provided in $CLUSTER_ATTRIBUTE'
    exit 1
fi

if [ -z "$DEPLOY_ENVIRONMENT" ]
then
    echo 'A deploy environment must be provided in $DEPLOY_ENVIRONMENT'
    exit 1
fi

if [ -z "$DEPLOY_REGION" ]
then
    echo 'A deploy region must be provided in $DEPLOY_REGION'
    exit 1
fi

if [ -z "$TARGET_DEPLOY" ]
then
    echo 'A target deploy must be provided in $TARGET_DEPLOY'
    exit 1
fi

# booleans whose only valid value is "true"
export SKIP_SCHEMA=${SKIP_SCHEMA:-false}

cd "$(dirname "$0")"/../

if [ -n "$GITHUB_ENV" ]
then
    echo "DEPLOY_STARTED=true" >> "$GITHUB_ENV"
else
    echo "DEPLOY_STARTED=true"
fi

helmfile --debug --file "${TARGET_DEPLOY?}"/helmfile.yaml sync
