1 package Debbugs::Config; # assumes Some/Module.pm
7 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
9 # set the version for version checking
13 @EXPORT = qw( %Globals );
14 %EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ],
16 # your exported package globals go here,
17 # as well as any optionally exported functions
18 @EXPORT_OK = qw(%Globals %Severity &ParseConfigFile);
25 # initialize package globals, first exported ones
27 %Globals = ( "debug" => 0,
31 "email-domain" => "bugs.domain.com",
32 "list-domain" => "lists.domain.com",
33 "web-domain" => "web.domain.com",
34 "cgi-domain" => "cgi.domain.com",
36 "project-short" => "debbugs",
37 "project-long" => "Debbugs Test Project",
38 "owner-name" => "Fred Flintstone",
39 "owner-email" => "owner\@bugs.domain.com",
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" );
49 chop $string while $string =~ /\s$/;
53 #############################################################################
54 # Read Config File and parse
55 #############################################################################
57 { my $configfile = $_[0];
63 print "V: Loading Config File\n" if $Globals{ "verbose" };
64 open(CONFIG,$configfile) or &fail( "E: Unable to open `$configfile'" );
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' };
73 for( my $i=0; $i<=$#config; $i++)
76 next unless length $_;
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' };
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' };
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' };
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' };
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' };
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' };
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' };
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' };
119 elsif ( /^Spool Dir\s*[:=]\s*([^#]*)/i )
120 { $Globals{ 'spool-dir' } = strip( $1 );
121 print "\tSpool Dir = $Globals{ 'spool-dir' }\n" if $Globals{ 'debug' };
123 elsif ( /^Work Dir\s*[:=]\s*([^#]*)/i )
124 { $Globals{ 'work-dir' } = strip( $1 );
125 print "\tWork Dir = $Globals{ 'work-dir' }\n" if $Globals{ 'debug' };
127 elsif ( /^Web Dir\s*[:=]\s*([^#]*)/i )
128 { $Globals{ 'www-dir' } = strip( $1 );
129 print "\tWeb Dir = $Globals{ 'www-dir' }\n" if $Globals{ 'debug' };
131 elsif ( /^Doc Dir\s*[:=]\s*([^#]*)/i )
132 { $Globals{ 'doc-dir' } = strip( $1 );
133 print "\tDoc Dir = $Globals{ 'doc-dir' }\n" if $Globals{ 'debug' };
135 elsif ( /^Maintainer File\s*[:=]\s*([^#]*)/i )
136 { $Globals{ 'maintainer-file' } = strip( $1 );
137 print "\tMaintainer File = $Globals{ 'maintainer-file' }\n" if $Globals{ 'debug' };
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' };
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' };
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' };
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' };
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' };
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' };
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' };
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' };
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' };
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' };
189 elsif ( /^Mailer\s*[:=]\s*([^#]*)/i )
190 { $Globals{ 'mailer' } = strip( $1 );
191 print "\tMailer = $Globals{ 'mailer' }\n" if $Globals{ 'debug' };
193 elsif ( /^Singular Term\s*[:=]\s*([^#]*)/i )
194 { $Globals{ 'singular' } = strip( $1 );
195 print "\tSingular Term = $Globals{ 'singular' }\n" if $Globals{ 'debug' };
197 elsif ( /^Plural Term\s*[:=]\s*([^#]*)/i )
198 { $Globals{ 'plural' } = strip( $1 );
199 print "\tPlural Term = $Globals{ 'plural-term' }\n" if $Globals{ 'debug' };
201 elsif ( /^Expire Age\s*[:=]\s*([^#]*)/i )
202 { $Globals{ 'expire-age' } = strip( $1 );
203 print "\tExpire Age = $Globals{ 'expire-age' }\n" if $Globals{ 'debug' };
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' };
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' };
214 elsif ( /^Default Severity\s*[:=]\s*([^#]*)/i )
215 { $Globals{ 'default-severity' } = strip( $1 );
216 print "\tDefault Severity = $Globals{ 'default-severity' }\n" if $Globals{ 'debug' };
218 elsif ( /^Normal Severity\s*[:=]\s*([^#]*)/i )
219 { $Globals{ 'normal-severity' } = strip( $1 );
220 print "\tNormal Severity = $Globals{ 'normal-severity' }\n" if $Globals{ 'debug' };
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;
230 END { } # module clean-up code here (global destructor)