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