#!/bin/bash
# -----------------------------------------------------------------------------
# Runs the custom version of Buck required by ONOS.
# -----------------------------------------------------------------------------

set -e

BUCK_URL="http://onlab.vicci.org/onos/third-party/buck-v2016.11.12.01.zip"
BUCK_SHA="c7472ed3046b6126d3eab2d06cccae2f488e3d85"
REQUIRED_VERSION="buck version 50b259823655bd5f5f4be7a1e15fb22b4a2e62d5"

[  "-U" = "$1" ] && shift && FORCE_UPDATE=True

ROOT_DIR=${ONOS_ROOT:-"$( cd "$( dirname "${BASH_SOURCE[0]}" )/../.." && pwd )"}

mkdir -p $ROOT_DIR/bin
pushd $ROOT_DIR/bin > /dev/null

if [ -n "$FORCE_UPDATE" ] || [ ! -f "buck" ] || [ "$REQUIRED_VERSION" != "$(cat .buck_version)" ]; then
    echo "Updating Buck..."
    rm -fr .buck_version buck plugins
    mkdir -p cache
    BUCK_FILE=$(basename $BUCK_URL)
    # Check the local cache; download to cache if required
    [ -f "cache/$BUCK_FILE" ] || curl -o cache/$BUCK_FILE -L $BUCK_URL
    if [ -n "$(which shasum)" ]; then
        SHA=$(shasum cache/$BUCK_FILE | cut -d' ' -f1)
        [ "$SHA" != "$BUCK_SHA" ] &&
           echo "ERROR: Downloaded SHA ($SHA) does not match expected SHA ($BUCK_SHA)" &&
           exit 1
    else
        echo "SHA cannot be verified"
    fi
    unzip cache/$BUCK_FILE
    # Kill buckd
    ps -ef | egrep buckd | grep -v egrep | cut -c7-11 | xargs kill 2>/dev/null || :
    rm -rf $ROOT_DIR/buck-out
    printf "Successfully updated Buck in $ROOT_DIR/bin/buck to $BUCK_FILE\n\n"
fi
popd > /dev/null

BUCK=$ROOT_DIR/bin/buck

# Finally, run the Buck command...
$BUCK "$@"
