]> git.decadent.org.uk Git - dak.git/blobdiff - utils.py
two bug fixes in source_exists changes
[dak.git] / utils.py
index e1b5ab34dbf57881e47ee81567dfdd6ea02ff7b0..3bb751ebc5c22da794cda9e8e7ab68b210d5ca7e 100644 (file)
--- a/utils.py
+++ b/utils.py
@@ -2,7 +2,7 @@
 
 # Utility functions
 # Copyright (C) 2000, 2001, 2002, 2003  James Troup <james@nocrew.org>
-# $Id: utils.py,v 1.55 2003-02-07 14:53:42 troup Exp $
+# $Id: utils.py,v 1.57 2003-03-14 19:05:13 troup Exp $
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -250,7 +250,7 @@ def build_file_list(changes, is_a_dsc=0):
 ######################################################################################
 
 # Fix the `Maintainer:' field to be an RFC822 compatible address.
-# cf. Packaging Manual (4.2.4)
+# cf. Debian Policy Manual (D.2.4)
 #
 # 06:28|<Culus> 'The standard sucks, but my tool is supposed to
 #                interoperate with it. I know - I'll fix the suckage
@@ -258,20 +258,20 @@ def build_file_list(changes, is_a_dsc=0):
 
 def fix_maintainer (maintainer):
     m = re_parse_maintainer.match(maintainer);
-    rfc822 = maintainer
-    name = ""
-    email = ""
+    rfc822 = maintainer;
+    name = "";
+    email = "";
     if m != None and len(m.groups()) == 2:
-        name = m.group(1)
-        email = m.group(2)
+        name = m.group(1);
+        email = m.group(2);
         if name.find(',') != -1 or name.find('.') != -1:
-            rfc822 = re_parse_maintainer.sub(r"\2 (\1)", maintainer)
+            rfc822 = "%s (%s)" % (email, name);
     return (rfc822, name, email)
 
 ######################################################################################
 
 # sendmail wrapper, takes _either_ a message string or a file as arguments
-def send_mail (message, filename):
+def send_mail (message, filename=""):
        # Sanity check arguments
        if message != "" and filename != "":
             raise send_mail_invalid_args_exc;
@@ -499,11 +499,11 @@ def result_join (original, sep = '\t'):
 
 ################################################################################
 
-def prefix_multi_line_string(str, prefix):
+def prefix_multi_line_string(str, prefix, include_blank_lines=0):
     out = "";
     for line in str.split('\n'):
         line = line.strip();
-        if line:
+        if line or include_blank_lines:
             out += "%s%s\n" % (prefix, line);
     # Strip trailing new line
     if out:
@@ -561,7 +561,7 @@ def parse_args(Options):
     # Process suite
     if Options["Suite"]:
         suite_ids_list = [];
-        for suite in Options["Suite"].split():
+        for suite in split_args(Options["Suite"]):
             suite_id = db_access.get_suite_id(suite);
             if suite_id == -1:
                 warn("suite '%s' not recognised." % (suite));
@@ -577,7 +577,7 @@ def parse_args(Options):
     # Process component
     if Options["Component"]:
         component_ids_list = [];
-        for component in Options["Component"].split():
+        for component in split_args(Options["Component"]):
             component_id = db_access.get_component_id(component);
             if component_id == -1:
                 warn("component '%s' not recognised." % (component));
@@ -595,7 +595,7 @@ def parse_args(Options):
     if Options["Architecture"]:
         arch_ids_list = [];
         check_source = 0;
-        for architecture in Options["Architecture"].split():
+        for architecture in split_args(Options["Architecture"]):
             if architecture == "source":
                 check_source = 1;
             else:
@@ -668,6 +668,22 @@ def arch_compare_sw (a, b):
 
 ################################################################################
 
+# Split command line arguments which can be separated by either commas
+# or whitespace.  If dwim is set, it will complain about string ending
+# in comma since this usually means someone did 'madison -a i386, m68k
+# foo' or something and the inevitable confusion resulting from 'm68k'
+# being treated as an argument is undesirable.
+
+def split_args (s, dwim=1):
+    if s.find(",") == -1:
+        return s.split();
+    else:
+        if s[-1:] == "," and dwim:
+            fubar("split_args: found trailing comma, spurious space maybe?");
+        return s.split(",");
+
+################################################################################
+
 def Dict(**dict): return dict
 
 ########################################