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