From: doogie <> Date: Mon, 1 May 2000 12:16:26 +0000 (-0800) Subject: [project @ 2000-05-01 05:16:26 by doogie] X-Git-Tag: release/2.6.0~1296 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=c1771d709b9980ef2b9cb105221f122b208ec1d0;p=debbugs.git [project @ 2000-05-01 05:16:26 by doogie] Completely overhauled the config file parser. It is now generic, thereby making it easier to add new options. It also catches unknown config lines, and displays them to the user. --- diff --git a/Debbugs/Config.pm b/Debbugs/Config.pm index 6d49bbd2..6d02e134 100644 --- a/Debbugs/Config.pm +++ b/Debbugs/Config.pm @@ -10,12 +10,12 @@ BEGIN $VERSION = 1.00; @ISA = qw(Exporter); - @EXPORT = qw( %Globals ); + @EXPORT = qw(%Globals %Strong %Severity ); %EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ], # your exported package globals go here, # as well as any optionally exported functions - @EXPORT_OK = qw(%Globals %Severity &ParseConfigFile); + @EXPORT_OK = qw(%Globals %Severity %Strong &ParseConfigFile &ParseXMLConfigFile); } use vars @EXPORT_OK; @@ -24,6 +24,8 @@ use Debbugs::Email; # initialize package globals, first exported ones %Severity = (); +%Strong = (); +$Severity{ 'Text' } = (); %Globals = ( "debug" => 0, "verbose" => 0, "quiet" => 0, @@ -42,8 +44,45 @@ use Debbugs::Email; "spool-dir" => "/var/lib/debbugs/spool/incoming", "www-dir" => "/var/lib/debbugs/www", "doc-dir" => "/var/lib/debbugs/www/txt", - "maintainer-file" => "/etc/debbugs/Maintainers" ); + ##### files + "maintainer-file" => "/etc/debbugs/Maintainers", + "pseudo-description" => "/etc/debbugs/pseudo-packages.description"); +my %ConfigMap = ( + "Email Domain" => "email-domain", + "List Domain" => "list-domain", + "Web Domain" => "web-domain", + "CGI Domain" => "cgi-domain", + "Short Name" => "project-short", + "Long Name" => "project-long", + "Owner Name" => "owner-name", + "Owner Email" => "owner-email", + "Owner Webpage" => "owner-webpage", + "Spool Dir" => "spool-dir", + "Work Dir" => "work-dir", + "Web Dir" => "www-dir", + "Doc Dir" => "doc-dir", + "Maintainer File" => "maintainer-file", + "Pseudo Description File" => "pseudo-description", + "Submit List" => "submit-list", + "Maint List" => "maint-list", + "Quiet List" => "quiet-list", + "Forwarded List" => "forwarded-list", + "Done List" => "done-list", + "Request List" => "request-list", + "Submitter List" => "submitter-list", + "Control List" => "control-list", + "Summary List" => "summary-list", + "Mirror List" => "mirror-list", + "Mailer" => "mailer", + "Singular Term" => "singluar", + "Plural Term" => "plural", + "Expire Age" => "expire-age", + "Save Expired Bugs" => "save-expired", + "Mirrors" => "mirrors", + "Default Severity" => "default-severity", + "Normal Severity" => "normal-severity", + ); sub strip { my $string = $_[0]; chop $string while $string =~ /\s$/; @@ -76,153 +115,43 @@ sub ParseConfigFile next unless length $_; next if /^#/; - if ( /^Email Domain\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'email-domain' } = strip( $1 ); - $GTags{ 'EMAIL_DOMAIN' } = $Globals{ 'email-domain' }; - print "\tEmail Domain = $Globals{ 'email-domain' }\n" if $Globals{ 'debug' }; - } - elsif ( /^List Domain\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'list-domain' } = strip( $1 ); - $GTags{ 'LIST_DOMAIN' } = $Globals{ 'list-domain' }; - print "\tList Domain = $Globals{ 'list-domain' }\n" if $Globals{ 'debug' }; - } - elsif ( /^Web Domain\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'web-domain' } = strip( $1 ); - $GTags{ 'WEB_DOMAIN' } = $Globals{ 'web-domain' }; - print "\tWeb Domain = $Globals{ 'web-domain' }\n" if $Globals{ 'debug' }; - } - elsif ( /^CGI Domain\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'cgi-domain' } = strip( $1 ); - $GTags{ 'CGI_DOMAIN' } = $Globals{ 'cgi-domain' }; - print "\tCGI Domain = $Globals{ 'cgi-domain' }\n" if $Globals{ 'debug' }; - } - elsif ( /^Short Name\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'project-short' } = strip( $1 ); - $GTags{ 'SHORT_NAME' } = $Globals{ 'project-short' }; - print "\tShort Name = $Globals{ 'project-short' }\n" if $Globals{ 'debug' }; - } - elsif ( /^Long Name\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'project-long' } = strip( $1 ); - $GTags{ 'LONG_NAME' } = $Globals{ 'project-long' }; - print "\tLong Name = $Globals{ 'project-long' }\n" if $Globals{ 'debug' }; - } - elsif ( /^Owner Name\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'owner-name' } = strip( $1 ); - $GTags{ 'OWNER_NAME' } = $Globals{ 'owner-name' }; - print "\tOwner Name = $Globals{ 'owner-name' }\n" if $Globals{ 'debug' }; - } - elsif ( /^Owner Email\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'owner-email' } = strip( $1 ); - $GTags{ 'OWNER_EMAIL' } = $Globals{ 'owner-email' }; - print "\tOWNER Email = $Globals{ 'owner-email' }\n" if $Globals{ 'debug' }; - } - elsif ( /^Spool Dir\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'spool-dir' } = strip( $1 ); - print "\tSpool Dir = $Globals{ 'spool-dir' }\n" if $Globals{ 'debug' }; - } - elsif ( /^Work Dir\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'work-dir' } = strip( $1 ); - print "\tWork Dir = $Globals{ 'work-dir' }\n" if $Globals{ 'debug' }; - } - elsif ( /^Web Dir\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'www-dir' } = strip( $1 ); - print "\tWeb Dir = $Globals{ 'www-dir' }\n" if $Globals{ 'debug' }; - } - elsif ( /^Doc Dir\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'doc-dir' } = strip( $1 ); - print "\tDoc Dir = $Globals{ 'doc-dir' }\n" if $Globals{ 'debug' }; - } - elsif ( /^Maintainer File\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'maintainer-file' } = strip( $1 ); - print "\tMaintainer File = $Globals{ 'maintainer-file' }\n" if $Globals{ 'debug' }; - } - elsif ( /^Submit List\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'submit-list' } = strip( $1 ); - $GTags{ 'SUBMIT_LIST' } = $Globals{ 'submit-list' }; - print "\tSubmit List = $Globals{ 'submit-list' }\n" if $Globals{ 'debug' }; - } - elsif ( /^Maint List\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'maint-list' } = strip( $1 ); - $GTags{ 'MAINT_LIST' } = $Globals{ 'maint-list' }; - print "\tMaint List = $Globals{ 'maint-list' }\n" if $Globals{ 'debug' }; - } - elsif ( /^Quiet List\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'quiet-list' } = strip( $1 ); - $GTags{ 'QUIET_LIST' } = $Globals{ 'quiet-list' }; - print "\tQuiet List = $Globals{ 'quiet-list' }\n" if $Globals{ 'debug' }; - } - elsif ( /^Forwarded List\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'forwarded-list' } = strip( $1 ); - $GTags{ 'FORWARDED_LIST' } = $Globals{ 'forwarded-list' }; - print "\tForwarded List = $Globals{ 'forwarded-list' }\n" if $Globals{ 'debug' }; - } - elsif ( /^Done List\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'done-list' } = strip( $1 ); - $GTags{ 'DONE_LIST' } = $Globals{ 'done-list' }; - print "\tDone List = $Globals{ 'done-list' }\n" if $Globals{ 'debug' }; - } - elsif ( /^Request List\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'request-list' } = strip( $1 ); - $GTags{ 'REQUEST_LIST' } = $Globals{ 'request-list' }; - print "\tRequest List = $Globals{ 'request-list' }\n" if $Globals{ 'debug' }; - } - elsif ( /^Submitter List\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'submitter-list' } = strip( $1 ); - $GTags{ 'SUBMITTER_LIST' } = $Globals{ 'submitter-list' }; - print "\tSubmitter List = $Globals{ 'submitter-list' }\n" if $Globals{ 'debug' }; - } - elsif ( /^Control List\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'control-list' } = strip( $1 ); - $GTags{ 'CONTROL_LIST' } = $Globals{ 'control-list' }; - print "\tControl List = $Globals{ 'control-list' }\n" if $Globals{ 'debug' }; - } - elsif ( /^Summary List\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'summary-list' } = strip( $1 ); - $GTags{ 'SUMMARY_LIST' } = $Globals{ 'summary-list' }; - print "\tSUMMARY_LIST = $Globals{ 'summary-list' }\n" if $Globals{ 'debug' }; - } - elsif ( /^Mirror List\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'mirror-list' } = strip( $1 ); - $GTags{ 'MIRROR_LIST' } = $Globals{ 'mirror-list' }; - print "\tMirror List = $Globals{ 'mirror-list' }\n" if $Globals{ 'debug' }; - } - elsif ( /^Mailer\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'mailer' } = strip( $1 ); - print "\tMailer = $Globals{ 'mailer' }\n" if $Globals{ 'debug' }; - } - elsif ( /^Singular Term\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'singular' } = strip( $1 ); - print "\tSingular Term = $Globals{ 'singular' }\n" if $Globals{ 'debug' }; - } - elsif ( /^Plural Term\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'plural' } = strip( $1 ); - print "\tPlural Term = $Globals{ 'plural-term' }\n" if $Globals{ 'debug' }; - } - elsif ( /^Expire Age\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'expire-age' } = strip( $1 ); - print "\tExpire Age = $Globals{ 'expire-age' }\n" if $Globals{ 'debug' }; - } - elsif ( /^Save Expired Bugs\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'save-expired' } = strip( $1 ); - print "\tSave Expire = $Globals{ 'save-expire' }\n" if $Globals{ 'debug' }; - } - elsif ( /^Mirrors\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'mirrors' } = strip( $1 ); - $GTags{ 'MIRRORS' } = $Globals{ 'mirrors' }; - print "\tMirrors = $Globals{ 'mirrors' }\n" if $Globals{ 'debug' }; - } - elsif ( /^Default Severity\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'default-severity' } = strip( $1 ); - print "\tDefault Severity = $Globals{ 'default-severity' }\n" if $Globals{ 'debug' }; - } - elsif ( /^Normal Severity\s*[:=]\s*([^#]*)/i ) - { $Globals{ 'normal-severity' } = strip( $1 ); - print "\tNormal Severity = $Globals{ 'normal-severity' }\n" if $Globals{ 'debug' }; - } - elsif ( /^Severity\s+#*(\d+)\s*[:=]\s*([^#]*)/i ) - { $Severity{ $1 } = $2; - print "D2: (config) Severity $1=$Severity{$1}\n" if $Globals{ 'debug' } > 1; - } + if ( /^([^:=]*)\s*[:=]\s*([^#]*)/i ) { + my $key = strip( $1 ); + my $value = strip( $2 ); + $value = "" if(!defined($value)); + if ( $key =~ /Severity\s+#*(\d+)\s*(.*)/ ) { + my $options = $2; + my $severity = $1; + if( $options =~ /\btext\b/ ) { + $Severity{ 'Text' }{ $severity } = $value; + print "D2: (config) Severity $severity text = $value\n" if $Globals{ 'debug' } > 1; + } else { + $Severity{ $1 } = $value; + print "D2: (config) Severity $severity = $value" if $Globals{ 'debug' } > 1; + if( $options =~ /\bdefault\b/ ) { + $Globals{ "default-severity" } = $severity; + print ", default" if $Globals{ 'debug' } > 1; + } + if( $options =~ /\bstrong\b/ ) { + $Strong{ $severity } = 1; + print ", strong" if $Globals{ 'debug' } > 1; + } + print "\n" if $Globals{ 'debug' } > 1; + } + next; + } else { + my $map = $ConfigMap{$key}; + if(defined($map)) { + $Globals{ $map } = $value; + print "$key = '$value'\n" if $Globals{ 'debug' } > 1; + next; + } else { + print "$key\n"; + } + } + } + print "Unknown line in config!($_)\n"; + next; } return @config; }