Changed the 03oz abbreviation to 03toz
[project-aon.git] / scripts / gbtoxhtml.pl
1 #!/usr/bin/perl -w
2 #
3 # gbtoxhtml.pl
4 #
5 # Creates XHTML gamebook from XML source.
6 #
7 # $Id$
8 #
9 # $Log$
10 # Revision 1.2  2005/10/13 00:48:47  angantyr
11 # Put Paul Bonner as illustrator of the GS books.
12 #
13 # Revision 1.1.1.1  2005/04/26 04:47:33  jonathan.blake
14 # Imported scripts
15 #
16 # Revision 1.8  2003/07/14 17:20:09  jblake
17 # Modified for Xalan 2.5.1, added support for AONPATH
18 # environment variable, commented out RXP validation.
19 #
20 # Revision 1.7  2002/11/10 07:52:15  jblake
21 # Added more books.
22 #
23 # Revision 1.6  2002/11/10 03:57:50  jblake
24 # Added some missing semicolons.
25 #
26 # Revision 1.5  2002/11/07 18:43:14  jblake
27 # Added books (02fotw, 13tplor, and 15tdc) and added an illustrator to the list.
28 #
29 # Revision 1.4  2002/10/23 18:58:34  jblake
30 # Added Flight from the Dark to the valid book list, and made
31 # a change to the working directory in order to work with
32 # Xalan-J 2.4.0.
33 #
34 # Revision 1.3  2002/10/20 05:47:50  jblake
35 # Added Highway Holocaust to the book list.
36 #
37 # Revision 1.2  2002/10/18 15:42:25  jblake
38 # Added Grey Star the Wizard to the book list.
39 #
40 # Revision 1.1  2002/10/18 15:38:41  jblake
41 # Initial revision
42 #
43 #####
44
45 use strict;
46
47 ##
48
49 my $PROGRAM_NAME    = "gbtoxhtml";
50 my $PATH_PREFIX     = "$ENV{'AONPATH'}/data";
51 my $XML_PATH        = "xml";
52 my $BOOK_PATH       = "xhtml";
53 my $WEBSITE_PATH    = "website";
54
55 ##
56
57 my $CREATE_CSS = "$ENV{'HOME'}/aon/bin/create-css.pl";
58 my $RXP        = "$ENV{'HOME'}/aon/bin/rxp";
59 my $CP         = "/bin/cp";
60 my $MV         = "/bin/mv";
61 my $TAR        = "/bin/tar";
62 my $ZIP        = "/usr/bin/zip";
63 my $BZIP2      = "/usr/bin/bzip2";
64 my $JAVA       = "/usr/lib/java/jre/bin/java";
65 my $RM         = "/bin/rm";
66 my $CHMOD      = "/bin/chmod";
67
68 ##
69
70 my $XML_SOURCE               = "";
71 my $TEXT_COLOR               = "";
72 my $LINK_COLOR               = "";
73 my $HLINK_BACK_COLOR         = "";
74 my $HLINK_LIGHT_BORDER_COLOR = "";
75 my $HLINK_DARK_BORDER_COLOR  = "";
76 my $USE_ILLUSTRATORS         = "";
77
78 ##
79
80 unless( $#ARGV == 0 ) { die "Usage:\n\t${PROGRAM_NAME} bookCode\n"; }
81 my( $bookCode ) = @ARGV;
82
83 if( $bookCode eq "01fftd" ) {
84     $XML_SOURCE        = "01fftd.xml";
85     $BOOK_PATH         .= "/lw/01fftd";
86     $TEXT_COLOR        = "#003300";
87     $LINK_COLOR        = "#006633";
88     $HLINK_BACK_COLOR  = "#cce0c1";
89     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
90 }
91 elsif( $bookCode eq "02fotw" ) {
92     $XML_SOURCE        = "02fotw.xml";
93     $BOOK_PATH         .= "/lw/02fotw";
94     $TEXT_COLOR        = "#003333";
95     $LINK_COLOR        = "#009999";
96     $HLINK_BACK_COLOR  = "#ccebd5";
97     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
98 }
99 elsif( $bookCode eq "03tcok" ) {
100     $XML_SOURCE        = "03tcok.xml";
101     $BOOK_PATH         .= "/lw/03tcok";
102     $TEXT_COLOR        = "#003366";
103     $LINK_COLOR        = "#0099cc";
104     $HLINK_BACK_COLOR  = "#ccebdf";
105     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
106 }
107 elsif( $bookCode eq "04tcod" ) {
108     $XML_SOURCE        = "04tcod.xml";
109     $BOOK_PATH         .= "/lw/04tcod";
110     $TEXT_COLOR        = "#000033";
111     $LINK_COLOR        = "#000099";
112     $HLINK_BACK_COLOR  = "#ccccd5";
113     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
114 }
115 elsif( $bookCode eq "05sots" ) {
116     $XML_SOURCE        = "05sots.xml";
117     $BOOK_PATH         .= "/lw/05sots";
118     $TEXT_COLOR        = "#330000";
119     $LINK_COLOR        = "#cc9900";
120     $HLINK_BACK_COLOR  = "#f5ebb6";
121     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
122 }
123 elsif( $bookCode eq "06tkot" ) {
124     $XML_SOURCE        = "06tkot.xml";
125     $BOOK_PATH         .= "/lw/06tkot";
126     $TEXT_COLOR        = "#404000";
127     $LINK_COLOR        = "#999900";
128     $HLINK_BACK_COLOR  = "#ebebb6";
129     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
130 }
131 elsif( $bookCode eq "07cd" ) {
132     $XML_SOURCE        = "07cd.xml";
133     $BOOK_PATH         .= "/lw/07cd";
134     $TEXT_COLOR        = "#003300";
135     $LINK_COLOR        = "#00cc66";
136     $HLINK_BACK_COLOR  = "#ccf5cb";
137     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
138 }
139 elsif( $bookCode eq "08tjoh" ) {
140     $XML_SOURCE        = "08tjoh.xml";
141     $BOOK_PATH         .= "/lw/08tjoh";
142     $TEXT_COLOR        = "#334033";
143     $LINK_COLOR        = "#669966";
144     $HLINK_BACK_COLOR  = "#e0ebcb";
145     $USE_ILLUSTRATORS  = ":Gary Chalk:JC Alvarez & Jonathan Blake:Jonathan Blake:";
146 }
147 elsif( $bookCode eq "09tcof" ) {
148     $XML_SOURCE        = "09tcof.xml";
149     $BOOK_PATH         .= "/lw/09tcof";
150     $TEXT_COLOR        = "#330000";
151     $LINK_COLOR        = "#ff9900";
152     $HLINK_BACK_COLOR  = "#ffebb6";
153     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
154 }
155 elsif( $bookCode eq "10tdot" ) {
156     $XML_SOURCE        = "10tdot.xml";
157     $BOOK_PATH         .= "/lw/10tdot";
158     $TEXT_COLOR        = "#330000";
159     $LINK_COLOR        = "#ff0000";
160     $HLINK_BACK_COLOR  = "#ffccb6";
161     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
162 }
163 elsif( $bookCode eq "11tpot" ) {
164     $XML_SOURCE        = "11tpot.xml";
165     $BOOK_PATH         .= "/lw/11tpot";
166     $TEXT_COLOR        = "#333300";
167     $LINK_COLOR        = "#808066";
168     $HLINK_BACK_COLOR  = "#e6e6cb";
169     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
170 }
171 elsif( $bookCode eq "12tmod" ) {
172     $XML_SOURCE        = "12tmod.xml";
173     $BOOK_PATH         .= "/lw/12tmod";
174     $TEXT_COLOR        = "#330000";
175     $LINK_COLOR        = "#990000";
176     $HLINK_BACK_COLOR  = "#ebccb6";
177     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
178 }
179 elsif( $bookCode eq "13tplor" ) {
180     $XML_SOURCE        = "13tplor.xml";
181     $BOOK_PATH         .= "/lw/13tplor";
182     $TEXT_COLOR        = "#333300";
183     $LINK_COLOR        = "#666633";
184     $HLINK_BACK_COLOR  = "#e0e0c1";
185     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
186 }
187 elsif( $bookCode eq "14tcok" ) {
188     $XML_SOURCE        = "14tcok.xml";
189     $BOOK_PATH         .= "/lw/14tcok";
190     $TEXT_COLOR        = "#000033";
191     $LINK_COLOR        = "#660099";
192     $HLINK_BACK_COLOR  = "#e0ccd5";
193     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
194 }
195 elsif( $bookCode eq "15tdc" ) {
196     $XML_SOURCE               = "15tdc.xml";
197     $BOOK_PATH                .= "/lw/15tdc";
198     $TEXT_COLOR               = "#000033";
199     $LINK_COLOR               = "#6699cc";
200     $HLINK_BACK_COLOR         = "#e0ebdf";
201     $USE_ILLUSTRATORS         = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
202 }
203 elsif( $bookCode eq "16tlov" ) {
204     $XML_SOURCE               = "16tlov.xml";
205     $BOOK_PATH                .= "/lw/16tlov";
206     $TEXT_COLOR               = "#000033";
207     $LINK_COLOR               = "#0033cc";
208     $HLINK_BACK_COLOR         = "#d9e1e0";
209     $USE_ILLUSTRATORS         = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
210 }
211 elsif( $bookCode eq "17tdoi" ) {
212     $XML_SOURCE               = "17tdoi.xml";
213     $BOOK_PATH                .= "/lw/17tdoi";
214     $TEXT_COLOR               = "#003366";
215     $LINK_COLOR               = "#6699ff";
216     $HLINK_BACK_COLOR         = "#e0eaea";
217     $USE_ILLUSTRATORS         = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
218 }
219 elsif( $bookCode eq "01gstw" ) {
220     $XML_SOURCE        = "01gstw.xml";
221     $BOOK_PATH         .= "/gs/01gstw";
222     $TEXT_COLOR        = "#330066";
223     $LINK_COLOR        = "#9900ff";
224     $HLINK_BACK_COLOR  = "#ebcce9";
225     $USE_ILLUSTRATORS  = ":Paul Bonner:JC Alvarez & Jonathan Blake:Jonathan Blake:";
226 }
227 elsif( $bookCode eq "02tfc" ) {
228     $XML_SOURCE               = "02tfc.xml";
229     $BOOK_PATH                .= "/gs/02tfc";
230     $TEXT_COLOR               = "#333300";
231     $LINK_COLOR               = "#999966";
232     $HLINK_BACK_COLOR         = "#ebebcb";
233     $USE_ILLUSTRATORS         = ":Paul Bonner:JC Alvarez & Jonathan Blake:Jonathan Blake:";
234 }
235 elsif( $bookCode eq "03btng" ) {
236     $XML_SOURCE        = "03btng.xml";
237     $BOOK_PATH         .= "/gs/03btng";
238     $TEXT_COLOR        = "#003333";
239     $LINK_COLOR        = "#669999";
240     $HLINK_BACK_COLOR  = "#e0ebd5";
241     $USE_ILLUSTRATORS  = ":Paul Bonner:JC Alvarez & Jonathan Blake:Jonathan Blake:";
242 }
243 elsif( $bookCode eq "04wotw" ) {
244     $XML_SOURCE        = "04wotw.xml";
245     $BOOK_PATH         .= "/gs/04wotw";
246     $TEXT_COLOR        = "#000033";
247     $LINK_COLOR        = "#9999cc";
248     $HLINK_BACK_COLOR  = "#ebebdf";
249     $USE_ILLUSTRATORS  = ":Paul Bonner:JC Alvarez & Jonathan Blake:Jonathan Blake:";
250 }
251 elsif( $bookCode eq "01hh" ) {
252     $XML_SOURCE        = "01hh.xml";
253     $BOOK_PATH         .= "/fw/01hh";
254     $TEXT_COLOR        = "#330066";
255     $LINK_COLOR        = "#9900ff";
256 #    $SCROLL_BASE_COLOR = "#330066";
257     $USE_ILLUSTRATORS  = ":Melvyn Grant:Jonathan Blake:";
258 }
259 elsif( $bookCode eq "rh" ) {
260     $XML_SOURCE        = "rh.xml";
261     $BOOK_PATH         .= "/misc/rh";
262     $TEXT_COLOR        = "#400000";
263     $LINK_COLOR        = "#339933";
264     $HLINK_BACK_COLOR  = "#e1f0ca";
265     $USE_ILLUSTRATORS  = ":Brian Williams:JC Alvarez & Jonathan Blake:Jonathan Blake:";
266 }
267 elsif( $bookCode eq "mhahn" ) {
268     $XML_SOURCE        = "mhahn.xml";
269     $BOOK_PATH         .= "/misc/mhahn";
270     $TEXT_COLOR        = "#400000";
271     $LINK_COLOR        = "#339933";
272     $HLINK_BACK_COLOR  = "#e1f0ca";
273     $USE_ILLUSTRATORS  = ":Michael Hahn:";
274 }
275 elsif( $bookCode eq "jcalvarez" ) {
276     $XML_SOURCE        = "jcalvarez.xml";
277     $BOOK_PATH         .= "/misc/jcalvarez";
278     $TEXT_COLOR        = "#400000";
279     $LINK_COLOR        = "#339933";
280     $HLINK_BACK_COLOR  = "#e1f0ca";
281     $USE_ILLUSTRATORS  = ":JC Alvarez:";
282 }
283 elsif( $bookCode eq "statskeeper" ) { }
284 elsif( $bookCode eq "base" ) { }
285 else{ die "Error:\n\tUnknown book code ($bookCode).\n"; }
286
287 if( $bookCode eq "statskeeper" ) {
288   chdir( "$PATH_PREFIX" ) or die( "Cannot open Project Aon data directory \"$PATH_PREFIX\": $!" );
289   chdir( "$WEBSITE_PATH/main" ) or die( "Error: unable to change to statskeeper directory ($!)\n" );
290   print qx{$RM statskeeper.zip statskeeper.tar.bz2 statskeeper.tar};
291   my $statskeeperFiles = "statskeeper/index.htm statskeeper/lw/*htm statskeeper/lw/*/* statskeeper/gs/*htm statskeeper/gs/*/*";
292   print qx{$ZIP -8 -q statskeeper.zip $statskeeperFiles};
293   print qx{$TAR cf statskeeper.tar $statskeeperFiles};
294   print qx{$BZIP2 -9 *tar};
295 }
296 elsif( $bookCode eq "base" ) {
297   chdir( "$PATH_PREFIX" ) or die( "Cannot open Project Aon data directory \"$PATH_PREFIX\": $!" );
298   chdir( "$WEBSITE_PATH/athome" ) or die( "Unable to change directory to \"$WEBSITE_PATH/athome\": $!\n" );
299   print qx{$RM base.zip base.tar.bz2 base.tar};
300   print qx{$ZIP -8 -q base.zip *ico *htm images/* style/*};
301   print qx{$TAR cf base.tar *ico *htm images/* style/*};
302   print qx{$BZIP2 -9 *tar};
303 }
304 else {
305   print "Reminder:\n\tDid you comment out the LaTeX special character\n\tdeclarations in the book's XML file?\n";
306
307   chdir( "$PATH_PREFIX" ) or die( "Cannot open Project Aon data directory \"$PATH_PREFIX\": $!" );
308   system( "$RXP", "-Vs", "$XML_PATH/$XML_SOURCE" ) == 0 or die( "XML validation failed\n" );
309   unless( -d "$BOOK_PATH" ) { mkdir $BOOK_PATH or die( "Unable to create directory \"$PATH_PREFIX/$BOOK_PATH\": $!\n" ); }
310   print qx{$RM $BOOK_PATH/*};
311   print qx{$JAVA org.apache.xalan.xslt.Process -IN $XML_PATH/$XML_SOURCE -XSL $XML_PATH/xhtml.xsl -OUT \"$BOOK_PATH/foo.xml\" -PARAM book-path \"$BOOK_PATH\" -PARAM text-color \"$TEXT_COLOR\" -PARAM link-color \"$LINK_COLOR\" -PARAM use-illustrators \"$USE_ILLUSTRATORS\"};
312   print qx{$RM $BOOK_PATH/foo.xml};
313   print qx{$CREATE_CSS $BOOK_PATH \"$TEXT_COLOR\" \"\#ffffe6\" \"$LINK_COLOR\" \"$LINK_COLOR\" \"$HLINK_BACK_COLOR\" \"$LINK_COLOR\"};
314
315   print qx{$CP images/$BOOK_PATH/*gif images/$BOOK_PATH/*jpg $BOOK_PATH};
316   print qx{$CHMOD 600 $BOOK_PATH/*};
317   print qx{$TAR cf $bookCode.tar $BOOK_PATH/*};
318   print qx{$ZIP -8 -q $bookCode.zip $BOOK_PATH/*};
319   print qx{$BZIP2 -9 $bookCode.tar};
320   print qx{$CHMOD 600 $bookCode.tar.bz2 $bookCode.zip};
321
322   print qx{$MV $bookCode* $PATH_PREFIX/$BOOK_PATH/};
323 }