can be run as non-root
[infrastructure.git] / scripts / all-modules.sh
1 #!/bin/bash
2 # $Id$
3 # this script is a wrapper around the module-tools (version and diff)
4 # it is invoked cyclically
5 # prior to that, the following directories will have been svn updated :
6 # ~/svn-build
7 # ~/root/svn-build-4.2
8
9 # avoid running several instances of this script
10 # when the svn server has problems, this can very well last quite a while
11
12 COMMAND=$(basename $0)
13
14 # make the command usable as non-root user at Princeton for more efficiency
15 if [ "$(id -u)" == "0" ] ; then
16     OUTPUT=/build/modules
17     LOCK=/var/run/all-modules.pid
18 else
19     OUTPUT=~/all-modules
20     LOCK=~/all-modules/run.pid
21 fi
22
23 function do_update() {
24     build_dir=$1; shift
25     if [ -f $build_dir/auto-update.sh ] ; then
26         $build_dir/auto-update.sh
27     else
28         ( cd $build_dir; svn update > .update.log 2>&1 )
29     fi
30 }
31
32 # usage: do_version dir name 
33 function do_version () {
34     build_dir=$1; shift
35     name=$1; shift
36
37     out_dir=$OUTPUT/$name
38     out_file=$out_dir/version.html
39     out_tmp=$out_dir/.version.html
40     
41     mkdir -p $out_dir
42     $build_dir/module-version --www $name -a --url &> $out_tmp
43     mv -f $out_tmp $out_file
44 }
45
46 # usage: do_version dir name 
47 function do_diff () {
48     build_dir=$1; shift
49     name=$1; shift
50
51     out_dir=$OUTPUT/$name
52     out_file=$out_dir/diff.html
53     out_tmp=$out_dir/.diff.html
54     
55     mkdir -p $out_dir
56     $build_dir/module-diff --www $name -a &> $out_tmp
57     mv -f $out_tmp $out_file
58
59 }
60
61 function usage () {
62     echo "Usage: $COMMAND [-v] [-f] [-i]"
63 }
64
65 function main () {
66
67     while [[ -n "$@" ]] ; do
68         case "$1" in 
69             -f) rm -f $LOCK ;;
70             -i) ls -l $LOCK ; exit 0 ;;
71             -v) set -x ;;
72             *) usage; exit 1;;
73         esac
74         shift
75     done
76
77     [ -f $LOCK ] && exit 1
78     
79     echo $$ > $LOCK
80
81     do_update  ~/svn-build-4.3
82     do_diff    ~/svn-build-4.3 4.3
83     do_version ~/svn-build-4.3 4.3 
84     do_update  ~/svn-build
85     do_diff    ~/svn-build     5.0
86     do_version ~/svn-build     5.0 
87
88     rm $LOCK
89
90 }
91
92 main "$@"