#!/bin/bash

set -u
umask 002

OPENAM_VER="9.5.5-3"
AGENT_VER="3.0.4-2"
RELNUM="2"

PRODUCT_NAME="openam9-with-agent"
CATEGORY_NAME="openam"

WORKDATE=`date '+%Y%m%d'`

UPLOAD_BASE_DIR="/project/share/product/release/uploads"
ISODIR="/project/share/product/release/iso"

PRODUCT="/srv/share/product"
RELEASE_DIR="/project/share/product/release/package-oa"
WORK_DIR="$UPLOAD_BASE_DIR/openam/openam9-with-agent-work"
UPLOADS_DIR="$UPLOAD_BASE_DIR/openam/openam9-with-agent-upload"
INFO_DIR="$UPLOAD_BASE_DIR/openam/info"
UPDATES_INFO="$INFO_DIR/openam9-with-agent-$WORKDATE.info"
PACKAGE_INFO="$INFO_DIR/openam9-with-agent-package.info"

DOC_DIR="/project/share/product/release/doc/openam"
INSTALL_GUIDE1="installguide/OSTD-OpenAM-InstallGuide.pdf"
INSTALL_GUIDE2="adminguide/OSTD-OpenAM-Agent-Apache22-Manual.pdf"

if [ -d $UPLOADS_DIR ]; then
    echo "Please remove $UPLOADS_DIR"
    exit 1
fi

if [ -d $WORK_DIR ]; then
    echo "Please remove $WORK_DIR"
    exit 1
fi

if [ ! -d $INFO_DIR ]; then
    mkdir -p $INFO_DIR
fi

if [ -f $UPDATES_INFO ]; then
    rm -f $UPDATES_INFO
fi

echo "## openam-$OPENAM_VER with agent-$AGENT_VER at $WORKDATE ##" >> $PACKAGE_INFO
echo "" >> $PACKAGE_INFO

## Linux
for OS_ARCH in "RHEL6/x86_64" "RHEL5/x86_64" "RHEL5/i386"; do

    OS=`echo $OS_ARCH | awk -F / '{print $1}'`
    ARCH=`echo $OS_ARCH | awk -F / '{print $2}'`
    DIST=`echo $OS|sed 's/RHEL/el/'`

    PKGNAME="osstech-openam-$OPENAM_VER-with-agent-apache22.$RELNUM.$ARCH.$DIST"
    PKGDIR_OPENAM=$RELEASE_DIR/$OS/noarch/$CATEGORY_NAME/openam9
    PKGDIR_AGENT=$RELEASE_DIR/$OS/$ARCH/$CATEGORY_NAME/agent
    
    if [ -d $PKGDIR_OPENAM ]; then
        ls $PKGDIR_OPENAM/|grep $OPENAM_VER > /dev/null
        if [ $? -eq 1 ]; then
            echo "No $OPENAM_VER version in $PKGDIR_OPENAM"
        fi

        if [ -d $PKGDIR_AGENT ]; then
            ls $PKGDIR_AGENT/|grep $AGENT_VER > /dev/null
            if [ $? -eq 1 ]; then
                echo "No $AGENT_VER version in $PKGDIR_AGENT"
            fi

            DISTDIR=$WORK_DIR/$PKGNAME
            mkdir -p $DISTDIR/{docs,pkgs/RPMS/agent}

            ## docs
            cp $DOC_DIR/$INSTALL_GUIDE1 $DISTDIR/docs
            cp $DOC_DIR/$INSTALL_GUIDE2 $DISTDIR/docs
            ## base
            cp -r $RELEASE_DIR/$OS/$ARCH/$CATEGORY_NAME/base $DISTDIR/pkgs/RPMS
            ## openam
            cp -r $PKGDIR_OPENAM $DISTDIR/pkgs/RPMS/openam
            ## agent
            cp $PKGDIR_AGENT/osstech-openam-agent-apache22-*.rpm $DISTDIR/pkgs/RPMS/agent
            ## ldapschema
            cp -r $RELEASE_DIR/$OS/noarch/$CATEGORY_NAME/ldapschema $DISTDIR/pkgs/RPMS/ldapschema

            pushd $WORK_DIR > /dev/null
            tar cfz $PKGNAME.tar.gz $PKGNAME
            env TZ=UTC mkisofs -uid 0 -gid 0 -dir-mode 0755 -file-mode 0755 -J -R -o $PKGNAME.iso $PKGNAME 2> /dev/null
            SHA1HASH=`sha1sum $PKGNAME.tar.gz | awk '{print $1}'`
            RANDNAME=`pwgen -B 6`
            mkdir -p $UPLOADS_DIR/$RANDNAME
            mv $PKGNAME.tar.gz $UPLOADS_DIR/$RANDNAME/
            mkdir -p $ISODIR/$OS/$CATEGORY_NAME
            mv $PKGNAME.iso $ISODIR/$OS/$CATEGORY_NAME/

            ## Create update informations for OSSTech track.
            echo "* $OS($ARCH)" >> $UPDATES_INFO
            echo "  * http://www.osstech.co.jp/download/updates/$PRODUCT_NAME/$RANDNAME/$PKGNAME.tar.gz" >> $UPDATES_INFO
            echo "  * sha1sum: $SHA1HASH" >> $UPDATES_INFO
            echo "" >> $UPDATES_INFO

            ## RPM informations
            echo "* $PKGNAME" >> $PACKAGE_INFO
            echo "`ls -R $PKGNAME | grep rpm`" >> $PACKAGE_INFO
            echo "" >> $PACKAGE_INFO

            popd > /dev/null
            echo "[FINISHED] $PKGNAME"
        fi
    fi
done

