#!/bin/bash
# -----------------------------------------------------------------------------
# Patches lib/BUCK file to use locally built YANG tools.
# -----------------------------------------------------------------------------

BVER=2.3
SVER=2.3-SNAPSHOT

YANG_TOOLS_ROOT=${YANG_TOOLS_ROOT:-~/onos-yang-tools}

rm -f $ONOS_ROOT/lib/yang/* 2>/dev/null
mkdir -p $ONOS_ROOT/lib/yang

awk '
    BEGIN { m = 0; y = 0; }
    /^(remote_jar|prebuilt_jar)/ { s = $0; m = 1; next; }
    { if (m) { s = s "\n" $0; } else { print $0; } }
    /onos-yang-.*('$BVER'|'$SVER')/ { y = 1; }
    /^\)/ { if (m && !y) { print s; } y = 0; m = 0; }
' $ONOS_ROOT/lib/BUCK > /tmp/BUCK
mv /tmp/BUCK $ONOS_ROOT/lib/BUCK

for yl in $(egrep "onos-yang-.*$BVER" $ONOS_ROOT/lib/deps.json); do
    n=$(echo $yl | cut -d\" -f2)
    m=$(echo $yl | cut -d\" -f4)
    m=${m/$BVER/$SVER}
    j=$(find $YANG_TOOLS_ROOT -name $n-$SVER.jar)
    s=yang/$(basename $j)
    cp $j $ONOS_ROOT/lib/$s

    # echo $n, $m, $j

    cat <<EOF >>$ONOS_ROOT/lib/BUCK
prebuilt_jar (
  name = '$n',
  binary_jar = '$s',
  maven_coords = '${m#mvn:*}',
  visibility = [ 'PUBLIC' ],
)

EOF
done

YANG_PLUGIN_SRC=$YANG_TOOLS_ROOT/compiler/plugin/buck/target/onos-yang-compiler-buck-plugin-$SVER.jar
if [ ! -f "$YANG_PLUGIN_SRC" ]; then
    mvn -f $YANG_TOOLS_ROOT/pom.xml -am -pl :onos-yang-compiler-buck-plugin install -DskipTests -Dcheckstyle.skip
fi
# Patch the YANG BUCK plugin
cp -p $YANG_PLUGIN_SRC \
        $ONOS_ROOT/bin/plugins/yang.jar
