#!/bin/bash
# -----------------------------------------------------------------------------
# Tool to perform a cell-based remote bazel build using a borrowed test cell.
# -----------------------------------------------------------------------------

# Check environment
[ -z "$OCN" ] && echo "Cell environment not established" && exit 1

runTests=false
useCache=false
noBuild=false

while getopts b:cnt?h o; do
    case "$o" in
        b) branch=$OPTARG;;
        c) useCache=true;;
        n) noBuild=true;;
        t) runTests=true;;
        *) echo "usage: cell-build [-b branch] [-cnt] [commitHash]" >&2; exit 1;;
    esac
done

let OPC=$OPTIND-1
shift $OPC

! git status &>/dev/null && echo "Not in a git workspace. Exiting..." && exit $?

# Check arguments and environment
branch=${branch:-origin/master}
baseCommit=${1:-$(git log | grep $branch | head -n1 | cut -d\  -f2)}

# Create a patch file
git diff $baseCommit > /tmp/$baseCommit.patch

# Copy patch file to the remote build machine
scp /tmp/$baseCommit.patch $ONOS_USER@$OCN:/tmp

ssh -t -t $ONOS_USER@$OCN "
    source ~/.bash_aliases
    cd \$ONOS_ROOT

    # Clean-up the workspace and stash away any changes.
    git clean -f
    git stash

    # Make sure the remote build machine is on the same commit hash as the local one
    remoteCommit=\$(git log -n 1 | head -n1 | cut -d\  -f2)
    if [ "\$remoteCommit" != "$baseCommit" ]; then
        git checkout master
        git pull --no-stat
        git checkout $baseCommit
    fi

    # Apply the patch if necessary
    [ -s /tmp/$baseCommit.patch ] && git apply /tmp/$baseCommit.patch

    # Promote the common bazelrc file to enable running against the cells cache
    [ $useCache = true ] && cp ~/.bazelrc .bazelrc

    # Run the build (neutralizing known environment mutations in SSH sessions)
    set -e
    [ $noBuild = false ] && SHLVL=1 SSH_CLIENT=0 SSH_CONNECTION=0 bazel build onos
    [ $runTests = true ] && bazel query 'tests(//...)' | SHLVL=1 SSH_CLIENT=0 SSH_CONNECTION=0 xargs bazel test
"
