Source code for kuha_common.cli_setup

#!/usr/bin/env python3
# Author(s): Toni Sissala
# Copyright 2019 Finnish Social Science Data Archive FSD / University of Tampere
# Licensed under the EUPL. See LICENSE.txt for full license.
"""Command line setup for Kuha applications

Parse command line for common configuration options
and store loaded settings.
"""
from py12flogging.log_formatter import (
    setup_app_logging,
    set_ctx_populator
)
from kuha_common import server
from kuha_common.document_store import (
    query,
    client
)

from . import conf

#: Constant for configuring :mod:`kuha_common.document_store.client`
MOD_DS_CLIENT = 'document_store.client'
#: Constant for configuring :mod:`kuha_common.document_store.query`
MOD_DS_QUERY = 'document_store.query'
#: Constant for configuring :mod:`kuha_common.server`
MOD_SERVER = 'server'
#: Constant for configuring :mod:`logging`
MOD_LOGGING = 'logging'


[docs]def add_logging_configs(): """Wrapper to add logging-module configuration.""" conf.add_loglevel_arg() conf.add_logformat_arg()
[docs]def setup_logging(settings): """Setup :mod:`py12flogging` module.""" setup_app_logging(conf.get_package(), loglevel=settings.loglevel, logformat=settings.logformat)
configurable_modules = { MOD_DS_CLIENT: (client.add_cli_args, client.configure), MOD_DS_QUERY: (query.add_cli_args, query.configure), MOD_SERVER: (server.add_cli_args, server.configure), MOD_LOGGING: (add_logging_configs, setup_logging) }
[docs]def setup_common_modules(*modules): r"""Setup command line parser. Load modules, parse command line arguments, return loaded settings in :obj:`argparse.Namespace` :param \*modules: common Kuha modules to load and include in parsing of command line arguments. :type \*modules: str :returns: Loaded settings. :rtype: :obj:`argparse.Namespace` """ setup_funcs = [] for mod in modules: # Add configs to kuha_common_modules _add_args_func, setup_func = configurable_modules[mod] setup_funcs.append(setup_func) _add_args_func() settings = conf.get_conf() if all(x in modules for x in [MOD_SERVER, MOD_LOGGING]): # If configuring both SERVER and LOGGING, register serverlog_ctx_populator. set_ctx_populator(server.serverlog_ctx_populator) for setup_func in setup_funcs: # Load cli args for kuha_common modules setup_func(settings) return settings