rcutil: don't check if defaultrc/ is a directory -- we know it is
`mercurial/defaultrc/` is a directory both in the Mercurial repo and
once installed on a target platform. The directory was created in
c4ce077588d0 (config: introduce "built-in" default configuration
settings in default.d, 2014-09-04). That commit has some more
information, but it still doesn't seem to say that `defaultrc/` (then
called `default.d/`) could be a file. Perhaps the check was there to
allow you to run the same code on an older install/repo?
Differential Revision: https://phab.mercurial-scm.org/D7624
#!/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'
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['HGAUTOMATION_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 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)