AutoArchive._infrastructure.configuration._cmdline_arguments_processor — AutoArchive Developer Manual (ver. 2.1.0.dev20260309)

# Source code for AutoArchive._infrastructure.configuration._cmdline_arguments_processor

    # _cmdline_arguments_processor.py
    #
    # Project: AutoArchive
    # License: GNU GPLv3
    #
    # Copyright (C) 2003 - 2022 Róbert Čerňanský

    """:class:`_CmdlineArgumentsProcessor` class."""

    __all__ = ["_CmdlineArgumentsProcessor"]

    # {{{ INCLUDES

    from AutoArchive._infrastructure.utils import ErrorHandling
    from . import OptionsUtils

    # }}} INCLUDES

    # {{{ CLASSES

    class _CmdlineArgumentsProcessor:
        """Processes command-line arguments and populates :class:`.IConfiguration` instance.

        :param commandLineOptions: Command-line options and their values.
        :type commandLineOptions: ``collections.abc.Mapping``"""

        def __init__(self, commandLineOptions):
            self.__commandLineOptions = commandLineOptions

        def populateConfiguration(self, configuration):
            """Populates ``configuration`` with options specified on the command line.

            .. note:: Options that are not defined in the :class:`.Options` class are skipped; it is assumed that they are
               commands for command-line UI.

            :param configuration: Configuration that should be populated.
            :type configuration: :class:`._Configuration`"""

            for option in self.__commandLineOptions:
                value = self.__commandLineOptions[option]
                option = option.replace("_", "-")
                try:
                    if OptionsUtils.isExistingOption(option):
                        configuration._addOrReplaceOption(option, str(value))
                except ValueError:
                    ErrorHandling.fatalExit(
                        f"Wrong value \"{value}\" of the option \"{option}\" specified on the command line.")

    # }}} CLASSES