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

<<COMMENT
This script executes a helm rollback against a target deployment

Usage: DEPLOY_ENVIRONMENT= TARGET_DEPLOY= ./deploy_to_eks.sh

DEPLOY_ENVIRONMENT { alpha | labs | staging | demo | prod }
TARGET_DEPLOY { palolo-app }
COMMENT

set -eo pipefail

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

if [ -z "$TARGET_DEPLOY" ]
then
    echo 'You need to tell me what to rollback in $TARGET_DEPLOY'
    exit 1
fi

ARGS=""

if [ -n "$DRY_RUN" ]
then
    ARGS+=" --dry-run"
fi

if [ -n "$SKIP_SCHEMA" ]
then
    ARGS+=" --no-hooks"
fi

set -u

# For later: We can absolutely do more deployments this way
# Just setup a helm chart in the Kubernetes directory

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

# Prereqs:
# 1) You have installed the correct kubeconfig
# scripts/pull_kubeconfig.sh alpha
#
# Note: Removing the wait and wait-for-jobs will break the tagging in our Rollback action
helm rollback "${TARGET_DEPLOY?}" \
    --cleanup-on-fail \
    --debug \
    --kubeconfig ./kubeconfig/palolo-"${DEPLOY_ENVIRONMENT?}".kubeconfig \
    --namespace palolo-"${DEPLOY_ENVIRONMENT?}" \
    --timeout 15m \
    --wait \
    --wait-for-jobs \
    "${ARGS?}"
