Source code for ewoks.cli_utils.cli_convert_utils
from argparse import Namespace
from typing import List
from ewoksutils.cli_utils import cli_arguments
from ewoksutils.cli_utils import cli_log_utils
from ewoksutils.cli_utils import cli_parse
from ewoksutils.cli_utils.cli_spec import CLIArg
from .._engines import get_graph_representations
from .cli_parse import parse_destinations
[docs]
def convert_arguments(
shell: bool = False, default_log_level: str = "warning"
) -> List[CLIArg]:
if shell:
args_list = cli_log_utils.log_arguments(default_log_level=default_log_level)
else:
args_list = []
args_list += cli_arguments.workflow_arguments("convert")
args_list += cli_arguments.ewoks_inputs_arguments()
args_list += [
CLIArg(
"destination",
[],
type=str,
help="Destination of the conversion (e.g., JSON filename).",
),
CLIArg(
"source_representation",
["--src-format"],
type=str.lower,
choices=get_graph_representations(),
help="Source format.",
),
CLIArg(
"destination_representation",
["--dst-format"],
type=str.lower,
choices=get_graph_representations(),
help="Destination format.",
),
CLIArg(
"load_options",
["-o", "--load-option"],
action="append",
metavar="OPTION=VALUE",
help="Load options.",
),
CLIArg(
"save_options",
["-s", "--save-option"],
action="append",
metavar="OPTION=VALUE",
help="Save options.",
),
CLIArg(
"exclude_requirements",
["--exclude-requirements"],
action="store_true",
help="Do not include the packages of the current Python environment as requirements in the destination workflow.",
),
]
return args_list
[docs]
def parse_convert_arguments(cli_args: Namespace, shell: bool = False) -> None:
if shell:
cli_log_utils.parse_log_arguments(cli_args)
cli_args.workflows, cli_args.graphs = cli_parse.parse_workflows(cli_args)
cli_args.destinations = parse_destinations(cli_args)
load_options = dict(cli_parse.parse_option(item) for item in cli_args.load_options)
if cli_args.source_representation:
load_options["representation"] = cli_args.source_representation
if cli_args.test:
load_options["representation"] = "test_core"
if cli_args.root_module:
load_options["root_module"] = cli_args.root_module
if cli_args.root_dir:
load_options["root_dir"] = cli_args.root_dir
save_options = dict(cli_parse.parse_option(item) for item in cli_args.save_options)
if cli_args.destination_representation:
save_options["representation"] = cli_args.destination_representation
convert_options = {
"save_options": save_options,
"load_options": load_options,
"inputs": cli_parse.parse_ewoks_inputs_parameters(cli_args),
}
if cli_args.exclude_requirements:
convert_options["save_requirements"] = False
cli_args.convert_options = convert_options