from __future__ import annotations import os import shutil import subprocess from . import destdir_join import argparse import typing as T parser = argparse.ArgumentParser() parser.add_argument('--install') parser.add_argument('--extra-extension-path', action="append", default=[]) parser.add_argument('--name') parser.add_argument('--builddir') parser.add_argument('--project-version') parser.add_argument('--docdir') def run(argv: T.List[str]) -> int: options, args = parser.parse_known_args(argv) subenv = os.environ.copy() val = subenv.get('PYTHONPATH') paths = [val] if val else [] subenv['PYTHONPATH'] = os.pathsep.join(paths + options.extra_extension_path) res = subprocess.call(args, cwd=options.builddir, env=subenv) if res != 0: return res if options.install: source_dir = os.path.join(options.builddir, options.install) destdir = os.environ.get('DESTDIR', '') installdir = destdir_join(destdir, options.docdir) shutil.rmtree(installdir, ignore_errors=True) shutil.copytree(source_dir, installdir) return 0