summaryrefslogtreecommitdiff
path: root/darcs-all
blob: 9906495313b76f06204bdb7408eafa59e9b60b70 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/bin/sh

top_dirs="nofib testsuite"

function darcsall()
{
  for dir in $top_dirs; do
    if test -d $dir -a -d $dir/_darcs; then
	echo "== running darcs $* in $dir"
	(cd $dir && darcs $*)
    else
	echo "== $dir not present or not a repository; skipping"
    fi
  done
  cd libraries
  for repo in `cat default-packages`; do
    dir=`basename $repo`
    if test -d $dir; then
	echo "== running darcs $* in libraries/$dir"
	(cd $dir && darcs $*)
    else
	echo "warning: $dir doesn't seem to exist, use 'darcs-all get' to get it"
    fi
  done
}

function darcsget()
{
  case $* in
    *--partial*) ;;
    *) echo "warning: adding --partial, to override use --complete"
  esac

  cd libraries
  for repo in `cat default-packages`; do
    if test -d `basename $repo`; then
	echo "warning: `basename $repo` already present; omitting"
    else
	echo "== running darcs get --partial $* $repo"
	darcs get --partial $* $repo
    fi
  done
}

if test ! -d _darcs -o ! -d ghc; then
  echo "error: darcs-all must be run from the top level of the ghc tree."
  exit 1;
fi

case $1 in
  push) darcsall $*;;
  pull) darcsall $*;;
  get)  shift; darcsget $*;;
  *)    echo "syntax: ./darcs-all push|pull"; exit 1;;
esac