#!/bin/bash
# -----------------------------------------------------------------------------
# Monitors selected set of ONOS commands using the system watch command.
# -----------------------------------------------------------------------------
function _usage () {
cat << _EOF_
usage:
 $(basename $0) [node] <commands> [watchflags]

options:
- [node] <commands> : the node to run the commands against
- [watchflags]      : flags to be passed to the watch command.

summary:
 Monitors selected set of ONOS commands using the system watch command.

 <commands> is a comma-sepatarted list of ONOS CLI commands. If no commands
 are supplied, the commands run are 'summary', 'intents', 'flows', and
 'hosts' against \$OCI.

 Note that [watchflags] only applies to platforms with the Linux-like watch
 command. For other platforms, the default behavior of watch (refresh every 2
 s) is emulated.

_EOF_
}

[ "$1" = "-h" ] && _usage && exit 0

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

node=${1:-$OCI}

commands="${2:-summary,intents,flows,hosts}"

aux=/tmp/onos-watch.$$
trap "rm -f $aux" EXIT

echo "$commands" | tr ',' '\n' > $aux

# emulate watch if not Linux.
if [ "$(uname)" != "Linux" ]; then
    while clear; "onos $node -b <$aux 2>/dev/null" ; do sleep 2; done
else
    watch $3 "onos $node -b <$aux 2>/dev/null"
fi
