Mercurial > hg
view contrib/automation/hgautomation/__init__.py @ 46513:c3c7a86e9c24
tests: fix differing output between py2 and py3
db9e33beb0fb broke the tests because of the difference in bytestring repr
between py2 and py3. Rather than backout that change for so little, I figured
I'd fix it myself.
Hopefully Python 2 supports gets dropped very soon.
Differential Revision: https://phab.mercurial-scm.org/D9987
author | Raphaël Gomès <rgomes@octobus.net> |
---|---|
date | Fri, 12 Feb 2021 12:51:28 +0100 |
parents | 2372284d9457 |
children |
line wrap: on
line source
# __init__.py - High-level automation interfaces # # 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. # no-check-code because Python 3 native. import pathlib import secrets from .aws import AWSConnection class HGAutomation: """High-level interface for Mercurial automation. Holds global state, provides access to other primitives, etc. """ def __init__(self, state_path: pathlib.Path): self.state_path = state_path state_path.mkdir(exist_ok=True) def default_password(self): """Obtain the default password to use for remote machines. A new password will be generated if one is not stored. """ p = self.state_path / 'default-password' try: with p.open('r', encoding='ascii') as fh: data = fh.read().strip() if data: return data except FileNotFoundError: pass password = secrets.token_urlsafe(24) with p.open('w', encoding='ascii') as fh: fh.write(password) fh.write('\n') p.chmod(0o0600) return password def aws_connection(self, region: str, ensure_ec2_state: bool = True): """Obtain an AWSConnection instance bound to a specific region.""" return AWSConnection(self, region, ensure_ec2_state=ensure_ec2_state)