#!/bin/bash
# -----------------------------------------------------------------------------
# Checks if ONOS bits are available in preparation for install.
# -----------------------------------------------------------------------------

[ ! -d "$ONOS_ROOT" ] && echo "ONOS_ROOT is not defined" >&2 && exit 1
. $ONOS_ROOT/tools/build/envDefaults

# If the bazel-built bits are newer than the buck-built bits, use the former.
BUCK_TAR=$ONOS_ROOT/buck-out/gen/tools/package/onos-package/onos.tar.gz
BAZEL_TAR=$ONOS_ROOT/bazel-bin/onos.tar.gz
if [ -f $BAZEL_TAR ] && [ $BAZEL_TAR -nt $ONOS_TAR ]; then
    rm -f $ONOS_TAR >/dev/null; ln -s $BAZEL_TAR $ONOS_TAR
else
    if [ -f $BUCK_TAR ] && [ $BUCK_TAR -nt $ONOS_TAR ]; then
        rm -f $ONOS_TAR >/dev/null; ln -s $BUCK_TAR $ONOS_TAR
    fi
fi

ls -lL $ONOS_TAR  && cksum $ONOS_TAR
if [ $? -ne 0 ]; then
  echo "ONOS archive is unreadable" && exit 1
fi

tar tzf ${ONOS_TAR} >/dev/null
if [ $? -ne 0 ]; then
  echo "ONOS archive is not a valid tar file" && exit 1
fi

tar tzf ${ONOS_TAR} | grep -q "onos-${ONOS_POM_VERSION}.*/VERSION"
if [ $? -ne 0 ]; then
  echo "ONOS archive does not contain the proper version file" && exit 1
fi

tar tzf ${ONOS_TAR} | grep -q apache-karaf-4.2.9
if [ $? -ne 0 ]; then
  echo "ONOS archive does not contain karaf" && exit 1
fi

tar tzf ${ONOS_TAR} | grep -q apps/org.onosproject.openflow
if [ $? -ne 0 ]; then
  echo "ONOS archive does not contain openflow app" && exit 1
fi

tar tzf ${ONOS_TAR} | grep -q onos-core-net
if [ $? -ne 0 ]; then
  echo "ONOS archive does not contain onos-core-net" && exit 1
fi
