Mercurial > lcfOS
view python/zcc.py @ 377:9667d78ba79e
Switched to xml for project description
author | Windel Bouwman |
---|---|
date | Fri, 11 Apr 2014 15:47:50 +0200 |
parents | 39bf68bf1891 |
children | 6df89163e114 |
line wrap: on
line source
#!/usr/bin/env python import sys import os import argparse import logging from ppci.tasks import TaskRunner import ppci.buildtasks from ppci.report import RstFormatter from ppci.objectfile import ObjectFile from ppci.target.target_list import targets, targetnames from ppci.recipe import RecipeLoader import ppci def logLevel(s): """ Converts a string to a valid logging level """ numeric_level = getattr(logging, s.upper(), None) if not isinstance(numeric_level, int): raise ValueError('Invalid log level: {}'.format(s)) return numeric_level def make_parser(): parser = argparse.ArgumentParser(description='lcfos Compiler') parser.add_argument('--log', help='Log level (INFO,DEBUG,[WARN])', type=logLevel, default='INFO') parser.add_argument('--report', help='Specify a file to write the compile report to', type=argparse.FileType('w')) parser.add_argument('--buildfile', help='use buildfile, otherwise build.xml is the default', default='build.xml') parser.add_argument('targets', metavar='target', nargs='*') return parser def main(args): # Configure some logging: logging.getLogger().setLevel(logging.DEBUG) ch = logging.StreamHandler() ch.setFormatter(logging.Formatter(ppci.logformat)) ch.setLevel(args.log) logging.getLogger().addHandler(ch) if args.report: fh = logging.StreamHandler(args.report) fh.setFormatter(RstFormatter()) logging.getLogger().addHandler(fh) recipe_loader = RecipeLoader() try: project = recipe_loader.load_file(args.buildfile) except OSError as e: res = 1 runner = TaskRunner() res = runner.run(project, args.targets) if args.report: logging.getLogger().removeHandler(fh) args.report.close() logging.getLogger().removeHandler(ch) return res if __name__ == '__main__': parser = make_parser() arguments = parser.parse_args() sys.exit(main(arguments))