#!/bin/bash
# -----------------------------------------------------------------------------
# Builds the ONOS Java API docs.
# -----------------------------------------------------------------------------

set -e

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

apidocs=onos-apidocs-${ONOS_VERSION%~*}

function expandList {
    list="";
    while read line; do
        [ -n "$line" ] && list="$list:$line"
    done < $1
    echo "${list#:*}"
}

function processPom {
    cp $1 aux-$1
    egrep '@[a-zA-Z0-9.-]+' $1 | sed 's:^[^@]*@::g' | sed 's:</.*$::g' | while read line; do
        packages="$(expandList $line)"
        sed "s/@$line/$packages/" aux-$1 > aux-$1.aux
        mv aux-$1.aux aux-$1
    done
}

set -e

trap "rm aux-internal.xml aux-external.xml 2>/dev/null" EXIT
rm -fr $ONOS_ROOT/docs/target

cd $ONOS_ROOT/docs
processPom external.xml
mvn -f aux-external.xml javadoc:aggregate

cd target && mv site/apidocs $apidocs
tar zcf $apidocs.tar.gz $apidocs && cp $apidocs.tar.gz /tmp

cd $ONOS_ROOT/docs
processPom internal.xml
mvn -f aux-internal.xml javadoc:aggregate
