#!/bin/bash
# This helper scripts executes all Bazel tests in our CI environment.
# https://phab.monogon.dev/harbormaster/plan/2/
set -euo pipefail

DOCKERFILE_HASH=$(sha1sum build/Dockerfile | cut -c -8)

BUILD_ID=$1;
BUILD_PHID=$2;
shift; shift;

TAG=monogon-version-${DOCKERFILE_HASH}
POD=monogon-build-${BUILD_ID}

# We keep one Bazel build cache per working copy to avoid concurrency issues
# (we cannot run multiple Bazel servers on a given _bazel_root)
function getWorkingCopyID {
  local pattern='/var/drydock/workingcopy-([0-9]+)/'
  [[ "$(pwd)" =~ $pattern ]]
  echo ${BASH_REMATCH[1]}
}

CACHE_VOLUME=bazel-cache-$(getWorkingCopyID)

# The Go pkg cache is safe to use concurrently.
GOPKG_VOLUME=gopkg-cache

# We do our own image caching since the podman build step cache does
# not work across different repository checkouts and is also easily
# invalidated by multiple in-flight revisions with different Dockerfiles.
if ! podman image inspect "$TAG" >/dev/null; then
  echo "Could not find $TAG, building..."
  podman build -t ${TAG} build
fi

# Keep this in sync with create_container.sh:

function cleanup {
  rc=$?
  ! podman pod rm $POD --force
  exit $rc
}

trap cleanup EXIT

! podman volume create --opt o=nodev,exec ${CACHE_VOLUME}
! podman volume create --opt o=nodev ${GOPKG_VOLUME}

podman pod create --name ${POD}

podman run \
    --rm \
    -v $(pwd):/work \
    -v ${CACHE_VOLUME}:/user/.cache/bazel/_bazel_root \
    -v ${GOPKG_VOLUME}:/user/go/pkg \
    --privileged \
    ${TAG} \
    bazel run //:fietsje

podman run \
    --rm \
    -v $(pwd):/work \
    -v ${CACHE_VOLUME}:/user/.cache/bazel/_bazel_root \
    -v ${GOPKG_VOLUME}:/user/go/pkg \
    --privileged \
    ${TAG} \
    scripts/gazelle.sh

if [[ ! -z "$(git status --porcelain)" ]]; then
  echo "Unclean working directory after running scripts/gazelle.sh and fietsje:"
  git diff HEAD
  exit 1
fi

podman run \
    -v $(pwd):/work \
    -v ${CACHE_VOLUME}:/user/.cache/bazel/_bazel_root \
    -v ${GOPKG_VOLUME}:/user/go/pkg \
    --device /dev/kvm \
    --privileged \
    --pod ${POD} \
    --name=${POD}-bazel \
    ${TAG} \
    bazel test //...

function conduit() {
  # Get Phabricator host from Git origin
  local pattern='ssh://(.+?):([0-9]+)'
  [[ "$(git remote get-url origin)" =~ $pattern ]];
  local host=${BASH_REMATCH[1]}
  local port=${BASH_REMATCH[2]}

  ssh "$host" -p "$port" conduit $@
}

# Report build results if we made it here successfully
conduit harbormaster.sendmessage <<EOF
{"params": "{\"buildTargetPHID\": \"${BUILD_PHID}\", \"type\": \"pass\"}"}
EOF
