fcf9b32c60c9ff280b38d00fb8011aa3bfcefd06
[gpg4win.git] / web / build-history.awk
1 # build-history.awk - Build a history HTML         -*- coding: latin1 *-*
2 #                     page from the NEWS file
3 # Copyright (C) 2006 g10 Code GmbH
4 #
5 # This program is free software; you can redistribute it and/or
6 # modify it under the terms of the GNU General Public License as
7 # published by the Free Software Foundation; either version 2 of
8 # the License, or (at your option) any later version.
9 #
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13 # General Public License for more details.
14 #
15 # You should have received a copy of the GNU General Public License
16 # along with this program; if not, write to the Free Software
17 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
18 # USA.
19
20 # We use a slightly modified format of the NEWS file to cope with i18n
21 # issues.  Here is an example of such a news file:
22 #
23 #    Noteworthy changes in version 42.1 (2000-01-01)
24 #    -----------------------------------------------
25 #
26 #    (en) New: Script to build a HTML version
27 #         of the NEWS.
28 #    (de) Neu: Script zum Erzeugen der HTML Version
29 #
30 #    (en) Blurb
31 #    (de) Blabla
32 #
33 #    ~~~~~~~~~~~~~~~
34 #    foo.lisp:  1.17
35 #    bar.lisp:  7.53.1
36 #    ~~~~~~~~~~~~~~~
37 #
38 #    Noteworthy changes in version 42.0 (1999-12-31)
39 #    ------------------------------------------------
40 #
41 # Empty lines as well as lines starting with a hash mark are entirly
42 # ignored.  Paragraphs are indicated by the language tags.  A new
43 # revision history starts with the "Noteworthy .." line; the release
44 # date is expected in parentheses on that line.  If it is not given the
45 # section won't be rendered.
46
47
48 BEGIN {
49   if ( lang == "" )
50     lang = "en";
51   in_section = 0;
52   in_para = 0;
53   in_vers = 0;
54   any_para = 0;
55   version = "";
56   reldate = "";
57
58   header_text["en"] = "" \
59     "m4_dnl -*-html-*-\n" \
60     "m4_dnl <!-- ####################################################\n" \
61     "m4_dnl      # THIS FILE IS AUTOGENERATED see build-history.awk #\n" \
62     "m4_dnl      ####################################################-->\n" \
63     "m4_include(`template.m4')\n" \
64     "m4_define(`EN')\n" \
65     "m4_define(`DE_FILE', `change-history-de.html')\n" \
66     "m4_define(`TITLE', `Change History')\n" \
67     "PAGE_START\n" \
68     "<div id='intro'>" \
69     "<h2>Change History of Gpg4win</h2>" \
70     "<p>Please note that old releases still contain meanwhile fixed\n" \
71     "security issues.</p>\n" \
72     "</div>\n" \
73     "<div id='main'>\n" ;
74
75   header_text["de"] = "" \
76     "m4_dnl -*-html-*-\n" \
77     "m4_dnl <!-- ####################################################\n" \
78     "m4_dnl      # THIS FILE IS AUTOGENERATED see build-history.awk #\n" \
79     "m4_dnl      ####################################################-->\n" \
80     "m4_include(`template.m4')\n" \
81     "m4_define(`DE')\n" \
82     "m4_define(`EN_FILE', `change-history.html')\n" \
83     "m4_define(`TITLE', `Änderungshistorie')\n" \
84     "PAGE_START\n" \
85     "<div id='intro'>" \
86     "<h2>Änderungshistorie von Gpg4win</h2>" \
87     "<p>Bitte beachten Sie, dass die alten Versionen die ggf.\n" \
88     "zwischenzeitlich beseitigten Sicherheitslöcher weiterhin enthalten!</p>\n" \
89     "</div>\n" \
90     "<div id='main'>\n" ;
91
92
93   release_text["en"] = "released ";
94   release_text["de"] = "veröffentlicht ";
95   noreldate_text["en"] = "[ in progress; not yet released ]";
96   noreldate_text["de"] = "[ in Arbeit; bisher noch nicht veröffentlicht ]";
97   explicit_dl_text["en"] = "Explicit download of this version:";
98   explicit_dl_text["de"] = "Expliziter Download dieser Version:";
99   readme_text["en"] = "Details in the README of this version:";
100   readme_text["de"] = "Details im README dieser Version:";
101
102   print header_text[lang];
103 }
104
105 /^#/   { next }
106 /^---/ { next }
107
108 in_section && $0 ~ /^Noteworthy/ {
109   print "hallo"
110   if (in_vers)
111     print "</pre>"
112   in_section = 0;
113   in_para = 0;
114   in_vers = 0;
115   any_para = 0;
116 }
117
118
119 !in_section {
120   if ($0 !~ /^Noteworthy/)
121     next;
122   version = $5;
123   reldate = "";
124   if (index ($0, "(")) {
125     sub (/^.*\(/, "");
126     sub (/\).*$/, "");
127     reldate = $0;
128     print "<h2>Version " version " " release_text[lang] " " reldate "</h2>"
129   } else {
130     reldate = noreldate_text[lang];
131     print "<h2>Version " version " " reldate "</h2>"
132   }
133   print "<ul>"
134   in_section = 1;
135   in_para = 0;
136   in_vers = 0;
137   any_para = 0;
138
139   next;
140 }
141
142 in_section && $0 ~ /^\([a-zA-Z]+\)/ {
143   if ( in_para ) {
144     in_para = 0;
145     print "</li>"
146   }
147   if ( $0 ~ ("^\\(" lang "\\)" ) ) {
148     in_para = 1;
149     any_para = 1;
150     print "<li>"
151     print substr ($0, 5);
152   }
153   next;
154 }
155
156 in_section && !in_vers && /^~~~/ {
157   if ( in_para ) {
158     in_para = 0;
159     print "</li>"
160   }
161   in_para = 0;
162   in_vers = 1;
163   print "</ul>"
164   print "<pre>"
165   next;
166 }
167
168 in_para {
169   print $0;
170 }
171
172 in_vers && /^~~~/ {
173   in_vers = 0;
174   print "</pre>"
175
176   printf "<p>%s ", explicit_dl_text[lang];
177   printf "<a href=\"http://ftp.gpg4win.org/gpg4win-%s.exe\">gpg4win-%s.exe</a><br>", version, version;
178   printf "</p>"
179
180   printf "<p>%s ", readme_text[lang];
181   printf "<a href=\"http://ftp.gpg4win.org/README-%s." lang ".txt\">README-%s." lang ".txt</a><br>", version, version;
182   printf "</p>"
183 }
184
185 in_vers {
186   split ( $0, a, ":" );
187   printf "%s: %s\n", a[1], a[2];
188 }
189
190
191 END {
192   print "</div>"
193 }