mkwebpage
[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     sed '/^.*\$\[I\]d:.*\$.*$/q' $1 |
15     sed -n 's!^.*\$\[I\]d: [^ ]\+ [^ ]\+ \([0-9]*\)/\([0-9]*\)/\([0-9]*\) [^ ]\+ \([^ ]\+\).*$!\1-\2-\3 \4!p'
16 }
17
18 # We have to edit most files
19 sed_it () {
20     src=$1
21     dst=$2
22
23     for srcdir in `find $src -type d -print` ; do
24         dstdir=`echo "$srcdir" | sed "s/^$src/$dst/g"`
25         mkdir $dstdir || true
26         for sf in `find $srcdir -type f -maxdepth 1 -print`; do
27             updated=`extract_date $sf`
28             df="$dstdir/`basename $sf`"
29             case "$df" in
30                 *.html)
31                     sed "/@FOOTER@/ {
32                         r $src/footer.html.inc
33                         d
34                         }
35                         /^<body>$/ {
36                         r $src/body-tag.html.inc
37                         d
38                         }
39                         /@UPDATED@/c\\
40 Updated: $updated \\
41 <hr>
42                         /@INSERT_BUGLIST_HERE@/ {
43                         r $src/BUGS
44                         d
45                         }
46                      " $sf > $df
47                     ;;
48                 *.html.inc | *~ | *.tmp | */BUGS )
49                     :
50                     ;;
51                 *)
52                     cat $sf > $df
53                     ;;
54             esac
55         done
56     done
57 }
58
59
60 do_export () {
61     pgm=$1
62     mod=$2
63
64     rm -rf $pgm.tmp 2>/dev/null || true
65     rm -rf $pgm.new || true
66     rm -rf $pgm.old || true
67     cvs -Q export -r HEAD -d $pgm.tmp $mod
68     cat <<EOF >$pgm.tmp/NEWS
69 [ This is a snapshot of the NEWS file from the CVS head revision.
70   You will find the NEWS for the latest revision below the line
71   "Noteworthy changes in version 0.x.y".
72                                                      (wk $(date +%Y-%m-%d)) ]
73
74
75 EOF
76     cvs -Q checkout -p gnupg/NEWS >>$pgm.tmp/NEWS
77     cvs -Q checkout -p gnupg/BUGS | sed  '1,/^~~~~~~~~~~~/ d' > $pgm.tmp/BUGS
78     echo "(List generated from CVS: " $(date +%Y-%m-%d) ")"  >> $pgm.tmp/BUGS
79     sed_it $pgm.tmp $pgm.new
80     rm -rf $pgm.tmp || true
81     ln -sf gnupg.html $pgm.new/index.html
82
83     rm -rf $pgm.old || true
84     [ -d $pgm ] && mv $pgm $pgm.old
85     if ! mv $pgm.new $pgm ; then
86         echo "rename failed - restoring" >&2
87         mv $pgm.old $pgm
88         exit 1
89     fi
90     rm -rf $pgm.old || true
91 }
92
93
94 do_export gnupg-www gnupg-www
95
96 cd gnupg-www
97 tar czf /home/ftp/pub/gcrypt/old/webpages.tmp *
98 mv /home/ftp/pub/gcrypt/old/webpages.tmp /home/ftp/pub/gcrypt/old/webpages.tar.gz
99
100
101 exit 0
102