]> git.donarmstrong.com Git - debbugs.git/blob - Debbugs/Config.pm
[project @ 2000-03-20 16:24:32 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     print "D1: Configuration\n" if $Globals{ 'debug' };
71
72     for( my $i=0; $i<=$#config; $i++)
73     {   $_ = $config[$i];
74         chop $_;
75         next unless length $_;
76         next if /^#/;
77
78         if ( /^Email Domain\s*[:=]\s*([^#]*)/i )
79         {   $Globals{ 'email-domain' } = strip( $1 ); 
80             $GTags{ 'EMAIL_DOMAIN' } = $Globals{ 'email-domain' };
81             print "\tEmail Domain = $Globals{ 'email-domain' }\n" if $Globals{ 'debug' };
82         }
83         elsif ( /^List Domain\s*[:=]\s*([^#]*)/i )
84         {   $Globals{ 'list-domain' } = strip( $1 ); 
85             $GTags{ 'LIST_DOMAIN' } = $Globals{ 'list-domain' };
86             print "\tList Domain = $Globals{ 'list-domain' }\n" if $Globals{ 'debug' };
87         }
88         elsif ( /^Web Domain\s*[:=]\s*([^#]*)/i )
89         {   $Globals{ 'web-domain' } = strip( $1 ); 
90             $GTags{ 'WEB_DOMAIN' } = $Globals{ 'web-domain' };
91             print "\tWeb Domain = $Globals{ 'web-domain' }\n" if $Globals{ 'debug' };
92         }
93         elsif ( /^CGI Domain\s*[:=]\s*([^#]*)/i )
94         {   $Globals{ 'cgi-domain' } = strip( $1 ); 
95             $GTags{ 'CGI_DOMAIN' } = $Globals{ 'cgi-domain' };
96             print "\tCGI Domain = $Globals{ 'cgi-domain' }\n" if $Globals{ 'debug' };
97         }
98         elsif ( /^Short Name\s*[:=]\s*([^#]*)/i )
99         {   $Globals{ 'project-short' } = strip( $1 ); 
100             $GTags{ 'SHORT_NAME' } = $Globals{ 'project-short' };
101             print "\tShort Name = $Globals{ 'project-short' }\n" if $Globals{ 'debug' };
102         }
103         elsif ( /^Long Name\s*[:=]\s*([^#]*)/i )
104         {   $Globals{ 'project-long' } = strip( $1 ); 
105             $GTags{ 'LONG_NAME' } = $Globals{ 'project-long' };
106             print "\tLong Name = $Globals{ 'project-long' }\n" if $Globals{ 'debug' };
107         }
108         elsif ( /^Owner Name\s*[:=]\s*([^#]*)/i )
109         {   $Globals{ 'owner-name' } = strip( $1 ); 
110             $GTags{ 'OWNER_NAME' } = $Globals{ 'owner-name' };
111             print "\tOwner Name = $Globals{ 'owner-name' }\n" if $Globals{ 'debug' };
112         }
113         elsif ( /^Owner Email\s*[:=]\s*([^#]*)/i )
114         {   $Globals{ 'owner-email' } = strip( $1 ); 
115             $GTags{ 'OWNER_EMAIL' } = $Globals{ 'owner-email' };
116             print "\tOWNER Email = $Globals{ 'owner-email' }\n" if $Globals{ 'debug' };
117         }
118         elsif ( /^Spool Dir\s*[:=]\s*([^#]*)/i )
119         {   $Globals{ 'spool-dir' } = strip( $1 ); 
120             print "\tSpool Dir = $Globals{ 'spool-dir' }\n" if $Globals{ 'debug' };
121         }
122         elsif ( /^Work Dir\s*[:=]\s*([^#]*)/i )
123         {   $Globals{ 'work-dir' } = strip( $1 ); 
124             print "\tWork Dir = $Globals{ 'work-dir' }\n" if $Globals{ 'debug' };
125         }
126         elsif ( /^Web Dir\s*[:=]\s*([^#]*)/i )
127         {   $Globals{ 'www-dir' } = strip( $1 ); 
128             print "\tWeb Dir = $Globals{ 'www-dir' }\n" if $Globals{ 'debug' };
129         }
130         elsif ( /^Doc Dir\s*[:=]\s*([^#]*)/i )
131         {   $Globals{ 'doc-dir' } = strip( $1 ); 
132             print "\tDoc Dir = $Globals{ 'doc-dir' }\n" if $Globals{ 'debug' };
133         }
134         elsif ( /^Maintainer File\s*[:=]\s*([^#]*)/i )
135         {   $Globals{ 'maintainer-file' } = strip( $1 ); 
136             print "\tMaintainer File = $Globals{ 'maintainer-file' }\n" if $Globals{ 'debug' };
137         }
138         elsif ( /^Submit List\s*[:=]\s*([^#]*)/i )
139         {   $Globals{ 'submit-list' } = strip( $1 ); 
140             $GTags{ 'SUBMIT_LIST' } = $Globals{ 'submit-list' };
141             print "\tSubmit List = $Globals{ 'submit-list' }\n" if $Globals{ 'debug' };
142         }
143         elsif ( /^Maint List\s*[:=]\s*([^#]*)/i )
144         {   $Globals{ 'maint-list' } = strip( $1 ); 
145             $GTags{ 'MAINT_LIST' } = $Globals{ 'maint-list' };
146             print "\tMaint List = $Globals{ 'maint-list' }\n" if $Globals{ 'debug' };
147         }
148         elsif ( /^Quiet List\s*[:=]\s*([^#]*)/i )
149         {   $Globals{ 'quiet-list' } = strip( $1 ); 
150             $GTags{ 'QUIET_LIST' } = $Globals{ 'quiet-list' };
151             print "\tQuiet List = $Globals{ 'quiet-list' }\n" if $Globals{ 'debug' };
152         }
153         elsif ( /^Forwarded List\s*[:=]\s*([^#]*)/i )
154         {   $Globals{ 'forwarded-list' } = strip( $1 ); 
155             $GTags{ 'FORWARDED_LIST' } = $Globals{ 'forwarded-list' };
156             print "\tForwarded List = $Globals{ 'forwarded-list' }\n" if $Globals{ 'debug' };
157         }
158         elsif ( /^Done List\s*[:=]\s*([^#]*)/i )
159         {   $Globals{ 'done-list' } = strip( $1 ); 
160             $GTags{ 'DONE_LIST' } = $Globals{ 'done-list' };
161             print "\tDone List = $Globals{ 'done-list' }\n" if $Globals{ 'debug' };
162         }
163         elsif ( /^Request List\s*[:=]\s*([^#]*)/i )
164         {   $Globals{ 'request-list' } = strip( $1 ); 
165             $GTags{ 'REQUEST_LIST' } = $Globals{ 'request-list' };
166             print "\tRequest List = $Globals{ 'request-list' }\n" if $Globals{ 'debug' };
167         }
168         elsif ( /^Submitter List\s*[:=]\s*([^#]*)/i )
169         {   $Globals{ 'submitter-list' } = strip( $1 ); 
170             $GTags{ 'SUBMITTER_LIST' } = $Globals{ 'submitter-list' };
171             print "\tSubmitter List = $Globals{ 'submitter-list' }\n" if $Globals{ 'debug' };
172         }
173         elsif ( /^Control List\s*[:=]\s*([^#]*)/i )
174         {   $Globals{ 'control-list' } = strip( $1 ); 
175             $GTags{ 'CONTROL_LIST' } = $Globals{ 'control-list' };
176             print "\tControl List = $Globals{ 'control-list' }\n" if $Globals{ 'debug' };
177             $GTags{ '' } = $Globals{ '' };
178             print "\t = $Globals{ '' }\n" if $Globals{ 'debug' };
179         }
180         elsif ( /^Summary List\s*[:=]\s*([^#]*)/i )
181         {   $Globals{ 'summary-list' } = strip( $1 ); 
182         }
183         elsif ( /^Mirror List\s*[:=]\s*([^#]*)/i )
184         {   $Globals{ 'mirror-list' } = strip( $1 ); 
185         }
186         elsif ( /^Mailer\s*[:=]\s*([^#]*)/i )
187         {   $Globals{ 'mailer' } = strip( $1 ); 
188         }
189         elsif ( /^Singular Term\s*[:=]\s*([^#]*)/i )
190         {   $Globals{ 'singular' } = strip( $1 ); 
191         }
192         elsif ( /^Plural Term\s*[:=]\s*([^#]*)/i )
193         {   $Globals{ 'plural' } = strip( $1 ); 
194         }
195         elsif ( /^Expire Age\s*[:=]\s*([^#]*)/i )
196         {   $Globals{ 'expire-age' } = strip( $1 ); 
197         }
198         elsif ( /^Save Expired Bugs\s*[:=]\s*([^#]*)/i )
199         {   $Globals{ 'save-expired' } = strip( $1 ); 
200         }
201         elsif ( /^Mirrors\s*[:=]\s*([^#]*)/i )
202         {   $Globals{ 'mirrors' } = strip( $1 ); 
203         }
204         elsif ( /^Default Severity\s*[:=]\s*([^#]*)/i )
205         {   $Globals{ 'default-severity' } = strip( $1 ); 
206         }
207         elsif ( /^Normal Severity\s*[:=]\s*([^#]*)/i )
208         {   $Globals{ 'normal-severity' } = strip( $1 ); 
209         }
210         elsif ( /^Severity\s+#*(\d+)\s*[:=]\s*([^#]*)/i )
211         {   $Severity{ $1 } = $2;
212             print "D2: (config) Severity $1=$Severity{$1}\n" if $Globals{ 'debug' } > 1;
213         }
214     }
215     if( $Globals{ "debug" } )
216     {
217         print "D1: Configuration\n";
218         print "\tBallot Type = $Globals{ 'ballottype' }\n";
219         print "\tDatabase = $Globals{ 'database' }\n";
220         print "\tBallot Ack = $Globals{ 'response' }\n";
221         print "\tBallot Template = $Globals{ 'ballot' }\n";
222         print "\tTitle = $Globals{ 'title' }\n";
223     }
224     return @config;
225 }
226
227 END { }       # module clean-up code here (global destructor)