diff --git a/src/bin/expedite-cmp b/src/bin/expedite-cmp index 3b1e1b9..8acdf5f 100755 --- a/src/bin/expedite-cmp +++ b/src/bin/expedite-cmp @@ -6,6 +6,10 @@ import os.path import csv from optparse import OptionParser +fmttext = '%(value)7.2f (%(percentual)+6.1f%%)' +fmthtml = '%(value)7.2f (%(percentual)+0.1f%%)' + + parser = OptionParser(usage="%prog [options] .. ", description="""\ Generate reports comparing two or more outputs of expedite. @@ -23,10 +27,12 @@ parser.add_option("-r", "--report", "[default=%default]"), action="store", type="choice", default="text", choices=["text", "html"]) -parser.add_option("-p", "--percentual", - help=("show percentual instead of raw numbers for " - "non-reference values."), - action="store_true", default=False) +parser.add_option("-F", "--format", + help=("format to use as python format string, " + "valid keys are: value and percentual. " + "[defaults: html=\"%s\", text=\"%s\"]" % + (fmthtml, fmttext)), + action="store", type="str", default=None) parser.add_option("-C", "--no-color", dest="color", help="do not use color in reports.", action="store_false", default=True) @@ -35,6 +41,11 @@ options, files = parser.parse_args() if len(files) < 2: raise SystemExit("need at least 2 files to compare") +if options.format is None: + if options.report == "html": + options.format = fmthtml + else: + options.format = fmttext ref_f = files[0] others_f = files[1:] @@ -54,10 +65,14 @@ for f in files: def report_text(): test_name_fmt = "%%%ds:" % max_test_name + fmtsize = len(options.format % {"value": 12345.67, "percentual": 1234.56}) + hdrfmt = "%%%d.%ds" % (fmtsize, fmtsize) + print test_name_fmt % "\\", - for f in files: + print "%7.7s" % (files[0][-7:],), + for f in files[1:]: n, e = os.path.splitext(f) - print "%7.7s" % n[-7:], + print hdrfmt % n[-fmtsize:], print if options.color and os.environ.get("TERM", "") == "xterm": @@ -91,10 +106,10 @@ def report_text(): else: c = color_equal - if options.percentual: - print "%s%+6.1f%%%s" % (c, (percent * 100), color_reset), - else: - print "%s%7.2f%s" % (c, val, color_reset), + fmt = options.format % {"value": val, "percentual": percent * 100} + if len(fmt) < fmtsize: + fmt = hdrfmt % fmt + print "%s%s%s" % (c, fmt, color_reset), print @@ -116,11 +131,27 @@ def report_html(): expedite comparison sheet: %(files)s