6ab4771e9c4d32513d839ae411822f51070566c2
[gnupg.git] / scripts / mkwebpage
1 #!/bin/sh
2 # Make a snapshot of the CVS head revision for the gnupg webpages
3 # and put them into the FTP directory (so that the mirrors w/o rsync
4 # can access them
5
6
7 set -e
8
9 cd $HOME/pub
10
11 extract_date () {
12     # This strange construct is to speed up things.  Grouping a "s" and a "q"
13     # does not work. Anyway we should use awk instead.
14     # Have to quote the I from $Id so that CVS does not expand it
15     sed '/^.*\$[I]d:.*\$.*$/q' $1 |
16     sed -n 's!^.*\$[I]d: [^ ]\+ [^ ]\+ \([0-9]*\)/\([0-9]*\)/\([0-9]*\) [^ ]\+ \([^ ]\+\).*$!\1-\2-\3 \4!p'
17 }
18
19 # We have to edit most files
20 sed_it () {
21     src=$1
22     dst=$2
23
24     for srcdir in `find $src -type d -print` ; do
25         dstdir=`echo "$srcdir" | sed "s/^$src/$dst/g"`
26         mkdir $dstdir || true
27         for sf in `find $srcdir -type f -maxdepth 1 -print`; do
28             updated=`extract_date $sf`
29             df="$dstdir/`basename $sf`"
30             case "$df" in
31                 *.html)
32                     sed "/@FOOTER@/ {
33                         r $src/footer.html.inc
34                         d
35                         }
36                         /^<body>$/ {
37                         r $src/body-tag.html.inc
38                         d
39                         }
40                         /@UPDATED@/c\\
41 Updated: $updated \\
42 <hr>
43                         /@INSERT_BUGLIST_HERE@/ {
44                         r $src/BUGS
45                         d
46                         }
47                         /@HOSTEDBY@/ {
48                         r $src/hostedby.html.inc
49                         d
50                         }
51                      " $sf > $df
52                     ;;
53                 *.html.inc | *~ | *.tmp | */BUGS )
54                     :
55                     ;;
56                 *)
57                     cat $sf > $df
58                     ;;
59             esac
60         done
61     done
62 }
63
64
65 do_export () {
66     pgm=$1
67     mod=$2
68
69     rm -rf $pgm.tmp 2>/dev/null || true
70     rm -rf $pgm.new || true
71     rm -rf $pgm.old || true
72     cvs -Q export -r HEAD -d $pgm.tmp $mod
73     cat <<EOF >$pgm.tmp/NEWS
74 [ This is a snapshot of the NEWS file from the CVS head revision.
75   You will find the NEWS for the latest revision below the line
76   "Noteworthy changes in version 0.x.y".
77                                                      (wk $(date +%Y-%m-%d)) ]
78
79
80 EOF
81     cvs -Q checkout -p gnupg/NEWS >>$pgm.tmp/NEWS
82     cvs -Q checkout -p gnupg/BUGS | sed  '1,/^~~~~~~~~~~~/ d' > $pgm.tmp/BUGS
83     echo "(List generated from CVS: " $(date +%Y-%m-%d) ")"  >> $pgm.tmp/BUGS
84     sed_it $pgm.tmp $pgm.new
85     rm -rf $pgm.tmp || true
86     ln -sf gnupg.html $pgm.new/index.html
87
88     rm -rf $pgm.old || true
89     [ -d $pgm ] && mv $pgm $pgm.old
90     if ! mv $pgm.new $pgm ; then
91         echo "rename failed - restoring" >&2
92         mv $pgm.old $pgm
93         exit 1
94     fi
95     rm -rf $pgm.old || true
96 }
97
98
99 do_export gnupg-www gnupg-www
100
101 cd gnupg-www
102 tar czf /home/ftp/pub/gcrypt/old/webpages.tmp *
103 mv /home/ftp/pub/gcrypt/old/webpages.tmp /home/ftp/pub/gcrypt/old/webpages.tar.gz
104
105
106 exit 0
107