Source code for swh.loader.mercurial.utils

# Copyright (C) 2020-2023  The Software Heritage developers
# See the AUTHORS file at the top-level directory of this distribution
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information

from contextlib import contextmanager
import os
from typing import Dict

from swh.loader.core.utils import CloneFailure
from swh.loader.exception import NotFound


[docs] def get_minimum_env() -> Dict[str, str]: """Return the smallest viable environment for `hg` suprocesses""" env = { "HGPLAIN": "", # Tells Mercurial to disable output customization "HGRCPATH": "", # Tells Mercurial to ignore user's config files "HGRCSKIPREPO": "", # Tells Mercurial to ignore repo's config file } path = os.environ.get("PATH") if path: # Sometimes (in tests for example), there is no PATH. An empty PATH could be # interpreted differently than a lack of PATH by some programs. env["PATH"] = path return env
[docs] @contextmanager def raise_not_found_repository(): """Catches all kinds of exceptions which translate to an inexistent repository and reraise as a NotFound exception. Any other exceptions are propagated to the caller. Raises: NotFound: when an inexistent repository is detected *: Any other exceptions raised within the try block """ try: yield except CloneFailure as e: raise NotFound(e)