#!/bin/bash

# Usage:
#
#   ./deploy.sh [server-version] [web-version]
#
#   server-version:  The version of pchub-apiserver-linux-amd64 docker image.
#   web-version:    The version of web-nginx docker image.

set -eu

serverV=${1-latest}
webV=${2-latest}

pchImg="asia-east2-docker.pkg.dev/gcp-digital-infra/internal-tools/pchub-apiserver-linux-amd64"
webImg="asia-east2-docker.pkg.dev/gcp-digital-infra/internal-tools/web-nginx"

DIR=`dirname $0`

echo "====> Start deploying pchub..."
echo "====> SERVER_VERSION: $serverV"
echo "====> WEB_VERSION: $webV"

# pre pull
echo "====> Start pre pulling images..."
docker pull ${pchImg}:${serverV}
docker pull ${webImg}:${webV}

if [ -f "${DIR}/CURRENT_DEPLOY" ]; then
  echo "====> Current deploy with: "
  cat ${DIR}/CURRENT_DEPLOY | while read line
  do
    echo $line
  done
fi

# if running, then stop it
isExistServer=`docker ps -a -q -f name="pchub-apiserver"`
if [ -n "$isExistServer" ]; then
  echo "====> Stop running pchub..."
  docker compose -f ./pchub.yml down
fi

echo "SERVER_VERSION=${serverV}" > .env
echo "WEB_VERSION=${webV}" >> .env

# run
echo "====> Deploy new pchub..."
docker compose -f ./pchub.yml up -d

echo "${DIR}/deploy.sh ${serverV} ${webV}" > CURRENT_DEPLOY

echo "====> Clean outdated images..."
# clean
docker image prune -f -a --filter "until=240h" --filter "label=app=pchub"
