Source code for betty.cli.error

"""
Command Line Interface error handling.
"""

from __future__ import annotations

import logging
from contextlib import contextmanager
from typing import Iterator, TYPE_CHECKING

import asyncclick as click

from betty.error import UserFacingError
from betty.locale.localizer import DEFAULT_LOCALIZER

if TYPE_CHECKING:
    from betty.locale.localizer import Localizer


[docs] @contextmanager def user_facing_error_to_bad_parameter( localizer: Localizer = DEFAULT_LOCALIZER, ) -> Iterator[None]: """ Convert a :py:class:`betty.error.UserFacingError` exception to a :py:class:`asyncclick.BadParameter` exception. """ try: yield except UserFacingError as error: message = error.localize(localizer) logging.getLogger(__name__).debug(message) raise click.BadParameter(message) from None