Source code for enhomie.execution.backup

"""
Functions and routines associated with Enasis Network Homie Automate.

This file is part of Enasis Network software eco-system. Distribution
is permitted, for more information consult the project license file.
"""



from argparse import ArgumentParser
from json import dumps
from sys import argv as sys_argv
from typing import Optional

from encommon.types import DictStrAny

from ..homie import Homie
from ..homie import HomieConfig



[docs] def arguments( args: Optional[list[str]] = None, ) -> DictStrAny: """ Construct arguments which are associated with the file. :param args: Override the source for the main arguments. :returns: Construct arguments from command line options. """ parser = ArgumentParser() args = args or sys_argv[1:] parser.add_argument( '--config', required=True, help=( 'complete or relative ' 'path to config file')) parser.add_argument( '--console', action='store_true', default=False, help=( 'write log messages ' 'to standard output')) parser.add_argument( '--debug', action='store_true', default=False, help=( 'increase logging level ' 'for standard output')) return vars( parser .parse_args(args))
[docs] def operation( # NOCVR homie: Homie, ) -> None: """ Perform whatever operation is associated with the file. :param homie: Primary class instance for Homie Automate. """ assert homie.refresh() childs = homie.childs origins = ( childs.origins .values()) content: DictStrAny = {} for origin in origins: name = origin.name assert hasattr( origin, 'merge') content[name] = ( origin.merge) dumped = dumps( content, indent=2) print(dumped) # noqa: T201
[docs] def execution( # NOCVR args: Optional[list[str]] = None, ) -> None: """ Perform whatever operation is associated with the file. :param args: Override the source for the main arguments. """ config = HomieConfig( arguments(args)) config.logger.start() config.logger.log_i( base='execution/backup', status='started') homie = Homie(config) operation(homie) config.logger.log_i( base='execution/backup', status='stopped') config.logger.stop()
if __name__ == '__main__': execution() # NOCVR