diff bin/reportstatus.py @ 147:cfeb0251055b

Add reportstatus.py flag --sort-on= to let the user choose the sort field.
author Bernhard Herzog <bh@intevation.de>
date Thu, 05 Jun 2008 11:06:58 +0000
parents 123e9a5f31fa
children 15de52d55432
line wrap: on
line diff
--- a/bin/reportstatus.py	Thu Jun 05 11:05:55 2008 +0000
+++ b/bin/reportstatus.py	Thu Jun 05 11:06:58 2008 +0000
@@ -17,24 +17,35 @@
 from treepkg.report import get_packager_group, prepare_report
 
 def parse_commandline():
-    return create_parser().parse_args()
+    parser = create_parser()
+    parser.set_defaults(sort_on="start-date")
+    parser.add_option("--sort-on",
+                      help=("Field to sort on;"
+                            " either start-date (the default) or revision"))
+    return parser.parse_args()
 
 
-def report_text(group):
+def report_text(group, sort_on):
     report = prepare_report(group)
-    for revno, row in report.revisions.sorted_by_revision():
-        for col in row:
-            if col:
-                print "%s %s: %s" % (col.name, revno, col.status.desc)
-                if col.status.start:
-                    print "    Start:", col.status.start
-                    print "     Stop:", col.status.stop
-                print
+    if sort_on == "revision":
+        sorted = (col for revno, row in report.revisions.sorted_by_revision()
+                      for col in row
+                      if col)
+    elif sort_on == "start-date":
+        sorted = (row for start, row in report.revisions.sorted_by_startdate())
+    else:
+        raise ValueError("Unknown sort field %r" % sort_on)
+
+    for item in sorted:
+        print "%s %s: %s" % (item.name, item.revno, item.status.desc)
+        print "    Start:", item.status.start
+        print "     Stop:", item.status.stop
+        print
 
 def main():
     options, args = parse_commandline()
     group = get_packager_group(options.config_file)
-    report_text(group)
+    report_text(group, options.sort_on)
 
 
 main()
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)