#!/bin/bash

VERSION=$(git log -1 --pretty=%h)
REPO="iterativ/vbv-lernwelt-django"
LATEST="${REPO}:latest"
BUILD_TIMESTAMP=$( date '+%F_%H:%M:%S' )
VERSION_TAG="${REPO}:$VERSION"

LOCAL_LOGOUT=$VITE_LOGOUT_REDIRECT
LOCAL_SENTRY_ENV=$VITE_SENTRY_ENV

APP_NAME=${1:-vbv-lernwelt}

echo "Deploy to $APP_NAME"

if [[ "$APP_NAME" == "myvbv" ]]
then
  VITE_LOGOUT_REDIRECT="https://edumgr.b2clogin.com/edumgr.onmicrosoft.com/b2c_1_signupandsignin/oauth2/v2.0/logout/?post_logout_redirect_uri=https://myvbv.iterativ.ch/"
  VITE_SENTRY_ENV="production"
elif [[ "$APP_NAME" == "myvbv-stage" ]]
then
  VITE_LOGOUT_REDIRECT="https://vbvtst.b2clogin.com/vbvtst.onmicrosoft.com/b2c_1_signupandsignin/oauth2/v2.0/logout/?post_logout_redirect_uri=https://myvbv-stage.iterativ.ch/"
  VITE_SENTRY_ENV="stage"
elif [[ "$APP_NAME" == "vbv-lernwelt" ]]
then
  VITE_LOGOUT_REDIRECT="https://vbvdev.b2clogin.com/vbvdev.onmicrosoft.com/b2c_1_signupandsignin/oauth2/v2.0/logout/?post_logout_redirect_uri=https://vbv-lernwelt.control.iterativ.ch"
  VITE_SENTRY_ENV="development"
fi

# script should fail when any process returns non zero code
set -ev

# create client
npm run build

VITE_LOGOUT_REDIRECT=$LOCAL_LOGOUT
VITE_SENTRY_ENV=$LOCAL_SENTRY_ENV

python server/manage.py collectstatic --no-input

# create and push new docker container
## Note that images build with buildx do not appear in your docker images list, therefore the push true must be set
docker buildx build --push=true  --platform=linux/amd64 -f compose/django/Dockerfile -t "$REPO" -t "$LATEST" -t "$VERSION_TAG" --build-arg VERSION="$VERSION" --build-arg BUILD_TIMESTAMP="$BUILD_TIMESTAMP" --build-arg GIT_COMMIT="$(git log -1 --format=%h)" .

#deploy to caprover, explicitly use the version tag... so if there is a mismatch you get an error message
caprover deploy -h https://captain.control.iterativ.ch -a "$APP_NAME" -i docker.io/"$VERSION_TAG"
