def _level_to_string(self, level): if Logger.DEBUG == level: return italic("[DEBUG]") if Logger.INFO == level: return bold("[INFO] ") if Logger.WARN == level: return styled_text("[WARN] ", BOLD, fg(BROWN)) return styled_text("[ERROR]", BOLD, fg(RED))
def main(*args): try: options, arguments = parse_options(args) except CommandLineUsageException as e: sys.stderr.write("Usage error: %s\n" % e) sys.stderr.write(e.usage) return 1 start = datetime.datetime.now() logger = init_logger(options) reactor = init_reactor(logger) if options.list_tasks: reactor.prepare_build(property_overrides=options.property_overrides, project_directory=options.project_directory) sys.stdout.write("Tasks found in %s building in %s:\n\n" % (reactor.project.name, reactor.project.basedir)) for task in sorted(reactor.get_tasks()): sys.stdout.write("%20s\t%s\n" % (task.name, " ".join(task.description) or "<no description available>")) if task.dependencies: sys.stdout.write("\t\t\tdepends on tasks: %s\n" % " ".join(task.dependencies)) sys.stdout.write("\n") return 0 banner = "PYTHON BUILDER Version %s\n" % VERSION if should_colorize(options): banner = bold(banner) if not options.very_quiet: sys.stdout.write(banner) sys.stdout.write("Build started at %s\n" % format_timestamp(start)) sys.stdout.write(("-" * 60) + "\n\n") successful = True failure_message = None summary = None try: try: reactor.prepare_build(property_overrides=options.property_overrides, project_directory=options.project_directory) if options.list_tasks: for task in sorted(reactor.get_tasks()): sys.stdout.write("%20s\t%s\n" % (task.name, task.description or "<no description available>")) if task.dependencies: sys.stdout.write("\t\t\tdepends on tasks: %s\n" % " ".join(task.dependencies)) sys.stdout.write("\n") else: summary = reactor.build(environments=options.environments, tasks=arguments) except KeyboardInterrupt: raise PythonbuilderException("Build aborted") except Exception as e: failure_message = str(e) if options.debug: traceback.print_exc(file=sys.stderr) successful = False finally: end = datetime.datetime.now() if not options.very_quiet: print_summary(successful, summary, start, end, options, failure_message) return 0 if successful else 1