#!/bin/bash SRCDIR="/root/hula" DISTDIR="/opt/distfiles" OVERLAY="/usr/local/portage/overlay" SCRIPTDIR="/opt/scripts" enterRevision() { if [ -f "${SRCDIR}/trunk/.svn/entries" ]; then REVISION=`cat "${SRCDIR}/trunk/.svn/entries" | grep revision= | cut -d "\"" -f 2` echo "* Detected rev: ${REVISION}" else echo "Hula source not found in ${SOURCE}..." echo -n "Press to get Hula from SNV or to quit..." read svnCheckout fi } createSymlink() { enterRevision echo "* Removing current symlinks (if any)" rm -f ${SRCDIR}/trunk/hula-r* echo "* Creating new symlink (hula-r${REVISION})" cd ${SRCDIR}/trunk ln -s hula hula-r${REVISION} } svnCheckout() { cd "${SRCDIR}" echo "* Logging into SVN. When prompted for a password, enter \"anonymous\" (twice)" svn checkout svn+ssh://anonymous@forgesvn1.novell.com/svn/hula/trunk echo createSymlink echo "* Done..." } buildTarball() { createSymlink echo "Building ${DISTDIR}/hula-r${REVISION}.tgz (this may take a while...)" cd "${SRCDIR}/trunk" tar zchf "${DISTDIR}/hula-r${REVISION}.tgz" hula-r${REVISION}/ echo "* Done..." } quitScript() { echo echo "Cleaning up symlinks..." rm -f "${SRCDIR}/trunk/hula-r*" } updateEbuild() { enterRevision cd ${SRCDIR} mkdir -p "${OVERLAY}/net-mail/hula" echo "* Creating new ebuild (hula-${REVISION}.ebuild)" cp -p ${SCRIPTDIR}/hula-xxx.ebuild "${OVERLAY}/net-mail/hula/hula-${REVISION}.ebuild" echo "* Creating digest for new ebuild (hula-${REVISION}.ebuild)" cd "${OVERLAY}/net-mail/hula" ebuild hula-${REVISION}.ebuild digest echo "* Done..." } displayMenu() { echo echo "Get hula from SVN script..." echo echo " 1. Update from SVN" echo " 2. Build tarball in \"${DISTDIR}\"" echo " 3. Update ebuild in \"${OVERLAY}\"" echo " a. 1-2-3" echo " q. Give up..." echo echo -n "> What do you want? " read ANSWER case ${ANSWER} in "1" ) svnCheckout && displayMenu;; "2" ) buildTarball && displayMenu;; "3" ) updateEbuild && displayMenu;; "a" ) svnCheckout && buildTarball && updateEbuild && displayMenu;; "q" ) quitScript;; * ) echo "??? Don't understand you..." && displayMenu;; esac } displayMenu