khard.cli
=========

.. py:module:: khard.cli

.. autoapi-nested-parse::

   Command line parsing and configuration logic for khard



Attributes
----------

.. autoapisummary::

   khard.cli.logger


Classes
-------

.. autoapisummary::

   khard.cli.FieldsArgument


Functions
---------

.. autoapisummary::

   khard.cli.create_parsers
   khard.cli.parse_args
   khard.cli.merge_args_into_config
   khard.cli.init
   khard.cli._sphinxarg_helper


Module Contents
---------------

.. py:data:: logger

.. py:class:: FieldsArgument(*choices: str, nested: bool = False)

   A factory to create callable objects for add_argument's type= parameter.

   The object can parse comma separated strings into list of strings, and can
   also check if the single elements are spelled correctly.


   .. py:attribute:: _choices


   .. py:attribute:: _nested
      :value: False



   .. py:method:: __call__(argument: str) -> list[str]


.. py:function:: create_parsers() -> tuple[argparse.ArgumentParser, argparse.ArgumentParser]

   Create two argument parsers.

   The first parser is mainly used to find the config file which can than be
   used to set some default values on the second parser.  The second parser
   can parse the remainder of the command line with the subcommand and all
   further options and arguments.

   :returns: the two parsers for the first and the second parsing pass


.. py:function:: parse_args(argv: list[str]) -> tuple[argparse.Namespace, khard.config.Config]

   Parse the command line arguments and return the namespace that was
   creates by argparse.ArgumentParser.parse_args().

   :param argv: the command line arguments
   :returns: the namespace parsed from the command line


.. py:function:: merge_args_into_config(args: argparse.Namespace, config: khard.config.Config) -> khard.config.Config

   Merge the parsed arguments from argparse into the config object.

   :param args: the parsed command line arguments
   :param config: the parsed config file
   :returns: the merged config object


.. py:function:: init(argv: list[str]) -> tuple[argparse.Namespace, khard.config.Config]

   Initialize khard by parsing the command line and reading the config file

   :param argv: the command line arguments
   :returns: the parsed command line and the fully initialized config


.. py:function:: _sphinxarg_helper()

   Helper function to return the correct argument parser for the docs.


