#!/usr/bin/env bash

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

upgrade_version() {
  # gen new version
  today=$(date +%Y%m%d)
  head_commit=$(git rev-parse --short=6 HEAD)
  new_version=${today}-${head_commit}
  echo ${new_version}

  # replace
  # judge os
  os=$(uname)
  if [ "$os" = "Darwin" ]; then
    sed -i ".bak" "s|^VERSION=.*|VERSION=${new_version}|" ${ROOT}/build/build.sh
    rm ${ROOT}/build/build.sh.bak
    sed -i ".bak" "s|gcr.io/pingcap-public/observability:.*\",|gcr.io/pingcap-public/observability:${new_version}\",|" ${ROOT}/../deploy/monitoring/observability.ts
    rm ${ROOT}/../deploy/monitoring/observability.ts.bak
  else
    sed -i "s|^VERSION=.*|VERSION=${new_version}|" ${ROOT}/build/build.sh
    sed -i "s|gcr.io/pingcap-public/observability:.*\",|gcr.io/pingcap-public/observability:${new_version}\",|" ${ROOT}/../deploy/monitoring/observability.ts
  fi
}

check_files_change() {
  changed_files=$(git diff origin/master...HEAD --name-only | grep -v ".*\\.md" | grep -v "observability/build")
  if [ $? -ne 0 ]; then
    echo "no realted code changes"
    exit 1
  fi

  changed=false
  echo ${changed_files} | grep "observability/"
  if [ $? -eq 0 ]; then
    changed=true
  fi
  if [ "$changed" = false ]; then
    echo ${changed_files} | grep -E "deploy/monitoring/manifest/(loki-stack|dashboard|eventrouter)/"
    if [ $? -eq 0 ]; then
      changed=true
    fi
  fi

  if [ "$changed" = false ]; then
    echo "no realted code changes"
    exit 1
  else
    upgrade_version
  fi
}

if [ $# -eq 1 ] && [ $1 = "force" ]; then
  upgrade_version
else
  check_files_change
fi
