]> git.donarmstrong.com Git - debbugs.git/blob - debian/debbugsconfig
[project @ 2002-11-17 17:09:40 by cjwatson]
[debbugs.git] / debian / debbugsconfig
1 #!/usr/bin/perl
2 # debbugsconfig: copies debbugs configuration files from templates, and
3 #                creates documentation in HTML and text
4
5 use POSIX qw(strftime);
6
7 if (@ARGV) {
8   print STDOUT <<EOF;
9 Usage: $0
10
11 debbugsconfig will copy basic debbugs configuration files from templates
12 if they don't exist.
13
14 It will also create BTS user documentation in HTML and text.
15
16 EOF
17   exit(0);
18 }
19
20 $gConfigDir = "/etc/debbugs" if (!defined($gConfigDir));
21 &template("config", $gConfigDir);
22 require "$gConfigDir/config";
23 unshift @INC, $gConfigDir;
24
25 &template("text", $gConfigDir);
26 require "text";
27
28 &template("Maintainers", $gConfigDir);
29 &template("Maintainers.override", $gConfigDir);
30 &template("pseudo-packages.description", $gConfigDir);
31 &template("sources", "$gConfigDir/indices");
32
33 &template("nextnumber", $gSpoolDir);
34
35 # stuff used when testing (comment out the above)
36 #unshift @INC, "../";
37 #require "../scripts/config.in";
38 #require "../scripts/text.in";
39 #$gWebDir = "gWebDir";
40 #$gDocDir = "gWebDir";
41
42 my $dtime = strftime "%a, %e %b %Y %T UTC", localtime;
43 $gHTMLTail =~ s/SUBSTITUTE_DTIME/$dtime/;
44
45 print "Creating files in $gWebDir:\n";
46 require('html/index.html.in');
47 &writefiles ('index', '', $gIndexHtml );
48 require('html/Access.html.in');
49 &writefiles ('Access', 'bug-log-access', $gAccessHtml );
50 require('html/Developer.html.in');
51 &writefiles ('Developer', 'bug-maint-info', $gDeveloperHtml );
52 require('html/Reporting.html.in');
53 &writefiles ('Reporting', 'bug-reporting', $gReportingHtml );
54 require('html/server-control.html.in');
55 &writefiles ('server-control', 'bug-maint-mailcontrol', $gControlHtml );
56 require('html/server-refcard.html.in');
57 &writefiles ('server-refcard', 'bug-mailserver-refcard', $gRefcardHtml );
58 require('html/server-request.html.in');
59 &writefiles ('server-request', 'bug-log-mailserver', $gRequestHtml );
60 print "\n";
61
62 exit(0);
63
64 # -------------------------------------------------------------------------- #
65
66 sub template {
67   my ($name, $destdir) = @_;
68   if (! -f "$destdir/$name") {
69   system("cp /usr/share/doc/debbugs/examples/$name $destdir/$name") == 0 ||
70         die "$!";
71   print "created $destdir/$name from template.\n";
72   }
73
74
75 sub writefiles {
76   local ($html, $text, $name) = @_;
77 # first HTML
78   unlink("$gWebDir/$html.html");
79   open(DEST, ">$gWebDir/$html.html") || die "\n$gWebDir/$html.html: $!";
80   print DEST $name;
81   close(DEST);
82   print "$html.html ";
83 # now text
84   return if ($text eq ""); # for index.html
85 # This should be done with pipes instead of a temporary files, but lynx
86 # doesn't read HTML from stdin :/
87   open(DEST, ">$gDocDir/$text.html") || die "\n$gDocDir/$text.html: $!";
88   $name =~ s,\nOther pages:\n.*?<hr>,,si;
89   print DEST $name;
90   close(DEST);
91   unlink("$gDocDir/$text.txt");
92   $ENV{'HOME'} = "/tmp";
93   $ENV{'TERM'} = "linux";
94   if (-x "/usr/bin/links") {
95     system ("rm -rf /tmp/.links/") == 0 || die;
96     system ("links -dump $gDocDir/$text.html > $gDocDir/$text.txt") == 0 ||
97       die "\nunable to write $gDocDir/$text.txt\n";
98     system ("rm -rf /tmp/.links/");
99   } elsif (-x "/usr/bin/lynx") {
100     system ("lynx -nolist -dump -cfg=$gConfigDir/html/lynx-cfg $gDocDir/$text.html > $gDocDir/$text.txt") == 0 ||
101       die "\nunable to write $gDocDir/$text.txt\n";
102   } else {
103     print "unable to write text versions of the HTMLs!";
104     print "if you need them, install links or lynx and run debbugsconfig again";
105     return;
106   }
107   unlink("$gDocDir/$text.html") || die "\ncan't remove temporary file $gDocDir/$text.html: $!";
108   print "$text.txt ";
109 }