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
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()))