#!/usr/bin/env bash

# This script will be run by bazel when the build process starts to
# generate key-value information that represents the status of the
# workspace. The output should be like
#
# KEY1 VALUE1
# KEY2 VALUE2
#
# If the script exits with non-zero code, it's considered as a failure
# and the output will be discarded.

function rev() {
  cd $1; git describe --always --match "v[0-9].*" --dirty
}

# Get Kubernetes version by doing an ugly grep. This returns something line 'v1.19.3'.
function kube_ver() {
  cd $1
  grep -A 10 io_k8s_kubernetes third_party/go/repositories.bzl | grep version | head -n 1 | cut -d '"' -f 2
}

KUBE_MAJOR=$(kube_ver . | sed -e 's,v,,' | cut -d . -f 1)
KUBE_MINOR=$(kube_ver . | sed -e 's,v,,' | cut -d . -f 2)
KUBE_PATCH=$(kube_ver . | sed -e 's,v,,' | cut -d . -f 3)

echo STABLE_BUILD_GERRIT-OAUTH-PROVIDER_LABEL $(rev .)
echo STABLE_BUILD_OWNERS_LABEL $(rev .)
echo STABLE_GIT_COMMIT $(git rev-parse HEAD)
echo STABLE_GIT_VERSION $(rev .)
echo STABLE_BUILDER $(id -un)@$(hostname -f):$(pwd)

# Kubernetes compatibility - see //third_party/go/kubernetes:version.bzl.
echo STABLE_KUBERNETES_buildDate $(date -u +'%Y-%m-%dT%H:%M:%SZ')
echo STABLE_KUBERNETES_gitCommit $(git rev-parse HEAD)
echo STABLE_KUBERNETES_gitMajor $KUBE_MAJOR
echo STABLE_KUBERNETES_gitMinor $KUBE_MINOR
if git_status=$(git status --porcelain 2>/dev/null) && [[ -z ${git_status} ]]; then
  echo STABLE_KUBERNETES_gitTreeState clean
else
  echo STABLE_KUBERNETES_gitTreeState dirty
fi
echo STABLE_KUBERNETES_gitVersion $(kube_ver .)-hscloud-$(rev .)
