X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=utils.py;h=aca1df7618f19a337669864bed5c792661aedf26;hb=198eec2dac3085a0599a85600e7e78185894dca2;hp=43da83968a555de36fb77adbfdc1d0a236aa2612;hpb=7f688a39fbe2022378ae3db9019bb2e74de7621e;p=dak.git diff --git a/utils.py b/utils.py index 43da8396..aca1df76 100644 --- a/utils.py +++ b/utils.py @@ -1,6 +1,6 @@ # Utility functions -# Copyright (C) 2000, 2001 James Troup -# $Id: utils.py,v 1.41 2002-04-21 15:39:06 troup Exp $ +# Copyright (C) 2000, 2001, 2002 James Troup +# $Id: utils.py,v 1.43 2002-05-10 00:24:14 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 @@ -379,10 +379,13 @@ def regex_safe (s): ###################################################################################### # Perform a substition of template -def TemplateSubst(Map,Template): - for x in Map.keys(): - Template = string.replace(Template,x,Map[x]); - return Template; +def TemplateSubst(map, filename): + file = open_file(filename); + template = file.read(); + for x in map.keys(): + template = string.replace(template,x,map[x]); + file.close(); + return template; ###################################################################################### @@ -422,8 +425,7 @@ def cc_fix_changes (changes): for j in string.split(o): changes["architecture"][j] = 1 -# Sort by 'have source', by source name, by source version number, by filename - +# Sort by source name, source version, 'have source', and then by filename def changes_compare (a, b): try: a_changes = parse_changes(a, 0) @@ -438,17 +440,7 @@ def changes_compare (a, b): cc_fix_changes (a_changes); cc_fix_changes (b_changes); - # Sort by 'have source' - - a_has_source = a_changes["architecture"].get("source") - b_has_source = b_changes["architecture"].get("source") - if a_has_source and not b_has_source: - return -1; - elif b_has_source and not a_has_source: - return 1; - # Sort by source name - a_source = a_changes.get("source"); b_source = b_changes.get("source"); q = cmp (a_source, b_source); @@ -456,15 +448,21 @@ def changes_compare (a, b): return q; # Sort by source version - a_version = a_changes.get("version"); b_version = b_changes.get("version"); q = apt_pkg.VersionCompare(a_version, b_version); if q: return q - # Fall back to sort by filename + # Sort by 'have source' + a_has_source = a_changes["architecture"].get("source") + b_has_source = b_changes["architecture"].get("source") + if a_has_source and not b_has_source: + return -1; + elif b_has_source and not a_has_source: + return 1; + # Fall back to sort by filename return cmp(a, b); ################################################################################ @@ -505,6 +503,32 @@ def prefix_multi_line_string(str, prefix): ################################################################################ +def validate_changes_file_arg(file, fatal=1): + error = None; + + if file[-6:] == ".katie": + file = file[:-6]+".changes"; + + if file[-8:] != ".changes": + error = "invalid file type; not a changes file"; + else: + if not os.access(file,os.R_OK): + if os.path.exists(file): + error = "permission denied"; + else: + error = "file not found"; + + if error: + if fatal: + fubar("%s: %s." % (file, error)); + else: + warn("Skipping %s - %s" % (file, error)); + return None; + else: + return file; + +################################################################################ + def get_conf(): return Cnf;