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