]> git.donarmstrong.com Git - debbugs.git/blob - debian/debbugsconfig
assume unknown encodings are UTF-8
[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 # 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
8
9 use POSIX qw(strftime);
10 use File::Path;
11
12 if (@ARGV) {
13   print STDOUT <<EOF;
14 Usage: $0
15
16 debbugsconfig will copy basic debbugs configuration files from templates
17 if they don't exist.
18
19 It will also create BTS user documentation in HTML and text.
20
21 EOF
22   exit(0);
23 }
24
25 $gConfigDir = "/etc/debbugs" if (!defined($gConfigDir));
26 &template("config", $gConfigDir);
27 require "$gConfigDir/config";
28 unshift @INC, $gConfigDir;
29
30 &template("text", $gConfigDir);
31 require "text";
32
33 &template("Maintainers", $gConfigDir);
34 &template("Maintainers.override", $gConfigDir);
35 &template("pseudo-packages.description", $gConfigDir);
36 &template("sources", "$gConfigDir/indices");
37
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));
45 }
46 print "\n";
47
48 # stuff used when testing (comment out the above)
49 #unshift @INC, "../";
50 #require "../scripts/config.in";
51 #require "../scripts/text.in";
52 #$gWebDir = "gWebDir";
53 #$gDocDir = "gWebDir";
54
55 my $dtime = strftime "%a, %e %b %Y %T UTC", localtime;
56 $gHTMLTail =~ s/SUBSTITUTE_DTIME/$dtime/;
57
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 );
73 print "\n";
74
75 exit(0);
76
77 # -------------------------------------------------------------------------- #
78
79 sub template {
80   my ($name, $destdir) = @_;
81   if (! -f "$destdir/$name") {
82   system("cp /usr/share/doc/debbugs/examples/$name $destdir/$name") == 0 ||
83         die "$!";
84   print "created $destdir/$name from template.\n";
85   }
86
87
88 sub touch {
89   my $name = shift;
90   unless (-f $name) {
91     open TOUCH, ">> $name" or die "open $name: $!";
92     close TOUCH;
93     print "created empty $name.\n";
94   }
95 }
96
97 sub spooldirectory {
98   my $name = shift;
99   unless (-d "$gSpoolDir/$name") {
100     mkpath("$gSpoolDir/$name");
101     print "$name ";
102   }
103 }
104
105 sub writefiles {
106   local ($html, $text, $name) = @_;
107 # first HTML
108   unlink("$gWebDir/$html.html");
109   open(DEST, ">$gWebDir/$html.html") || die "\n$gWebDir/$html.html: $!";
110   print DEST $name;
111   close(DEST);
112   print "$html.html ";
113 # now text
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;
119   print DEST $name;
120   close(DEST);
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";
132   } else {
133     print "unable to write text versions of the HTMLs!";
134     print "if you need them, install links or lynx and run debbugsconfig again";
135     return;
136   }
137   unlink("$gDocDir/$text.html") || die "\ncan't remove temporary file $gDocDir/$text.html: $!";
138   print "$text.txt ";
139 }