1 package Debvote::Config; # assumes Some/Module.pm
7 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
9 # set the version for version checking
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 %Severities &ParseConfigFile);
23 # initialize package globals, first exported ones
25 %Globals = ( "debug" => 0,
29 "email-domain" => "bugs.domain.com",
30 "list-domain" => "lists.domain.com",
31 "web-domain" => "web.domain.com",
32 "cgi-domain" => "cgi.domain.com",
34 "project-short" => "debbugs",
35 "project-long" => "Debbugs Test Project",
36 "owner-name" => "Fred Flintstone",
37 "owner-email" => "owner@bugs.domain.com",
39 "work-dir" => "/var/lib/debbugs/spool",
40 "spool-dir" => "/var/lib/debbugs/spool/incoming",
41 "www-dir" => "/var/lib/debbugs/www",
42 "doc-dir" => "/var/lib/debbugs/www/txt",
43 "maintainer-file" => "/etc/debbugs/Maintainers" );
47 chop $string while $string =~ /\s$/;
51 #############################################################################
52 # Read Config File and parse
53 #############################################################################
55 { my $configfile = $_[0];
61 print "V: Loading Config File\n" if $Globals{ "verbose" };
62 open(CONFIG,$configfile) or &::fail( "E: Unable to open `$configfile'" );
67 print "V: Parsing Config File\n" if $Globals{ "verbose" };
68 print "D3: Parse Config:\n@config\n" if $Globals{ 'debug' } > 2;
69 for( my $i=0; $i<=$#config; $i++)
72 next unless length $_;
75 if ( /^Email Domain\s*[:=]\s*([^#]*)/i )
76 { $Globals{ 'email-domain' } = strip( $1 ); }
77 elsif ( /^List Domain\s*[:=]\s*([^#]*)/i )
78 { $Globals{ 'list-domain' } = strip( $1 ); }
79 elsif ( /^Web Domain\s*[:=]\s*([^#]*)/i )
80 { $Globals{ 'web-domain' } = strip( $1 ); }
81 elsif ( /^CGI Domain\s*[:=]\s*([^#]*)/i )
82 { $Globals{ 'cgi-domain' } = strip( $1 ); }
83 elsif ( /^Short Name\s*[:=]\s*([^#]*)/i )
84 { $Globals{ 'project-short' } = strip( $1 ); }
85 elsif ( /^Long Name\s*[:=]\s*([^#]*)/i )
86 { $Globals{ 'project-long' } = strip( $1 ); }
87 elsif ( /^Owner Name\s*[:=]\s*([^#]*)/i )
88 { $Globals{ 'owner-name' } = strip( $1 ); }
89 elsif ( /^Owner Email\s*[:=]\s*([^#]*)/i )
90 { $Globals{ 'owner-email' } = strip( $1 ); }
91 elsif ( /^Spool Dir\s*[:=]\s*([^#]*)/i )
92 { $Globals{ 'spool-dir' } = strip( $1 ); }
93 elsif ( /^Work Dir\s*[:=]\s*([^#]*)/i )
94 { $Globals{ 'work-dir' } = strip( $1 ); }
95 elsif ( /^Web Dir\s*[:=]\s*([^#]*)/i )
96 { $Globals{ 'www-dir' } = strip( $1 ); }
97 elsif ( /^Doc Dir\s*[:=]\s*([^#]*)/i )
98 { $Globals{ 'doc-dir' } = strip( $1 ); }
99 elsif ( /^Maintainer File\s*[:=]\s*([^#]*)/i )
100 { $Globals{ 'maintainer-file' } = strip( $1 ); }
101 elsif ( /^Submit List\s*[:=]\s*([^#]*)/i )
102 { $Globals{ 'submit-list' } = strip( $1 ); }
103 elsif ( /^Maint List\s*[:=]\s*([^#]*)/i )
104 { $Globals{ 'maint-list' } = strip( $1 ); }
105 elsif ( /^Quiet List\s*[:=]\s*([^#]*)/i )
106 { $Globals{ 'quiet-list' } = strip( $1 ); }
107 elsif ( /^Forwarded List\s*[:=]\s*([^#]*)/i )
108 { $Globals{ 'forwarded-list' } = strip( $1 ); }
109 elsif ( /^Done List\s*[:=]\s*([^#]*)/i )
110 { $Globals{ 'done-list' } = strip( $1 ); }
111 elsif ( /^Request List\s*[:=]\s*([^#]*)/i )
112 { $Globals{ 'request-list' } = strip( $1 ); }
113 elsif ( /^Submitter List\s*[:=]\s*([^#]*)/i )
114 { $Globals{ 'submitter-list' } = strip( $1 ); }
115 elsif ( /^Control List\s*[:=]\s*([^#]*)/i )
116 { $Globals{ 'control-list' } = strip( $1 ); }
117 elsif ( /^Summary List\s*[:=]\s*([^#]*)/i )
118 { $Globals{ 'summary-list' } = strip( $1 ); }
119 elsif ( /^Mirror List\s*[:=]\s*([^#]*)/i )
120 { $Globals{ 'mirror-list' } = strip( $1 ); }
121 elsif ( /^Mailer\s*[:=]\s*([^#]*)/i )
122 { $Globals{ 'mailer' } = strip( $1 ); }
123 elsif ( /^Singular Term\s*[:=]\s*([^#]*)/i )
124 { $Globals{ 'singular' } = strip( $1 ); }
125 elsif ( /^Plural Term\s*[:=]\s*([^#]*)/i )
126 { $Globals{ 'plural' } = strip( $1 ); }
127 elsif ( /^Expire Age\s*[:=]\s*([^#]*)/i )
128 { $Globals{ 'expire-age' } = strip( $1 ); }
129 elsif ( /^Save Expired Bugs\s*[:=]\s*([^#]*)/i )
130 { $Globals{ 'save-expired' } = strip( $1 ); }
131 elsif ( /^Mirrors\s*[:=]\s*([^#]*)/i )
132 { $Globals{ 'mirrors' } = strip( $1 ); }
133 elsif ( /^Default Severity\s*[:=]\s*([^#]*)/i )
134 { $Globals{ 'default-severity' } = strip( $1 ); }
135 elsif ( /^Normal Severity\s*[:=]\s*([^#]*)/i )
136 { $Globals{ 'normal-severity' } = strip( $1 ); }
137 elsif ( /^Severity\s+#*(\d+)\s*[:=]\s*([^#]*)/i )
138 { $Severity{ $1 } = $2;
139 print "D2: (config) Severity $1=$choice{$1}\n" if $Globals{ 'debug' } > 1;
142 if( $Globals{ "debug" } )
144 print "D1: Configuration\n";
145 print "\tBallot Type = $Globals{ 'ballottype' }\n";
146 print "\tDatabase = $Globals{ 'database' }\n";
147 print "\tBallot Ack = $Globals{ 'response' }\n";
148 print "\tBallot Template = $Globals{ 'ballot' }\n";
149 print "\tTitle = $Globals{ 'title' }\n";
154 END { } # module clean-up code here (global destructor)