#!/usr/bin/env bash
#
# $Id$
#
export CVS_RSH=ssh
TAG=
WO=0
DEST=

if [ "x$1" = "x-u" ]; then
    DEST=$2
    shift 2

    # gnu tar (as of 1.15.1) is unable to create portable tar archives, 
    # especially if long file names (>100 char) are present.
    # star is a better replacement.
    if [ -x /usr/bin/star ]; then
        TAR='/usr/bin/star -Hustar -not -pat="*/CVS/*" -c -f'
    elif [ -x /bin/tar ]; then
        TAR="/bin/tar --exclude=CVS -c -f"
    else
        echo "neither /usr/bin/star nor /bin/tar found."
        exit
    fi
fi

if [ $# -eq 0 ]; then
    DIR=$PWD
else
    if [ $# -ne 1 ]; then
        echo "usage: $0 <working directory>"
        exit
    fi
    DIR=$1
fi

if [ -z ${DIR##*/} ];then
   DIR=${DIR%/*}
fi
SUBD=${DIR##*/}
PARENT=${DIR%*$SUBD}
#echo "$DIR = $PARENT + $SUBD"

if [ ! -d $DIR ]; then
    echo "no such directory '$DIR'"
    exit
fi

if [ ! -d $DIR/CVS ]; then
    echo "'$DIR' has no CVS directory!"
    exit
fi

if [ ! -f $DIR/CVS/Repository ]; then
    echo "'$DIR' has no CVS/Repository!"
    exit
fi

if [ ! -f $DIR/CVS/Root ]; then
    echo "'$DIR' has no CVS/Root!"
    exit
fi

if [ -f $DIR/CVS/Tag ]; then
    TAG=`cat $DIR/CVS/Tag | cut -c 2-`
    CMDTAG="-r $TAG"
fi

REP="`cat $DIR/CVS/Repository`"
ROOT="`cat $DIR/CVS/Root`"

cd $DIR
#echo $PWD
#    COMMAND="cvs -q -z3 -d $ROOT co $TAG -d $DIR $REP"

COMMAND="cvs -q -z3 -d $ROOT update -P -d $CMDTAG"

if [ ! -w $DIR/CVS ]; then
    if [ -O $DIR/CVS ]; then
        WO=1
        echo "Making $DIR writable"
        chmod -R u+w $DIR
    fi
fi

echo "Updating directory $DIR with $TAG $REP..."
echo "$COMMAND"

$COMMAND
rc=$?
if [ $rc -ne 0 ]; then
    echo "cvs command returned $?"
fi

if [ $WO -eq 1 ]; then
    echo "Making $DIR read-only"
    chmod -R a-w $DIR
fi

if [ ! -z $DEST ]; then
    if [ -z $TAG ]; then
        TAG=MAIN
    fi

  if [ $rc -ne 0 ]; then
    echo "skipping upload"
  else
    cd ..
#    echo $PWD
    DATE=`date +%Y%m%d_%H%M`
    SOURCE=$REP-cvs-$TAG"_$DATE"
    $TAR /tmp/$SOURCE.tar $SUBD
    gzip -f --best /tmp/$SOURCE.tar
    scp /tmp/$SOURCE.tar.gz $DEST
    rm -f /tmp/$SOURCE.tar.gz
  fi
fi
