testing/vcttesting/vctutil.py (46 lines of code) (raw):

# This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. from __future__ import absolute_import, unicode_literals import os import subprocess import sys import yaml HERE = os.path.abspath(os.path.dirname(__file__)) ROOT = os.path.normpath(os.path.join(HERE, "..", "..")) def decrypt_sops_files(): """Decrypt all files with encrypted keys in the repo. All files found in the list under the "files" key of the `.sops.yaml` file will have all secrets with an "_encrypted" suffix decrypted. """ with open(os.path.join(ROOT, ".sops.yaml")) as f: files = yaml.safe_load(f).get("files") if not files: return for path in files: subprocess.check_call( [ "sops", "--in-place", "--decrypt", path, ], cwd=ROOT, ) def hg_executable(): if "VIRTUAL_ENV" in os.environ: venv = os.environ["VIRTUAL_ENV"] # Virtualenv activated by Python itself, not from shell. elif hasattr(sys, "real_prefix"): venv = sys.prefix else: venv = os.path.join(ROOT, "venv") if os.name == "nt": return os.path.join(venv, "Scripts", "hg.exe") else: return os.path.join(venv, "bin", "hg") def get_and_write_vct_node(): if not os.path.exists(os.path.join(ROOT, ".hg")): raise Exception( "version-control-tools directory must be a Mercurial checkout" ) env = dict(os.environ) env["HGRCPATH"] = "/dev/null" args = [hg_executable(), "-R", ROOT, "log", "-r", ".", "-T", "{node|short}"] with open(os.devnull, "wb") as null: node = subprocess.check_output(args, env=env, cwd="/", stderr=null) with open(os.path.join(ROOT, ".vctnode"), "wb") as fh: fh.write(node) return node