#!/bin/sh

progname="${0##*/}"

warn ()
{
    [ "$1" ] && echo >&2
    [ "$1" ] && echo "$progname: $1" >&2
    [ "$1" ] && echo >&2
}

fatal ()
{
    warn "$2"
    exit "$1"
}

usage ()
{
    cat <<EOF
Usage: $progname lustretag
  where lustretag is a tag of the lustre-core module
EOF
}

buildtag="HEAD"
lustretag="$1"

case "$lustretag" in
    '')
        warn "a lustretag is required."
	usage >&2
	exit 1
	;;
    --help | -h)
	usage
	exit 0
	;;

    # this is the branch table
    # keep this list sorted alphabetically!

    *)
        buildtag="HEAD"
	;;

esac

cvs_cmd ()
{
    local dir="$1"
    local module="$2"
    local tag="$3"
    local cvstag=""

    if [ "$tag" != "HEAD" ] ; then
	cvstag="-r $tag"
    fi

    if [ -d "$dir" ] ; then
	echo "$progname: Updating $dir to $tag"
	( cd "$dir" && cvs up $cvstag )
    else
	echo "$progname: Checking out $dir from $tag"
	cvs co $cvstag -d "$dir" "$module"
    fi
}

cvs_cmd build lustre-build "$buildtag"

if [ -f build/buildcvs ] ; then
    . build/buildcvs
else
    fatal 1 "build/buildcvs does not exist; not updating other modules."
fi