]> git.donarmstrong.com Git - debbugs.git/blobdiff - Debbugs/Config.pm
[project @ 2003-04-22 19:01:19 by cjwatson]
[debbugs.git] / Debbugs / Config.pm
index d976e9a3e53e89ea8dbb7dd7f1bb500c2826df57..6cf66d83d1c8755cd2bd4a416dbc0c91dd8f323a 100644 (file)
@@ -10,19 +10,23 @@ BEGIN
     $VERSION     = 1.00;
 
     @ISA         = qw(Exporter);
-    @EXPORT      = qw( );
+    @EXPORT      = qw(%Globals %GTags %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 %GTags %Severity %Strong &ParseConfigFile &ParseXMLConfigFile);
 }
 
 use vars      @EXPORT_OK;
 use Debbugs::Common;
+use Debbugs::Email;
 
 # initialize package globals, first exported ones
 %Severity = ();
+%Strong = ();
+$Severity{ 'Text' } = ();
+%GTags = ();
 %Globals = (   "debug" => 0,
                "verbose" => 0,
                "quiet" => 0,
@@ -41,7 +45,69 @@ use Debbugs::Common;
                "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",
+               "Errors Email" => "errors-email",
+               "Owner Webpage" => "owner-webpage",
+               "Spool Dir" => "spool-dir",
+               "Work Dir" => "work-dir",
+               "Web Dir" => "www-dir",
+               "Doc Dir" => "doc-dir",
+               "Template Dir" => "template-dir",
+               "Not-Don-Con" => "not-don-con",
+               "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",
+       );
+
+my %GTagsMap = ( 
+               "email-domain" => "EMAIL_DOMAIN",
+               "list-domain" => "LIST_DOMAIN",
+               "web-domain" => "WEB_DOMAIN",
+               "cgi-domain" => "CGI_DOMAIN",
+               "project-short" => "SHORT_NAME",
+               "project-long" => "LONG_NAME",
+               "owner-name" => "OWNER_NAME",
+               "owner-email" => "OWNER_EMAIL",
+               "submit-list" => "SUBMIT_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",
+               "mirrors" => "MIRRORS"
+       );
 
 sub strip
 {   my $string = $_[0];
@@ -75,151 +141,50 @@ 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' };
-           $GTags{ '' } = $Globals{ '' };
-           print "\t = $Globals{ '' }\n" if $Globals{ 'debug' };
-       }
-       elsif ( /^Summary List\s*[:=]\s*([^#]*)/i )
-       {   $Globals{ 'summary-list' } = strip( $1 ); 
-       }
-       elsif ( /^Mirror List\s*[:=]\s*([^#]*)/i )
-       {   $Globals{ 'mirror-list' } = strip( $1 ); 
-       }
-       elsif ( /^Mailer\s*[:=]\s*([^#]*)/i )
-       {   $Globals{ 'mailer' } = strip( $1 ); 
-       }
-       elsif ( /^Singular Term\s*[:=]\s*([^#]*)/i )
-       {   $Globals{ 'singular' } = strip( $1 ); 
-       }
-       elsif ( /^Plural Term\s*[:=]\s*([^#]*)/i )
-       {   $Globals{ 'plural' } = strip( $1 ); 
-       }
-       elsif ( /^Expire Age\s*[:=]\s*([^#]*)/i )
-       {   $Globals{ 'expire-age' } = strip( $1 ); 
-       }
-       elsif ( /^Save Expired Bugs\s*[:=]\s*([^#]*)/i )
-       {   $Globals{ 'save-expired' } = strip( $1 ); 
-       }
-       elsif ( /^Mirrors\s*[:=]\s*([^#]*)/i )
-       {   $Globals{ 'mirrors' } = strip( $1 ); 
-       }
-       elsif ( /^Default Severity\s*[:=]\s*([^#]*)/i )
-       {   $Globals{ 'default-severity' } = strip( $1 ); 
-       }
-       elsif ( /^Normal Severity\s*[:=]\s*([^#]*)/i )
-       {   $Globals{ 'normal-severity' } = strip( $1 ); 
-       }
-        elsif ( /^Severity\s+#*(\d+)\s*[:=]\s*([^#]*)/i )
-        {   $Severity{ $1 } = $2;
-            print "D2: (config) Severity $1=$Severity{$1}\n" if $Globals{ 'debug' } > 1;
-        }
-    }
-    if( $Globals{ "debug" } )
-    {
-       print "D1: Configuration\n";
-       print "\tBallot Type = $Globals{ 'ballottype' }\n";
-       print "\tDatabase = $Globals{ 'database' }\n";
-       print "\tBallot Ack = $Globals{ 'response' }\n";
-       print "\tBallot Template = $Globals{ 'ballot' }\n";
-       print "\tTitle = $Globals{ 'title' }\n";
+       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'" if $Globals{ 'debug' } > 1;
+                   my $gtag = $GTagsMap{ $map };
+                   if(defined($gtag)) {
+                       $GTags{ $gtag } = $value;
+                       print "GTag = '$gtag'" if $Globals{ 'debug' } > 1;
+                   }
+                   print "\n" if $Globals{ 'debug' } > 1;
+                   next;
+               } else {
+                   print "$key\n";
+               }
+                   
+           }
+       }
+       print "Unknown line in config!($_)\n";
+       next;
     }
     return @config;
 }