#!/bin/sh set -e src_dirs="compiler98 cpphs hsc2hs" default_repo_root="http://darcs.haskell.org/" default_lib_repo_root=$default_repo_root/packages quiet=YES message() { if [ "$quiet" = "NO" ]; then echo $* fi } darcsall() { message "== running darcs $* at the top level" darcs $* for dir in $src_dirs; do if test -d src/$dir -a -d src/$dir/_darcs; then message "== running darcs $* in src/$dir" darcs $* --repodir src/$dir else echo "warning: src/$pkg doesn't seem to exist, use 'sh start' to get it" fi done for pkg in `cat src/libraries/default-packages`; do pkgname=`basename $pkg` if test -d src/libraries/$pkgname; then message "== running darcs $* in src/libraries/$pkgname" darcs $* --repodir src/libraries/$pkgname else echo "warning: $pkgname doesn't seem to exist, use 'darcs-all get' to get it" fi done } darcsget() { case $* in *--partial*) ;; *) echo "warning: adding --partial, to override use --complete" esac repo_root=`cat _darcs/prefs/defaultrepo` case $repo_root in /*) lib_repos=$repo_root/libraries;; *) lib_repos=$default_lib_repo_root;; esac cd src/libraries for pkg in `cat default-packages`; do pkgname=`basename $pkg` if test -d $pkgname; then echo "warning: $pkgname already present; omitting" else if [ "`dirname $pkg`" = "." ] then repo=$lib_repos/$pkgname else repo=$pkg fi message "== running darcs get --partial $* $repo" darcs get --partial $* $repo fi done } if test ! -d _darcs -o ! -d src; then echo "error: darcs-all must be run from the top level of the nhc98 tree." exit 1; fi case $* in *-q*) quiet=YES;; esac case $1 in get) shift; darcsget $*;; # Hack around whatsnew failing if there are no changes w|wh|wha|what|whats|whatsn|whatsne|whatsnew) set +e; darcsall $*;; # Likewise for push failing if the URL is http: rather than ssh: pu|pus|push) set +e; darcsall $*;; *) darcsall $*;; esac