##// END OF EJS Templates
packaging: write out editor.rc in Python...
packaging: write out editor.rc in Python Let's dynamically generate the file from Python instead of relying on Inno functionality, as that will give more visibility into what's going on. I spotted this as part of converging the install layout of Inno and WiX: the former doesn't install an editor.rc and instead defines the editor via its mercurial.rc file. We will change the behavior of WiX later once it is consuming the staged install directory for packaging. Differential Revision: https://phab.mercurial-scm.org/D7171

File last commit:

r43346:2372284d default
r44007:8aa6aa9b default
Show More
__init__.py
57 lines | 1.5 KiB | text/x-python | PythonLexer
Gregory Szorc
automation: perform tasks on remote machines...
r42191 # __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
Augie Fackler
formatting: blacken the codebase...
r43346 from .aws import AWSConnection
Gregory Szorc
automation: perform tasks on remote machines...
r42191
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
Augie Fackler
formatting: blacken the codebase...
r43346 def aws_connection(self, region: str, ensure_ec2_state: bool = True):
Gregory Szorc
automation: perform tasks on remote machines...
r42191 """Obtain an AWSConnection instance bound to a specific region."""
Gregory Szorc
automation: don't create resources when deleting things...
r42463 return AWSConnection(self, region, ensure_ec2_state=ensure_ec2_state)