Mercurial > hg
view contrib/packaging/packaging.py @ 45066:5a80915e99ce
commitctx: document the manifest writing function
Same spirit as for `_filecommit` lets document the input and output before
making any change or improvement.
This is part of a larger refactoring/cleanup of the commitctx code to clarify
and augment the logic gathering metadata useful for copy tracing. The current
code is a tad too long and entangled to make such update easy. We start with
easy and small cleanup.
Differential Revision: https://phab.mercurial-scm.org/D8705
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 06 Jul 2020 21:08:15 +0200 |
parents | 303bf312d5ed |
children |
line wrap: on
line source
#!/usr/bin/env python3 # # packaging.py - Mercurial packaging functionality # # Copyright 2019 Gregory Szorc <gregory.szorc@gmail.com> # # This software may be used and distributed according to the terms of the # GNU General Public License version 2 or any later version. import os import pathlib import subprocess import sys import venv HERE = pathlib.Path(os.path.abspath(__file__)).parent REQUIREMENTS_TXT = HERE / "requirements.txt" SOURCE_DIR = HERE.parent.parent VENV = SOURCE_DIR / "build" / "venv-packaging" def bootstrap(): venv_created = not VENV.exists() VENV.parent.mkdir(exist_ok=True) venv.create(VENV, with_pip=True) if os.name == "nt": venv_bin = VENV / "Scripts" pip = venv_bin / "pip.exe" python = venv_bin / "python.exe" else: venv_bin = VENV / "bin" pip = venv_bin / "pip" python = venv_bin / "python" args = [ str(pip), "install", "-r", str(REQUIREMENTS_TXT), "--disable-pip-version-check", ] if not venv_created: args.append("-q") subprocess.run(args, check=True) os.environ["HGPACKAGING_BOOTSTRAPPED"] = "1" os.environ["PATH"] = "%s%s%s" % (venv_bin, os.pathsep, os.environ["PATH"]) subprocess.run([str(python), __file__] + sys.argv[1:], check=True) def run(): import hgpackaging.cli as cli # Need to strip off main Python executable. cli.main() if __name__ == "__main__": try: if "HGPACKAGING_BOOTSTRAPPED" not in os.environ: bootstrap() else: run() except subprocess.CalledProcessError as e: sys.exit(e.returncode) except KeyboardInterrupt: sys.exit(1)