#!/bin/bash
# -----------------------------------------------------------------------------
# Packages ONOS distributable into onos.tar.gz, onos.zip or a deb file
# -----------------------------------------------------------------------------

set -e

# Build the staging directory used to produce the packages
function build_stage_dir() {
    # Make sure we have the original apache karaf bits first
    [ ! -d $M2_REPO ] && echo "M2 repository $M2_REPO not found" && exit 1
    [ -d $ONOS_STAGE ] && echo "ONOS stage $ONOS_STAGE already exists" && exit 1

    # Create the stage directory and warp into it
    mkdir -p $ONOS_STAGE
    cd $ONOS_STAGE

    # Check if Apache Karaf bits are available and if not, fetch them.
    if [ ! -f $KARAF_ZIP -a ! -f $KARAF_TAR ]; then
        echo "Downloading $KARAF_TAR..."
        curl -sL http://downloads.onosproject.org/third-party/apache-karaf-$KARAF_VERSION.tar.gz > $KARAF_TAR
    fi
    [ ! -f $KARAF_ZIP -a ! -f $KARAF_TAR ] && \
        echo "Apache Karaf bits $KARAF_ZIP or $KARAF_TAR not found" && exit 1

    # Unroll the Apache Karaf bits, prune them and make ONOS top-level directories.
    [ -f $KARAF_ZIP ] && unzip -q $KARAF_ZIP && rm -rf $ONOS_STAGE/$KARAF_DIST/demos
    [ -f $KARAF_TAR ] && tar zxf $KARAF_TAR && rm -rf $ONOS_STAGE/$KARAF_DIST/demos
    mkdir bin

    # Stage the ONOS admin scripts and patch in Karaf service wrapper extras
    cp -r $ONOS_ROOT/tools/package/bin .
    cp -r $ONOS_ROOT/tools/package/init $ONOS_STAGE/init
    cp -r $ONOS_ROOT/tools/package/etc/* $ONOS_STAGE/$KARAF_DIST/etc

    # Stage all builtin ONOS apps for factory install
    onos-stage-apps $ONOS_STAGE/apps $ONOS_STAGE/$KARAF_DIST/system

    # Mark the org.onosproject.drivers app active by default
    touch $ONOS_STAGE/apps/org.onosproject.drivers/active

    # Patch-in proper Karaf version into the startup script
    sed "s/\$KARAF_VERSION/$KARAF_VERSION/g" \
        $ONOS_ROOT/tools/package/bin/onos-service > bin/onos-service
    sed "s/\$KARAF_VERSION/$KARAF_VERSION/g" \
        $ONOS_ROOT/tools/package/bin/onos-client > bin/onos
    chmod a+x bin/onos-service bin/onos

    # Stage the ONOS bundles, but only those that match the version
    mkdir -p $ONOS_STAGE/$KARAF_DIST/system/org/onosproject
    find $M2_REPO/org/onosproject -type f -path "*/$ONOS_POM_VERSION/*" \
        -name '*.jar' -o -name '*.pom' -o -name '*-features.xml' \
            | grep -v -Ee '-tests.jar|-[0-9]{8}.[0-9]{6}-' \
            | while read src; do
        dst=$ONOS_STAGE/$KARAF_DIST/system/${src#$M2_REPO/*}
        mkdir -p $(dirname $dst)
        cp $src $dst
    done

    # ONOS Patching ----------------------------------------------------------------

    # Patch the Apache Karaf distribution file to add ONOS features repository
    perl -pi.old -e "s|^(featuresRepositories=.*)|\1,mvn:org.onosproject/onos-features/$ONOS_POM_VERSION/xml/features|" \
        $ONOS_STAGE/$KARAF_DIST/etc/org.apache.karaf.features.cfg

    # Patch the Apache Karaf distribution file to load default ONOS boot features
    export BOOT_FEATURES="webconsole,onos-api,onos-core,onos-incubator,onos-cli,onos-rest,onos-gui"
    perl -pi.old -e "s|^(featuresBoot=.*)|\1,$BOOT_FEATURES|" \
        $ONOS_STAGE/$KARAF_DIST/etc/org.apache.karaf.features.cfg

    # Patch the Apache Karaf distribution with ONOS branding bundle
    cp $M2_REPO/org/onosproject/onos-branding/$ONOS_POM_VERSION/onos-branding-*.jar \
        $ONOS_STAGE/$KARAF_DIST/lib

    # Patch in the ONOS version file
    echo $ONOS_VERSION > $ONOS_STAGE/VERSION
}

function build_compressed_package() {
    # Package up the ONOS tar file
    cd $ONOS_STAGE_ROOT
    rm -f $ONOS_TAR $ONOS_ZIP
    COPYFILE_DISABLE=1 tar zcf $ONOS_TAR $ONOS_BITS

    # Figure out whether we should build ONOS zip file and if so, build it.
    which zip >/dev/null && [ -z "$ONOS_TAR_ONLY" ] && buildZip=true || unset buildZip
    [ -n "$buildZip" ] && zip -rq $ONOS_ZIP $ONOS_BITS

    # Report on the archives that were built and clean-up
    [ -n "$buildZip" ] && ls -lh $ONOS_TAR $ONOS_ZIP || ls -lh $ONOS_TAR
    rm -r $ONOS_STAGE
}

# Build a DEB package
function build_deb() {
    echo "You need to be root in order to generate a proper DEB package."

    sudo rm -fr $ONOS_DEB_ROOT

    mkdir -p $ONOS_DEB_ROOT/{DEBIAN,opt,etc/init}

    {
        echo "Package: ONOS"
        echo "Architecture: all"
        echo "Maintainer: ONOS Project"
        echo "Depends: debconf (>= 0.5.00), default-jre-headless (>= 1.8) | openjdk-8-jre | oracle-java8-installer"
        echo "Priority: optional"
        echo "Version: $ONOS_POM_VERSION"
        echo "Description: Open Network Operating System (ONOS) is an"
        echo "  opensource SDN controller."
    } > $ONOS_DEB_ROOT/DEBIAN/control

    cp -r $ONOS_STAGE $ONOS_DEB_ROOT/opt/onos
    cp $ONOS_ROOT/tools/package/init/onos.conf $ONOS_DEB_ROOT/etc/init/

    mkdir -p $ONOS_DEB_ROOT/opt/onos/var/

    sudo chown -R root:root $ONOS_DEB_ROOT

    sudo dpkg-deb --build $ONOS_DEB_ROOT > /dev/null &&
    sudo mv $ONOS_STAGE_ROOT/deb.deb $ONOS_DEB && ls -l $ONOS_DEB
}

# Build an RPM package
function build_rpm() {
    read -r -p "WARN: rpm-build utility and root priviledges are need to build the package. Do you want to continue? [Y/n] " response
    case $response in
        [nN][oO])
            exit 0
            ;;
        *)
            sudo rm -fr $ONOS_RPM_ROOT

            sudo yum -y install rpm-build

            mkdir -p $ONOS_RPM_ROOT/{BUILD,RPMS,SOURCES/ONOS-$ONOS_RPM_VERSION/{etc/init,opt},SPECS,SRPMS}

            cp -r $ONOS_STAGE $ONOS_RPM_ROOT/SOURCES/ONOS-$ONOS_RPM_VERSION/opt/onos
            cp $ONOS_ROOT/tools/package/init/onos.conf $ONOS_RPM_ROOT/SOURCES/ONOS-$ONOS_RPM_VERSION/etc/init/

            cd $ONOS_RPM_ROOT/SOURCES
            COPYFILE_DISABLE=1 tar zcf ONOS-$ONOS_RPM_VERSION.tar.gz ONOS-$ONOS_RPM_VERSION

            {
                echo "Name: ONOS"
                echo "Version: $ONOS_RPM_VERSION"
                echo "Release: 1"
                echo "Summary: Open Networking Operating System (ONOS)"
                echo "Vendor: ONOS Project"
                echo "Packager: ONOS Project"
                echo "Group: Applications/Engineering"
                echo "Requires: jre >= 1:8"
                echo "License: Apache 2.0"
                echo "URL: http://www.onosproject.org"
                echo "Source0: ONOS-$ONOS_RPM_VERSION.tar.gz"
                echo "BuildArch: noarch"
                echo "BuildRoot: %{_tmppath}/%{name}-buildroot"
                echo "%description"
                echo "Open Network Operating System (ONOS) is an opensource SDN controller."
                echo -e "\n"
                echo "%prep"
                echo "%setup -q"
                echo -e "\n"
                echo "%install"
                echo "mkdir -p %{buildroot}"
                echo "cp -R * %{buildroot}"
                echo -e "\n"
                echo "%clean"
                echo "rm -rf %{buildroot}"
                echo -e "\n"
                echo "%files"
                echo "%defattr(-,root,root,-)"
                echo "/etc/init/onos.conf"
                echo "/opt/onos/"
                echo -e "\n"
                echo "%post"
                echo "echo ONOS successfully installed at /opt/onos"
            } > $ONOS_RPM_ROOT/SPECS/onos.spec

            rpmbuild --define "_topdir $ONOS_RPM_ROOT" -bb $ONOS_RPM_ROOT/SPECS/onos.spec

            cp $ONOS_RPM_ROOT/RPMS/noarch/ONOS-$ONOS_RPM_VERSION-1.noarch.rpm $ONOS_STAGE_ROOT && ls -l $ONOS_STAGE_ROOT/ONOS-$ONOS_RPM_VERSION-1.noarch.rpm
            ;;
    esac
}

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

# Bail on any errors
set -e

# Before starting make sure the environment is clan - delete onos staging folder
rm -fr $ONOS_STAGE

# If there are parameters check if we want to build a deb - otherwise build tar.gz
case ${1:---tar} in
    "--tar" | "-T") build_stage_dir
                    build_compressed_package
    ;;
    "--deb" | "-D") build_stage_dir
                    build_deb
    ;;
    "--rpm" | "-R") build_stage_dir
                    build_rpm
    ;;
    *) echo "usage: $(basename $0) [--tar|--deb|--rpm]" >&2 && exit 1
    ;;
esac
