File: debbugsconfig

package info (click to toggle)
debbugs 2.4.1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k, lenny, sarge, squeeze, wheezy
  • size: 620 kB
  • ctags: 290
  • sloc: perl: 6,067; sh: 176; makefile: 63
file content (124 lines) | stat: -rwxr-xr-x 3,916 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#!/usr/bin/perl
# debbugsconfig: copies debbugs configuration files from templates, and
#                creates documentation in HTML and text
# Copyright (C) 1999 Darren Benham
# Copyright (C) 2000 Josip Rodin
# Licensed under the version 2 of the GNU General Public License as
# published by the Free Software Foundation

use POSIX qw(strftime);

if (@ARGV) {
  print STDOUT <<EOF;
Usage: $0

debbugsconfig will copy basic debbugs configuration files from templates
if they don't exist.

It will also create BTS user documentation in HTML and text.

EOF
  exit(0);
}

$gConfigDir = "/etc/debbugs" if (!defined($gConfigDir));
&template("config", $gConfigDir);
require "$gConfigDir/config";
unshift @INC, $gConfigDir;

&template("text", $gConfigDir);
require "text";

&template("Maintainers", $gConfigDir);
&template("Maintainers.override", $gConfigDir);
&template("pseudo-packages.description", $gConfigDir);
&template("sources", "$gConfigDir/indices");

&template("nextnumber", $gSpoolDir);
&touch("$gSpoolDir/index.archive.realtime");
&touch("$gSpoolDir/index.db.realtime");

# stuff used when testing (comment out the above)
#unshift @INC, "../";
#require "../scripts/config.in";
#require "../scripts/text.in";
#$gWebDir = "gWebDir";
#$gDocDir = "gWebDir";

my $dtime = strftime "%a, %e %b %Y %T UTC", localtime;
$gHTMLTail =~ s/SUBSTITUTE_DTIME/$dtime/;

print "Creating files in $gWebDir:\n";
require('html/index.html.in');
&writefiles ('index', '', $gIndexHtml );
require('html/Access.html.in');
&writefiles ('Access', 'bug-log-access', $gAccessHtml );
require('html/Developer.html.in');
&writefiles ('Developer', 'bug-maint-info', $gDeveloperHtml );
require('html/Reporting.html.in');
&writefiles ('Reporting', 'bug-reporting', $gReportingHtml );
require('html/server-control.html.in');
&writefiles ('server-control', 'bug-maint-mailcontrol', $gControlHtml );
require('html/server-refcard.html.in');
&writefiles ('server-refcard', 'bug-mailserver-refcard', $gRefcardHtml );
require('html/server-request.html.in');
&writefiles ('server-request', 'bug-log-mailserver', $gRequestHtml );
print "\n";

exit(0);

# -------------------------------------------------------------------------- #

sub template {
  my ($name, $destdir) = @_;
  if (! -f "$destdir/$name") {
  system("cp /usr/share/doc/debbugs/examples/$name $destdir/$name") == 0 ||
	die "$!";
  print "created $destdir/$name from template.\n";
  }
} 

sub touch {
  my $name = shift;
  unless (-f $name) {
    open TOUCH, ">> $name" or die "open $name: $!";
    close TOUCH;
    print "created empty $name.\n";
  }
}

sub writefiles {
  local ($html, $text, $name) = @_;
# first HTML
  unlink("$gWebDir/$html.html");
  open(DEST, ">$gWebDir/$html.html") || die "\n$gWebDir/$html.html: $!";
  print DEST $name;
  close(DEST);
  print "$html.html ";
# now text
  return if ($text eq ""); # for index.html
# This should be done with pipes instead of a temporary files, but lynx
# doesn't read HTML from stdin :/
  open(DEST, ">$gDocDir/$text.html") || die "\n$gDocDir/$text.html: $!";
  $name =~ s,\nOther pages:\n.*?<hr>,,si;
  print DEST $name;
  close(DEST);
  unlink("$gDocDir/$text.txt");
  $ENV{'HOME'} = "/tmp";
  $ENV{'TERM'} = "linux";
  if (-x "/usr/bin/links") {
    system ("rm -rf /tmp/.links/") == 0 || die;
    system ("links -dump $gDocDir/$text.html > $gDocDir/$text.txt") == 0 ||
      die "\nunable to write $gDocDir/$text.txt\n";
    system ("rm -rf /tmp/.links/");
  } elsif (-x "/usr/bin/lynx") {
    system ("lynx -nolist -dump -cfg=/dev/null $gDocDir/$text.html > $gDocDir/$text.txt") == 0 ||
      die "\nunable to write $gDocDir/$text.txt\n";
  } else {
    print "unable to write text versions of the HTMLs!";
    print "if you need them, install links or lynx and run debbugsconfig again";
    return;
  }
  unlink("$gDocDir/$text.html") || die "\ncan't remove temporary file $gDocDir/$text.html: $!";
  print "$text.txt ";
}