#!/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=nexantic-version-${DOCKERFILE_HASH}
POD=nexantic-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
