#!/bin/sh

set -e

if [ "$#" -ne 1 ]
then
    echo "Must give exactly one argument (branch name)"
    exit 1
fi

DIR="$1"

if [ -e "$DIR" ]
then
    echo "Directory already exists - wimping out" >&2
    exit 1
fi

mkdir "$DIR"
cd "$DIR"
mkdir packages
for r in `cat ../ghc/packages |
          grep '^[^#][^ ]* \+\(-\|testsuite\|nofib\) \+[^ ]\+ \+[^ ]\+ \+[^ ]\+$' |
          sed 's/^[^ ]\+ \+[^ ]\+ \+\([^ ]\+\) \+[^ ]\+ \+[^ ]\+$/\1/'`
do
    echo "Doing $r"
    if [ "$r" = "." ]
    then
        r=ghc
    fi

    if echo "$r" | grep -q " "
    then
        echo "Error: Space in repo name" >&2
        exit 1
    fi
    darcs get ../"$r" "$r"
    MOTD="$r"/_darcs/prefs/motd
    DEFAULTS="$r"/_darcs/prefs/defaults
    EMAIL="$r"/_darcs/prefs/email
    if [ -e ../"$MOTD" ]
    then
        sed "s/HEAD/$DIR/" ../"$MOTD" > "$MOTD"
    fi
    if [ -e ../"$DEFAULTS" ]
    then
        cp ../"$DEFAULTS" "$DEFAULTS"
    fi
    if [ -e ../"$EMAIL" ]
    then
        cp ../"$EMAIL" "$EMAIL"
    fi
    ( cd "$r" && /srv/local/bin/boothash )
done

