X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=helena;h=7337461013320e5e370a2169ea7735be131111f4;hb=f55dc9d51b0b89507410753f94d42f1ad67115ad;hp=1d2ebc58a5a7a2a8cea32b138400a101aefcf0ab;hpb=c846e77a848d60dd115f00faa0d9a854161d99eb;p=dak.git diff --git a/helena b/helena index 1d2ebc58..73374610 100755 --- a/helena +++ b/helena @@ -1,8 +1,8 @@ #!/usr/bin/env python # Produces a report on NEW and BYHAND packages -# Copyright (C) 2001, 2002 James Troup -# $Id: helena,v 1.2 2002-10-16 02:47:32 troup Exp $ +# Copyright (C) 2001, 2002, 2003 James Troup +# $Id: helena,v 1.5 2003-07-15 17:29:26 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 @@ -44,7 +44,16 @@ Katie = None; ################################################################################ -def plural (x): +def usage(exit_code=0): + print """Usage: helena +Prints a report of packages in queue directories (usually new and byhand). + + -h, --help show this help and exit.""" + sys.exit(exit_code) + +################################################################################ + +def plural(x): if x > 1: return "s"; else: @@ -72,7 +81,7 @@ def time_pp(x): unit="month"; else: x /= 29030400; - unit="years"; + unit="year"; x = int(x); return "%s %s%s" % (x, unit, plural(x)); @@ -136,23 +145,42 @@ def process_changes_files(changes_files, type): per_source[source]["note_state"] = 2; # all per_source_items = per_source.items(); per_source_items.sort(sg_compare); - msg = ""; + + entries = []; + max_source_len = 0; + max_version_len = 0; + max_arch_len = 0; for i in per_source_items: last_modified = time.time()-i[1]["oldest"]; source = i[1]["list"][0]["source"]; + if len(source) > max_source_len: + max_source_len = len(source); arches = {}; versions = {}; for j in i[1]["list"]: for arch in j["architecture"].keys(): arches[arch] = ""; - versions[j["version"]] = ""; - arch_list = ", ".join(arches.keys()); - version_list = ", ".join(versions.keys()); + version = j["version"]; + versions[version] = ""; + arches_list = arches.keys(); + arches_list.sort(utils.arch_compare_sw); + arch_list = " ".join(arches_list); + version_list = " ".join(versions.keys()); + if len(version_list) > max_version_len: + max_version_len = len(version_list); + if len(arch_list) > max_arch_len: + max_arch_len = len(arch_list); if i[1]["note_state"]: - note = " | [note]"; + note = " | [N]"; else: note = ""; - msg += "%10s | %10s | %10s%s | %s old\n" % (source, version_list, arch_list, note, time_pp(last_modified)); + entries.append([source, version_list, arch_list, note, time_pp(last_modified)]); + + format="%%-%ds | %%-%ds | %%-%ds%%s | %%s old\n" % (max_source_len, max_version_len, max_arch_len) + msg = ""; + for entry in entries: + (source, version_list, arch_list, note, last_modified) = entry; + msg += format % (source, version_list, arch_list, note, last_modified); if msg: total_count = len(changes_files); @@ -170,13 +198,26 @@ def main(): global Cnf, Katie; Cnf = utils.get_conf(); - apt_pkg.ParseCommandLine(Cnf,[],sys.argv); + Arguments = [('h',"help","Helena::Options::Help")]; + for i in [ "help" ]: + if not Cnf.has_key("Helena::Options::%s" % (i)): + Cnf["Helena::Options::%s" % (i)] = ""; + + apt_pkg.ParseCommandLine(Cnf, Arguments, sys.argv); + + Options = Cnf.SubTree("Helena::Options") + if Options["Help"]: + usage(); + Katie = katie.Katie(Cnf); - changes_files = glob.glob("%s/*.changes" % (Cnf["Dir::Queue::Byhand"])); - process_changes_files(changes_files, "byhand"); - changes_files = glob.glob("%s/*.changes" % (Cnf["Dir::Queue::New"])); - process_changes_files(changes_files, "new"); + directories = Cnf.ValueList("Helena::Directories"); + if not directories: + directories = [ "byhand", "new" ]; + + for directory in directories: + changes_files = glob.glob("%s/*.changes" % (Cnf["Dir::Queue::%s" % (directory)])); + process_changes_files(changes_files, directory); ################################################################################