2 # debbugsconfig: copies debbugs configuration files from templates, and
3 # creates documentation in HTML and text
4 # Copyright (C) 1999 Darren Benham
5 # Copyright (C) 2000 Josip Rodin
6 # Licensed under the version 2 of the GNU General Public License as
7 # published by the Free Software Foundation
9 use POSIX qw(strftime);
16 debbugsconfig will copy basic debbugs configuration files from templates
19 It will also create BTS user documentation in HTML and text.
25 $gConfigDir = "/etc/debbugs" if (!defined($gConfigDir));
26 &template("config", $gConfigDir);
27 require "$gConfigDir/config";
28 unshift @INC, $gConfigDir;
30 &template("text", $gConfigDir);
33 &template("Maintainers", $gConfigDir);
34 &template("Maintainers.override", $gConfigDir);
35 &template("pseudo-packages.description", $gConfigDir);
36 &template("sources", "$gConfigDir/indices");
38 &template("nextnumber", $gSpoolDir);
39 &touch("$gSpoolDir/index.archive.realtime");
40 &touch("$gSpoolDir/index.db.realtime");
41 print "Creating directories in $gSpoolDir:\n";
42 for my $num (0 .. 99) {
43 &spooldirectory(sprintf('archive/%02d', $num));
44 &spooldirectory(sprintf('db-h/%02d', $num));
48 # stuff used when testing (comment out the above)
50 #require "../scripts/config.in";
51 #require "../scripts/text.in";
52 #$gWebDir = "gWebDir";
53 #$gDocDir = "gWebDir";
55 my $dtime = strftime "%a, %e %b %Y %T UTC", localtime;
56 $gHTMLTail =~ s/SUBSTITUTE_DTIME/$dtime/;
58 print "Creating files in $gWebDir:\n";
59 require('html/index.html.in');
60 &writefiles ('index', '', $gIndexHtml );
61 require('html/Access.html.in');
62 &writefiles ('Access', 'bug-log-access', $gAccessHtml );
63 require('html/Developer.html.in');
64 &writefiles ('Developer', 'bug-maint-info', $gDeveloperHtml );
65 require('html/Reporting.html.in');
66 &writefiles ('Reporting', 'bug-reporting', $gReportingHtml );
67 require('html/server-control.html.in');
68 &writefiles ('server-control', 'bug-maint-mailcontrol', $gControlHtml );
69 require('html/server-refcard.html.in');
70 &writefiles ('server-refcard', 'bug-mailserver-refcard', $gRefcardHtml );
71 require('html/server-request.html.in');
72 &writefiles ('server-request', 'bug-log-mailserver', $gRequestHtml );
77 # -------------------------------------------------------------------------- #
80 my ($name, $destdir) = @_;
81 if (! -f "$destdir/$name") {
82 system("cp /usr/share/doc/debbugs/examples/$name $destdir/$name") == 0 ||
84 print "created $destdir/$name from template.\n";
91 open TOUCH, ">> $name" or die "open $name: $!";
93 print "created empty $name.\n";
99 unless (-d "$gSpoolDir/$name") {
100 mkpath("$gSpoolDir/$name");
106 local ($html, $text, $name) = @_;
108 unlink("$gWebDir/$html.html");
109 open(DEST, ">$gWebDir/$html.html") || die "\n$gWebDir/$html.html: $!";
114 return if ($text eq ""); # for index.html
115 # This should be done with pipes instead of a temporary files, but lynx
116 # doesn't read HTML from stdin :/
117 open(DEST, ">$gDocDir/$text.html") || die "\n$gDocDir/$text.html: $!";
118 $name =~ s,\nOther pages:\n.*?<hr>,,si;
121 unlink("$gDocDir/$text.txt");
122 $ENV{'HOME'} = "/tmp";
123 $ENV{'TERM'} = "linux";
124 if (-x "/usr/bin/links") {
125 system ("rm -rf /tmp/.links/") == 0 || die;
126 system ("links -dump $gDocDir/$text.html > $gDocDir/$text.txt") == 0 ||
127 die "\nunable to write $gDocDir/$text.txt\n";
128 system ("rm -rf /tmp/.links/");
129 } elsif (-x "/usr/bin/lynx") {
130 system ("lynx -nolist -dump -cfg=/dev/null $gDocDir/$text.html > $gDocDir/$text.txt") == 0 ||
131 die "\nunable to write $gDocDir/$text.txt\n";
133 print "unable to write text versions of the HTMLs!";
134 print "if you need them, install links or lynx and run debbugsconfig again";
137 unlink("$gDocDir/$text.html") || die "\ncan't remove temporary file $gDocDir/$text.html: $!";