#!/bin/bash
# -----------------------------------------------------------------------------
# Uploads ONOS Java API docs.
# -----------------------------------------------------------------------------

set -e

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

user=${1:-${WIKI_USER:-$USER}}
remote=$user@api.onosproject.org

docs=$(onos-buck build //docs:external --show-output 2>/dev/null | tail -1 | cut -d\  -f2)

ONOS_VERSION_STRING=$ONOS_VERSION
if echo $ONOS_VERSION_STRING | grep '-b'; then
    echo "ONOS version $ONOS_VERSION_STRING is a beta. Skipping"
    exit 0
fi

scp $remote:/var/www/api/index.html /tmp/index.html
CURRENT_VERSION_STRING=`grep URL /tmp/index.html | sed "s%.*URL=/%%" | sed "s%/.*%%"`
CURRENT_VERSION_SPLIT=(${CURRENT_VERSION_STRING//\./ })
ONOS_VERSION_SPLIT=(${ONOS_VERSION_STRING//\./ })

if (( ${ONOS_VERSION_SPLIT[1]} >= ${CURRENT_VERSION_SPLIT[1]} )); then
    replace="1"
    echo "Should replace current version $CURRENT_VERSION_STRING with new ONOS version $ONOS_VERSION_STRING"
else
    echo "Not replacing current version $CURRENT_VERSION_STRING with ONOS version $ONOS_VERSION_STRING"
    replace="0"
fi

if echo $ONOS_VERSION_STRING | grep '-'; then
    echo "ONOS version $ONOS_VERSION_STRING is a beta or RC. Not replacing default document set."
    replace="0"
fi

scp $docs $remote:/tmp/onos-apidocs-$ONOS_VERSION.tar.gz
ssh $remote "
    mkdir -p /var/www/api/$ONOS_VERSION
    cd /var/www/api/$ONOS_VERSION
    unzip /tmp/onos-apidocs-$ONOS_VERSION.tar.gz
    #mv onos-apidocs-$ONOS_VERSION/* .
    #rm -rf onos-apidocs-$ONOS_VERSION

    # bump /var/www/api/index.html
    if [ "$replace" == "1" ]; then
       sed -i -E 's#/[^/]+/#/$ONOS_VERSION/#g' /var/www/api/index.html
    fi
"
