##// END OF EJS Templates
dirstate-tracked-key: update the config value to match latest discussion...
dirstate-tracked-key: update the config value to match latest discussion Special cases are not special enough, we align the option name on the other. The `version` value is undocumented for now as it can only have a single value. It is supported in the code to properly detect and abort if more value are introduced in the future value. Differential Revision: https://phab.mercurial-scm.org/D12184

File last commit:

r43346:2372284d default
r49623:79a96712 default
Show More
automation.py
74 lines | 1.7 KiB | text/x-python | PythonLexer
Gregory Szorc
automation: perform tasks on remote machines...
r42191 #!/usr/bin/env python3
#
# automation.py - Perform tasks on remote machines
#
# 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-automation'
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'
Augie Fackler
formatting: blacken the codebase...
r43346 args = [
str(pip),
'install',
'-r',
str(REQUIREMENTS_TXT),
'--disable-pip-version-check',
]
Gregory Szorc
automation: perform tasks on remote machines...
r42191
if not venv_created:
args.append('-q')
subprocess.run(args, check=True)
os.environ['HGAUTOMATION_BOOTSTRAPPED'] = '1'
Augie Fackler
formatting: blacken the codebase...
r43346 os.environ['PATH'] = '%s%s%s' % (venv_bin, os.pathsep, os.environ['PATH'])
Gregory Szorc
automation: perform tasks on remote machines...
r42191
subprocess.run([str(python), __file__] + sys.argv[1:], check=True)
def run():
import hgautomation.cli as cli
# Need to strip off main Python executable.
cli.main()
if __name__ == '__main__':
try:
if 'HGAUTOMATION_BOOTSTRAPPED' not in os.environ:
bootstrap()
else:
run()
except subprocess.CalledProcessError as e:
sys.exit(e.returncode)
except KeyboardInterrupt:
sys.exit(1)