Example #1
0
def main(argv):
    cli = build_cli()
    options = cli.parse_args(argv[1:])
    init_logger(options.verbose)
    if options.change_dir:
        LOGGER.info("changing current working directory to: %r",
                    options.change_dir)
        os.chdir(options.change_dir)
    if options.clean:
        LOGGER.info("removing build directory: %r", options.build_dir)
        if os.path.exists(options.build_dir):
            shutil.rmtree(options.build_dir)
    if options.make_dirs or options.clean:
        LOGGER.info("making build directory: %r", options.build_dir)
        mkdir_p(options.build_dir)
    generator = Generator(options.manifest, options.build_dir)
    generator.maybe_generate(force=(not options.execute or options.force))
    if options.execute:
        _run_ninja(options.build_dir, get_ninja(),
                   get_ninja(), *options.ninja_args)
    return 0
Example #2
0
def _yield_ninja_targets_all(build_dir):
    proc = subprocess.Popen(
        (get_ninja(), "-C", str(build_dir), "-t", "targets", "all"),
        stdin=None,
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE,
        universal_newlines=True)
    for line in proc.stdout.readlines():
        yield line
    proc.wait()
    if proc.returncode != 0:
        raise RuntimeError("cannot list targets from build directory '{}':\n{}"
                           .format(build_dir, proc.stderr.read().rstrip()))