]> git.donarmstrong.com Git - debbugs.git/blob - Debbugs/Config.pm
[project @ 2000-03-23 05:05:51 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( %Globals );
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 use Debbugs::Email;
24
25 # initialize package globals, first exported ones
26 %Severity = ();
27 %Globals = (    "debug" => 0,
28                 "verbose" => 0,
29                 "quiet" => 0,
30                 ##### domains
31                 "email-domain" => "bugs.domain.com",
32                 "list-domain" => "lists.domain.com",
33                 "web-domain" => "web.domain.com",
34                 "cgi-domain" => "cgi.domain.com",
35                 ##### identification
36                 "project-short" => "debbugs",
37                 "project-long" => "Debbugs Test Project",
38                 "owner-name" => "Fred Flintstone",
39                 "owner-email" => "owner\@bugs.domain.com",
40                 ##### directories
41                 "work-dir" => "/var/lib/debbugs/spool",
42                 "spool-dir" => "/var/lib/debbugs/spool/incoming",
43                 "www-dir" => "/var/lib/debbugs/www",
44                 "doc-dir" => "/var/lib/debbugs/www/txt",
45                 "maintainer-file" => "/etc/debbugs/Maintainers" );
46
47 sub strip
48 {   my $string = $_[0];
49     chop $string while $string =~ /\s$/; 
50     return $string;
51 }
52
53 #############################################################################
54 #  Read Config File and parse
55 #############################################################################
56 sub ParseConfigFile
57 {   my $configfile = $_[0];
58     my @config;
59     my $votetitle = '';
60     my $ballottype = '';
61
62     #load config file
63     print "V: Loading Config File\n" if $Globals{ "verbose" };
64     open(CONFIG,$configfile) or &fail( "E: Unable to open `$configfile'" );
65     @config = <CONFIG>;
66     close CONFIG;
67
68     #parse config file
69     print "V: Parsing Config File\n" if $Globals{ "verbose" };
70     print "D3: Parse Config:\n@config\n" if $Globals{ 'debug' } > 2;
71     print "D1: Configuration\n" if $Globals{ 'debug' };
72
73     for( my $i=0; $i<=$#config; $i++)
74     {   $_ = $config[$i];
75         chop $_;
76         next unless length $_;
77         next if /^#/;
78
79         if ( /^Email Domain\s*[:=]\s*([^#]*)/i )
80         {   $Globals{ 'email-domain' } = strip( $1 ); 
81             $GTags{ 'EMAIL_DOMAIN' } = $Globals{ 'email-domain' };
82             print "\tEmail Domain = $Globals{ 'email-domain' }\n" if $Globals{ 'debug' };
83         }
84         elsif ( /^List Domain\s*[:=]\s*([^#]*)/i )
85         {   $Globals{ 'list-domain' } = strip( $1 ); 
86             $GTags{ 'LIST_DOMAIN' } = $Globals{ 'list-domain' };
87             print "\tList Domain = $Globals{ 'list-domain' }\n" if $Globals{ 'debug' };
88         }
89         elsif ( /^Web Domain\s*[:=]\s*([^#]*)/i )
90         {   $Globals{ 'web-domain' } = strip( $1 ); 
91             $GTags{ 'WEB_DOMAIN' } = $Globals{ 'web-domain' };
92             print "\tWeb Domain = $Globals{ 'web-domain' }\n" if $Globals{ 'debug' };
93         }
94         elsif ( /^CGI Domain\s*[:=]\s*([^#]*)/i )
95         {   $Globals{ 'cgi-domain' } = strip( $1 ); 
96             $GTags{ 'CGI_DOMAIN' } = $Globals{ 'cgi-domain' };
97             print "\tCGI Domain = $Globals{ 'cgi-domain' }\n" if $Globals{ 'debug' };
98         }
99         elsif ( /^Short Name\s*[:=]\s*([^#]*)/i )
100         {   $Globals{ 'project-short' } = strip( $1 ); 
101             $GTags{ 'SHORT_NAME' } = $Globals{ 'project-short' };
102             print "\tShort Name = $Globals{ 'project-short' }\n" if $Globals{ 'debug' };
103         }
104         elsif ( /^Long Name\s*[:=]\s*([^#]*)/i )
105         {   $Globals{ 'project-long' } = strip( $1 ); 
106             $GTags{ 'LONG_NAME' } = $Globals{ 'project-long' };
107             print "\tLong Name = $Globals{ 'project-long' }\n" if $Globals{ 'debug' };
108         }
109         elsif ( /^Owner Name\s*[:=]\s*([^#]*)/i )
110         {   $Globals{ 'owner-name' } = strip( $1 ); 
111             $GTags{ 'OWNER_NAME' } = $Globals{ 'owner-name' };
112             print "\tOwner Name = $Globals{ 'owner-name' }\n" if $Globals{ 'debug' };
113         }
114         elsif ( /^Owner Email\s*[:=]\s*([^#]*)/i )
115         {   $Globals{ 'owner-email' } = strip( $1 ); 
116             $GTags{ 'OWNER_EMAIL' } = $Globals{ 'owner-email' };
117             print "\tOWNER Email = $Globals{ 'owner-email' }\n" if $Globals{ 'debug' };
118         }
119         elsif ( /^Spool Dir\s*[:=]\s*([^#]*)/i )
120         {   $Globals{ 'spool-dir' } = strip( $1 ); 
121             print "\tSpool Dir = $Globals{ 'spool-dir' }\n" if $Globals{ 'debug' };
122         }
123         elsif ( /^Work Dir\s*[:=]\s*([^#]*)/i )
124         {   $Globals{ 'work-dir' } = strip( $1 ); 
125             print "\tWork Dir = $Globals{ 'work-dir' }\n" if $Globals{ 'debug' };
126         }
127         elsif ( /^Web Dir\s*[:=]\s*([^#]*)/i )
128         {   $Globals{ 'www-dir' } = strip( $1 ); 
129             print "\tWeb Dir = $Globals{ 'www-dir' }\n" if $Globals{ 'debug' };
130         }
131         elsif ( /^Doc Dir\s*[:=]\s*([^#]*)/i )
132         {   $Globals{ 'doc-dir' } = strip( $1 ); 
133             print "\tDoc Dir = $Globals{ 'doc-dir' }\n" if $Globals{ 'debug' };
134         }
135         elsif ( /^Maintainer File\s*[:=]\s*([^#]*)/i )
136         {   $Globals{ 'maintainer-file' } = strip( $1 ); 
137             print "\tMaintainer File = $Globals{ 'maintainer-file' }\n" if $Globals{ 'debug' };
138         }
139         elsif ( /^Submit List\s*[:=]\s*([^#]*)/i )
140         {   $Globals{ 'submit-list' } = strip( $1 ); 
141             $GTags{ 'SUBMIT_LIST' } = $Globals{ 'submit-list' };
142             print "\tSubmit List = $Globals{ 'submit-list' }\n" if $Globals{ 'debug' };
143         }
144         elsif ( /^Maint List\s*[:=]\s*([^#]*)/i )
145         {   $Globals{ 'maint-list' } = strip( $1 ); 
146             $GTags{ 'MAINT_LIST' } = $Globals{ 'maint-list' };
147             print "\tMaint List = $Globals{ 'maint-list' }\n" if $Globals{ 'debug' };
148         }
149         elsif ( /^Quiet List\s*[:=]\s*([^#]*)/i )
150         {   $Globals{ 'quiet-list' } = strip( $1 ); 
151             $GTags{ 'QUIET_LIST' } = $Globals{ 'quiet-list' };
152             print "\tQuiet List = $Globals{ 'quiet-list' }\n" if $Globals{ 'debug' };
153         }
154         elsif ( /^Forwarded List\s*[:=]\s*([^#]*)/i )
155         {   $Globals{ 'forwarded-list' } = strip( $1 ); 
156             $GTags{ 'FORWARDED_LIST' } = $Globals{ 'forwarded-list' };
157             print "\tForwarded List = $Globals{ 'forwarded-list' }\n" if $Globals{ 'debug' };
158         }
159         elsif ( /^Done List\s*[:=]\s*([^#]*)/i )
160         {   $Globals{ 'done-list' } = strip( $1 ); 
161             $GTags{ 'DONE_LIST' } = $Globals{ 'done-list' };
162             print "\tDone List = $Globals{ 'done-list' }\n" if $Globals{ 'debug' };
163         }
164         elsif ( /^Request List\s*[:=]\s*([^#]*)/i )
165         {   $Globals{ 'request-list' } = strip( $1 ); 
166             $GTags{ 'REQUEST_LIST' } = $Globals{ 'request-list' };
167             print "\tRequest List = $Globals{ 'request-list' }\n" if $Globals{ 'debug' };
168         }
169         elsif ( /^Submitter List\s*[:=]\s*([^#]*)/i )
170         {   $Globals{ 'submitter-list' } = strip( $1 ); 
171             $GTags{ 'SUBMITTER_LIST' } = $Globals{ 'submitter-list' };
172             print "\tSubmitter List = $Globals{ 'submitter-list' }\n" if $Globals{ 'debug' };
173         }
174         elsif ( /^Control List\s*[:=]\s*([^#]*)/i )
175         {   $Globals{ 'control-list' } = strip( $1 ); 
176             $GTags{ 'CONTROL_LIST' } = $Globals{ 'control-list' };
177             print "\tControl List = $Globals{ 'control-list' }\n" if $Globals{ 'debug' };
178         }
179         elsif ( /^Summary List\s*[:=]\s*([^#]*)/i )
180         {   $Globals{ 'summary-list' } = strip( $1 ); 
181             $GTags{ 'SUMMARY_LIST' } = $Globals{ 'summary-list' };
182             print "\tSUMMARY_LIST = $Globals{ 'summary-list' }\n" if $Globals{ 'debug' };
183         }
184         elsif ( /^Mirror List\s*[:=]\s*([^#]*)/i )
185         {   $Globals{ 'mirror-list' } = strip( $1 ); 
186             $GTags{ 'MIRROR_LIST' } = $Globals{ 'mirror-list' };
187             print "\tMirror List = $Globals{ 'mirror-list' }\n" if $Globals{ 'debug' };
188         }
189         elsif ( /^Mailer\s*[:=]\s*([^#]*)/i )
190         {   $Globals{ 'mailer' } = strip( $1 ); 
191             print "\tMailer = $Globals{ 'mailer' }\n" if $Globals{ 'debug' };
192         }
193         elsif ( /^Singular Term\s*[:=]\s*([^#]*)/i )
194         {   $Globals{ 'singular' } = strip( $1 ); 
195             print "\tSingular Term = $Globals{ 'singular' }\n" if $Globals{ 'debug' };
196         }
197         elsif ( /^Plural Term\s*[:=]\s*([^#]*)/i )
198         {   $Globals{ 'plural' } = strip( $1 ); 
199             print "\tPlural Term = $Globals{ 'plural-term' }\n" if $Globals{ 'debug' };
200         }
201         elsif ( /^Expire Age\s*[:=]\s*([^#]*)/i )
202         {   $Globals{ 'expire-age' } = strip( $1 ); 
203             print "\tExpire Age = $Globals{ 'expire-age' }\n" if $Globals{ 'debug' };
204         }
205         elsif ( /^Save Expired Bugs\s*[:=]\s*([^#]*)/i )
206         {   $Globals{ 'save-expired' } = strip( $1 ); 
207             print "\tSave Expire = $Globals{ 'save-expire' }\n" if $Globals{ 'debug' };
208         }
209         elsif ( /^Mirrors\s*[:=]\s*([^#]*)/i )
210         {   $Globals{ 'mirrors' } = strip( $1 ); 
211             $GTags{ 'MIRRORS' } = $Globals{ 'mirrors' };
212             print "\tMirrors = $Globals{ 'mirrors' }\n" if $Globals{ 'debug' };
213         }
214         elsif ( /^Default Severity\s*[:=]\s*([^#]*)/i )
215         {   $Globals{ 'default-severity' } = strip( $1 ); 
216             print "\tDefault Severity = $Globals{ 'default-severity' }\n" if $Globals{ 'debug' };
217         }
218         elsif ( /^Normal Severity\s*[:=]\s*([^#]*)/i )
219         {   $Globals{ 'normal-severity' } = strip( $1 ); 
220             print "\tNormal Severity = $Globals{ 'normal-severity' }\n" if $Globals{ 'debug' };
221         }
222         elsif ( /^Severity\s+#*(\d+)\s*[:=]\s*([^#]*)/i )
223         {   $Severity{ $1 } = $2;
224             print "D2: (config) Severity $1=$Severity{$1}\n" if $Globals{ 'debug' } > 1;
225         }
226     }
227     return @config;
228 }
229
230 END { }       # module clean-up code here (global destructor)