#!/bin/bash

# Copyright 2022 The Go Authors. All rights reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.

# Deploy the go-ecosystem worker to Cloud Run, using Cloud Build.

set -e

source devtools/lib.sh || { echo "Are you at repo root?"; exit 1; }

usage() {
  die "usage: $0 [-n] (dev | prod) BIGQUERY_DATASET"
}

# Report whether the current repo's workspace has no uncommitted files.
clean_workspace() {
  [[ $(git status --porcelain) == '' ]]
}

main() {
  local prefix=
  if [[ $1 = '-n' ]]; then
    prefix='echo dryrun: '
    shift
  fi

  local env=$1

  case $env in
    dev|prod);;
    *) usage;;
  esac

  local dataset=$2
  if [[ $dataset = '' ]]; then
    usage
  fi

  if which grants > /dev/null; then
    local allowed=false
    while read _ _ ok _; do
      if [[ $ok = OK ]]; then
        allowed=true
      fi
    done < <(grants check $GO_ECOSYSTEM_DEPLOY_GROUPS)
    if ! $allowed; then
      die "You need a grant for one of: $GO_ECOSYSTEM_DEPLOY_GROUPS"
    fi
  fi

  local -r project=$(tfvar ${env}_project)
  if [[ $project = '' ]]; then
    die "no ${env}_project in terraform.tfvars"
  fi
  local -r commit=$(git rev-parse --short HEAD)
  local unclean
  if ! clean_workspace; then
    unclean="-unclean"
  fi

  $prefix gcloud builds submit \
    --project $project \
    --config deploy/worker.yaml \
    --substitutions SHORT_SHA=${commit}${unclean},_ENV=$env,_BQ_DATASET=$dataset
}

main "$@"
