#!/bin/bash

set -eou pipefail
set -x

util_ensure_available() {
  local bin=$1
  if ! which "${bin}"
  then
    echo "Please install ${bin}"
    return 1
  fi
  return 0
}

jenkins_get_job_config() {
  local host="$1"
  local job="$2"
  local config
  config="$(mktemp --suffix=.xml config.XXXXXX)"
  local url="https://${host}/job/${job}/config.xml"
  wget --output-document="${config}" "${url}"
  echo "${config}"
}

jenkins_get_job_repos() {
  local config="$1"
  if [ -n "${REPO}" ]
  then
    echo "${REPO}"
    return 0
  fi
  # xmllint is rubbish, so we need sed(1) to separate the results
  xmllint --xpath '//com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritProject/pattern' "${config}" | sed -e 's/<pattern>//g' -e 's/<\/pattern>/\n/g'
}

: "${JENKINS_HOST:=openpower.xyz}"
: "${JENKINS_JOB:=openbmc-repository-ci}"

util_ensure_available wget
util_ensure_available xmllint
util_ensure_available git

CONFIG=
REPO=

while [[ $# -gt 0 ]]
do
  key="$1"
  case "${key}" in
    -c|--config)
      CONFIG="$2"
      shift 2
      ;;
    -r|--repo|--repository)
      REPO="$2"
      shift 2
      ;;
    -h|--help)
      echo "USAGE: DISTRO=DOCKERBASE $0 --config config.xml"
      echo
      echo "DOCKERBASE is the Docker Hub tag of the base image against which to"
      echo "build and test the repositories described in config.xml. Individual"
      echo "repositories can be tested against DOCKERBASE with the --repository"
      echo "option \(in place of --config\)."
      exit 0
      ;;
    *)
      (>&2 echo Unrecognised argument \'"$1"\')
      shift
      ;;
  esac
done

if [ -z "${CONFIG}" ]
then
  CONFIG="$(jenkins_get_job_config "${JENKINS_HOST}" "${JENKINS_JOB}")"
fi

export UNIT_TEST_PKG=
export WORKSPACE=

git_clone_repo() {
  local prj_package="$1"
  local package
  package="$(basename "${prj_package}")"
  local workspace="$2"
  if [ -d "${prj_package}" ]
  then
    git clone "${prj_package}" "${workspace}"/"${package}"
    return
  fi
  git clone https://gerrit.openbmc-project.xyz/openbmc/"${package}" "${workspace}"/"${package}"
}

jenkins_get_job_repos "${CONFIG}" | while read -r GERRIT_PROJECT
do
  UNIT_TEST_PKG=$(basename "${GERRIT_PROJECT}")
  WORKSPACE="$(mktemp -d --tmpdir openbmc-build-scripts.XXXXXX)"
  git clone . "${WORKSPACE}"/openbmc-build-scripts
  git_clone_repo "${GERRIT_PROJECT}" "${WORKSPACE}"
  ./run-unit-test-docker.sh
  rm -rf "${WORKSPACE}"
done
