import math from wizard import command, deploy, util def main(argv, baton): options, show = parse_args(argv, baton) HISTOGRAM_WIDTH = 30 show = set() c_version = util.Counter() c_application = util.Counter() for d in deploy.parse_install_lines(show, options.versions_path): version = d.app_version c_version.count(version) c_application.count(version.application) show.add(version.application) if not show: print "No applications found" for application in show: print "%-20s %3d installs" % (application.name, c_application[application]) vmax = max(c_version[x] for x in application.versions.values()) for version in sorted(application.versions.values()): v = c_version[version] graph = '+' * int(math.ceil(float(v)/vmax * HISTOGRAM_WIDTH)) print " %-16s %3d %s" % (version.version, v, graph) print def parse_args(argv, baton): usage = """usage: %prog summary version [ARGS] [APP] Prints graphs of version usage in autoinstallers Examples: %prog summary list Show graphs for all autoinstall versions %prog summary list mediawiki Show graph for MediaWiki autoinstall versions""" parser = command.WizardOptionParser(usage) baton.push(parser, "versions_path") options, args = parser.parse_all(argv) if len(args) > 1: parser.error("too many arguments") return options, args