# pylint: disable=resource-leakage,broad-except,3rd-party-module-not-gated from __future__ import annotations import os import pathlib from ptscripts import Context from rich.progress import BarColumn from rich.progress import Column from rich.progress import DownloadColumn from rich.progress import Progress from rich.progress import TextColumn from rich.progress import TimeRemainingColumn from rich.progress import TransferSpeedColumn REPO_ROOT = pathlib.Path(__file__).resolve().parent.parent GPG_KEY_FILENAME = "SALT-PROJECT-GPG-PUBKEY-2023" SPB_ENVIRONMENT = os.environ.get("SPB_ENVIRONMENT") or "prod" RELEASE_BUCKET_NAME = f"salt-project-{SPB_ENVIRONMENT}-salt-artifacts-release" class UpdateProgress: def __init__(self, progress, task): self.progress = progress self.task = task def __call__(self, chunk_size): self.progress.update(self.task, advance=chunk_size) def create_progress_bar(file_progress: bool = False, **kwargs): if file_progress: return Progress( TextColumn("[progress.description]{task.description}"), BarColumn(), DownloadColumn(), TransferSpeedColumn(), TextColumn("eta"), TimeRemainingColumn(), **kwargs, ) return Progress( TextColumn( "[progress.description]{task.description}", table_column=Column(ratio=3) ), BarColumn(), expand=True, **kwargs, ) def export_gpg_key(ctx: Context, key_id: str, export_path: pathlib.Path): keyfile_gpg = export_path.joinpath(GPG_KEY_FILENAME).with_suffix(".gpg") if keyfile_gpg.exists(): keyfile_gpg.unlink() ctx.info(f"Exporting GnuPG Key '{key_id}' to {keyfile_gpg} ...") ctx.run("gpg", "--output", str(keyfile_gpg), "--export", key_id) keyfile_pub = export_path.joinpath(GPG_KEY_FILENAME).with_suffix(".pub") if keyfile_pub.exists(): keyfile_pub.unlink() ctx.info(f"Exporting GnuPG Key '{key_id}' to {keyfile_pub} ...") ctx.run("gpg", "--armor", "--output", str(keyfile_pub), "--export", key_id) def gpg_sign(ctx: Context, key_id: str, path: pathlib.Path): ctx.info(f"GPG Signing '{path}' ...") signature_fpath = path.parent / f"{path.name}.asc" if signature_fpath.exists(): signature_fpath.unlink() ctx.run( "gpg", "--local-user", key_id, "--output", str(signature_fpath), "--armor", "--detach-sign", "--sign", str(path), )