]> git.donarmstrong.com Git - debbugs.git/blob - debian/debbugsconfig
[project @ 2002-11-17 22:45:15 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 &touch("$gSpoolDir/index.archive.realtime");
35 &touch("$gSpoolDir/index.db.realtime");
36
37 # stuff used when testing (comment out the above)
38 #unshift @INC, "../";
39 #require "../scripts/config.in";
40 #require "../scripts/text.in";
41 #$gWebDir = "gWebDir";
42 #$gDocDir = "gWebDir";
43
44 my $dtime = strftime "%a, %e %b %Y %T UTC", localtime;
45 $gHTMLTail =~ s/SUBSTITUTE_DTIME/$dtime/;
46
47 print "Creating files in $gWebDir:\n";
48 require('html/index.html.in');
49 &writefiles ('index', '', $gIndexHtml );
50 require('html/Access.html.in');
51 &writefiles ('Access', 'bug-log-access', $gAccessHtml );
52 require('html/Developer.html.in');
53 &writefiles ('Developer', 'bug-maint-info', $gDeveloperHtml );
54 require('html/Reporting.html.in');
55 &writefiles ('Reporting', 'bug-reporting', $gReportingHtml );
56 require('html/server-control.html.in');
57 &writefiles ('server-control', 'bug-maint-mailcontrol', $gControlHtml );
58 require('html/server-refcard.html.in');
59 &writefiles ('server-refcard', 'bug-mailserver-refcard', $gRefcardHtml );
60 require('html/server-request.html.in');
61 &writefiles ('server-request', 'bug-log-mailserver', $gRequestHtml );
62 print "\n";
63
64 exit(0);
65
66 # -------------------------------------------------------------------------- #
67
68 sub template {
69   my ($name, $destdir) = @_;
70   if (! -f "$destdir/$name") {
71   system("cp /usr/share/doc/debbugs/examples/$name $destdir/$name") == 0 ||
72         die "$!";
73   print "created $destdir/$name from template.\n";
74   }
75
76
77 sub touch {
78   my $name = shift;
79   unless (-f $name) {
80     open TOUCH, ">> $name" or die "open $name: $!";
81     close TOUCH;
82     print "created empty $name.\n";
83   }
84 }
85
86 sub writefiles {
87   local ($html, $text, $name) = @_;
88 # first HTML
89   unlink("$gWebDir/$html.html");
90   open(DEST, ">$gWebDir/$html.html") || die "\n$gWebDir/$html.html: $!";
91   print DEST $name;
92   close(DEST);
93   print "$html.html ";
94 # now text
95   return if ($text eq ""); # for index.html
96 # This should be done with pipes instead of a temporary files, but lynx
97 # doesn't read HTML from stdin :/
98   open(DEST, ">$gDocDir/$text.html") || die "\n$gDocDir/$text.html: $!";
99   $name =~ s,\nOther pages:\n.*?<hr>,,si;
100   print DEST $name;
101   close(DEST);
102   unlink("$gDocDir/$text.txt");
103   $ENV{'HOME'} = "/tmp";
104   $ENV{'TERM'} = "linux";
105   if (-x "/usr/bin/links") {
106     system ("rm -rf /tmp/.links/") == 0 || die;
107     system ("links -dump $gDocDir/$text.html > $gDocDir/$text.txt") == 0 ||
108       die "\nunable to write $gDocDir/$text.txt\n";
109     system ("rm -rf /tmp/.links/");
110   } elsif (-x "/usr/bin/lynx") {
111     system ("lynx -nolist -dump -cfg=/dev/null $gDocDir/$text.html > $gDocDir/$text.txt") == 0 ||
112       die "\nunable to write $gDocDir/$text.txt\n";
113   } else {
114     print "unable to write text versions of the HTMLs!";
115     print "if you need them, install links or lynx and run debbugsconfig again";
116     return;
117   }
118   unlink("$gDocDir/$text.html") || die "\ncan't remove temporary file $gDocDir/$text.html: $!";
119   print "$text.txt ";
120 }