#!/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

while getopts b:ct?h o; do
    case "$o" in
        b) branch=$OPTARG;;
        c) useCache=true;;
        t) runTests=true;;
        *) echo "usage: cell-build [-b branch] [-ct] [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
    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
"
