]> git.donarmstrong.com Git - debbugs.git/blob - Debbugs/Config.pm
[project @ 2000-03-20 06:51:14 by gecko]
[debbugs.git] / Debbugs / Config.pm
1 package Debbugs::Config;  # assumes Some/Module.pm
2
3 use strict;
4
5 BEGIN 
6 {       use Exporter   ();
7         use vars       qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
8         
9     # set the version for version checking
10     $VERSION     = 1.00;
11
12     @ISA         = qw(Exporter);
13     @EXPORT      = qw( );
14     %EXPORT_TAGS = ( );     # eg: TAG => [ qw!name1 name2! ],
15
16     # your exported package globals go here,
17     # as well as any optionally exported functions
18     @EXPORT_OK   = qw(%Globals %Severity &ParseConfigFile);
19 }
20
21 use vars      @EXPORT_OK;
22 use Debbugs::Common;
23
24 # initialize package globals, first exported ones
25 %Severity = ();
26 %Globals = (    "debug" => 0,
27                 "verbose" => 0,
28                 "quiet" => 0,
29                 ##### domains
30                 "email-domain" => "bugs.domain.com",
31                 "list-domain" => "lists.domain.com",
32                 "web-domain" => "web.domain.com",
33                 "cgi-domain" => "cgi.domain.com",
34                 ##### identification
35                 "project-short" => "debbugs",
36                 "project-long" => "Debbugs Test Project",
37                 "owner-name" => "Fred Flintstone",
38                 "owner-email" => "owner\@bugs.domain.com",
39                 ##### directories
40                 "work-dir" => "/var/lib/debbugs/spool",
41                 "spool-dir" => "/var/lib/debbugs/spool/incoming",
42                 "www-dir" => "/var/lib/debbugs/www",
43                 "doc-dir" => "/var/lib/debbugs/www/txt",
44                 "maintainer-file" => "/etc/debbugs/Maintainers" );
45
46 sub strip
47 {   my $string = $_[0];
48     chop $string while $string =~ /\s$/; 
49     return $string;
50 }
51
52 #############################################################################
53 #  Read Config File and parse
54 #############################################################################
55 sub ParseConfigFile
56 {   my $configfile = $_[0];
57     my @config;
58     my $votetitle = '';
59     my $ballottype = '';
60
61     #load config file
62     print "V: Loading Config File\n" if $Globals{ "verbose" };
63     open(CONFIG,$configfile) or &fail( "E: Unable to open `$configfile'" );
64     @config = <CONFIG>;
65     close CONFIG;
66
67     #parse config file
68     print "V: Parsing Config File\n" if $Globals{ "verbose" };
69     print "D3: Parse Config:\n@config\n" if $Globals{ 'debug' } > 2;
70     for( my $i=0; $i<=$#config; $i++)
71     {   $_ = $config[$i];
72         chop $_;
73         next unless length $_;
74         next if /^#/;
75
76         if ( /^Email Domain\s*[:=]\s*([^#]*)/i )
77         { $Globals{ 'email-domain' } = strip( $1 ); }
78         elsif ( /^List Domain\s*[:=]\s*([^#]*)/i )
79         { $Globals{ 'list-domain' } = strip( $1 ); }
80         elsif ( /^Web Domain\s*[:=]\s*([^#]*)/i )
81         { $Globals{ 'web-domain' } = strip( $1 ); }
82         elsif ( /^CGI Domain\s*[:=]\s*([^#]*)/i )
83         { $Globals{ 'cgi-domain' } = strip( $1 ); }
84         elsif ( /^Short Name\s*[:=]\s*([^#]*)/i )
85         { $Globals{ 'project-short' } = strip( $1 ); }
86         elsif ( /^Long Name\s*[:=]\s*([^#]*)/i )
87         { $Globals{ 'project-long' } = strip( $1 ); }
88         elsif ( /^Owner Name\s*[:=]\s*([^#]*)/i )
89         { $Globals{ 'owner-name' } = strip( $1 ); }
90         elsif ( /^Owner Email\s*[:=]\s*([^#]*)/i )
91         { $Globals{ 'owner-email' } = strip( $1 ); }
92         elsif ( /^Spool Dir\s*[:=]\s*([^#]*)/i )
93         { $Globals{ 'spool-dir' } = strip( $1 ); }
94         elsif ( /^Work Dir\s*[:=]\s*([^#]*)/i )
95         { $Globals{ 'work-dir' } = strip( $1 ); }
96         elsif ( /^Web Dir\s*[:=]\s*([^#]*)/i )
97         { $Globals{ 'www-dir' } = strip( $1 ); }
98         elsif ( /^Doc Dir\s*[:=]\s*([^#]*)/i )
99         { $Globals{ 'doc-dir' } = strip( $1 ); }
100         elsif ( /^Maintainer File\s*[:=]\s*([^#]*)/i )
101         { $Globals{ 'maintainer-file' } = strip( $1 ); }
102         elsif ( /^Submit List\s*[:=]\s*([^#]*)/i )
103         { $Globals{ 'submit-list' } = strip( $1 ); }
104         elsif ( /^Maint List\s*[:=]\s*([^#]*)/i )
105         { $Globals{ 'maint-list' } = strip( $1 ); }
106         elsif ( /^Quiet List\s*[:=]\s*([^#]*)/i )
107         { $Globals{ 'quiet-list' } = strip( $1 ); }
108         elsif ( /^Forwarded List\s*[:=]\s*([^#]*)/i )
109         { $Globals{ 'forwarded-list' } = strip( $1 ); }
110         elsif ( /^Done List\s*[:=]\s*([^#]*)/i )
111         { $Globals{ 'done-list' } = strip( $1 ); }
112         elsif ( /^Request List\s*[:=]\s*([^#]*)/i )
113         { $Globals{ 'request-list' } = strip( $1 ); }
114         elsif ( /^Submitter List\s*[:=]\s*([^#]*)/i )
115         { $Globals{ 'submitter-list' } = strip( $1 ); }
116         elsif ( /^Control List\s*[:=]\s*([^#]*)/i )
117         { $Globals{ 'control-list' } = strip( $1 ); }
118         elsif ( /^Summary List\s*[:=]\s*([^#]*)/i )
119         { $Globals{ 'summary-list' } = strip( $1 ); }
120         elsif ( /^Mirror List\s*[:=]\s*([^#]*)/i )
121         { $Globals{ 'mirror-list' } = strip( $1 ); }
122         elsif ( /^Mailer\s*[:=]\s*([^#]*)/i )
123         { $Globals{ 'mailer' } = strip( $1 ); }
124         elsif ( /^Singular Term\s*[:=]\s*([^#]*)/i )
125         { $Globals{ 'singular' } = strip( $1 ); }
126         elsif ( /^Plural Term\s*[:=]\s*([^#]*)/i )
127         { $Globals{ 'plural' } = strip( $1 ); }
128         elsif ( /^Expire Age\s*[:=]\s*([^#]*)/i )
129         { $Globals{ 'expire-age' } = strip( $1 ); }
130         elsif ( /^Save Expired Bugs\s*[:=]\s*([^#]*)/i )
131         { $Globals{ 'save-expired' } = strip( $1 ); }
132         elsif ( /^Mirrors\s*[:=]\s*([^#]*)/i )
133         { $Globals{ 'mirrors' } = strip( $1 ); }
134         elsif ( /^Default Severity\s*[:=]\s*([^#]*)/i )
135         { $Globals{ 'default-severity' } = strip( $1 ); }
136         elsif ( /^Normal Severity\s*[:=]\s*([^#]*)/i )
137         { $Globals{ 'normal-severity' } = strip( $1 ); }
138         elsif ( /^Severity\s+#*(\d+)\s*[:=]\s*([^#]*)/i )
139         {   $Severity{ $1 } = $2;
140             print "D2: (config) Severity $1=$Severity{$1}\n" if $Globals{ 'debug' } > 1;
141         }
142     }
143     if( $Globals{ "debug" } )
144     {
145         print "D1: Configuration\n";
146         print "\tBallot Type = $Globals{ 'ballottype' }\n";
147         print "\tDatabase = $Globals{ 'database' }\n";
148         print "\tBallot Ack = $Globals{ 'response' }\n";
149         print "\tBallot Template = $Globals{ 'ballot' }\n";
150         print "\tTitle = $Globals{ 'title' }\n";
151     }
152     return @config;
153 }
154
155 END { }       # module clean-up code here (global destructor)