# 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
######################################################################################
# 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
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;
################################################################################
-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:
# 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));
# 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));
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:
################################################################################
+# 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
########################################