#!/bin/bash

set -eou pipefail
set -x

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

function 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}"
}

function 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=

function 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.org/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
