#!/bin/bash
# 
# Get current pd externals cvs code
#
#
STAMP=`date +"%Y%m%d.%H%M%S"`
VERSION=`date +"%Y.%m.%d`
REVISION=0

# where sources go
SOURCEDIR=/usr/src/redhat/SOURCES

if [ ! -d pd-externals-${STAMP} ] ; then
   echo
   echo "Creating download directory: pd-externals-${STAMP}"
   mkdir pd-externals-${STAMP}
else
   echo "Error: download directory pd-externals-${STAMP} already exists!"
   exit 1
fi
cd pd-externals-${STAMP}
echo

echo "NOTE: press <enter> when prompted for password"
echo
cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/pure-data login

echo "  getting pd externals..."
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/pure-data co externals
echo "  creating pd externals tarball..."
if [ -d externals ] ; then
   touch externals/CVS-${STAMP}
   mv externals pd-externals
   tar czf ../pd-externals-${STAMP}.tar.gz pd-externals
fi
cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/pure-data logout
#
# generate tarballs for all internal subpackages
#

function erase_cvs_dirs () {
    find . -name CVS|xargs rm -rf
}

function find_latest_file () {
    # find which file is newest in package
    find ./$1 -type f -printf "%TY.%Tm.%Td  %f\n"|sort -n|tail -1
}

function make_tarball () {
    echo "processing $1..."
    LATEST=`find_latest_file $1`
    echo "   last file is ${LATEST}"
    TARDATE=`echo ${LATEST}|awk '{print $1}'`
    LASTFILE=`echo ${LATEST}|awk '{print $2}'`
    echo "${LATEST}">$1/CVS-${TARDATE}
    if [ -z "$2" ] ; then
	tar czf ${SOURCEDIR}/$1-0.${TARDATE}.tar.gz $1
    else
	tar czf ${SOURCEDIR}/$1-$2.tar.gz $1
    fi
}

# go in
cd pd-externals

# erase all CVS stuff
erase_cvs_dirs

make_tarball OSCx
make_tarball aenv~
make_tarball ann
make_tarball arraysize
make_tarball beatpipe
make_tarball chaos
make_tarball creb
make_tarball cxc
make_tarball dfx
make_tarball ext13
make_tarball ff

(cd footils
make_tarball fluid
make_tarball shabby
make_tarball syncgrain
# don't package flext-iiwu
)

make_tarball gem2pdp
make_tarball ggee

(cd grill
make_tarball dyn
make_tarball fftease

# flext version:
VERSION=`grep FLEXT_VERSTR flext/source/flext.h | awk '{print $3}' | sed 's/"//g'`
make_tarball flext ${VERSION}

make_tarball idelay
make_tarball pool
make_tarball prepend
make_tarball py
make_tarball vasp
make_tarball vst
make_tarball xsample
)

make_tarball hcs
make_tarball jackx
make_tarball markex
make_tarball maxlib
make_tarball miXed
make_tarball motex
make_tarball pdogg
make_tarball pdp
make_tarball pidip
make_tarball plugin~
make_tarball pso
make_tarball rhythm_estimator
make_tarball sprinkler
make_tarball susloop~
make_tarball svf~
make_tarball tbext
make_tarball unauthorized
make_tarball vbap
make_tarball vst

# zexy version:
VERSION=`grep VERSION zexy/src/zexy.h | cut -d ' ' -f 3 | cut -d '"' -f 2`
make_tarball zexy ${VERSION}

make_tarball zhzxh~

# back out
cd ../

cd ../
if [ -d pd-externals-${STAMP} ] ; then
   echo "  removing download directory..."
   rm -r pd-externals-${STAMP}
fi
# print current version numbers for spec file
echo
echo "Current version numbers:"
echo
echo "%define version  ${VERSION}"
echo "%define cvs_date ${STAMP}"
echo
exit
