From d152f239c156c0c713861c707f482a2b10ecff14 Mon Sep 17 00:00:00 2001 From: Michael Franklin Date: Wed, 1 Sep 2021 22:26:44 +1000 Subject: [PATCH] Add fromwdl to janisdk --- janisdk/fromwdl/__init__.py | 37 +++++++++++++++++++++++++++++++++++++ janisdk/main.py | 4 +++- setup.py | 2 +- 3 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 janisdk/fromwdl/__init__.py diff --git a/janisdk/fromwdl/__init__.py b/janisdk/fromwdl/__init__.py new file mode 100644 index 00000000..998d9405 --- /dev/null +++ b/janisdk/fromwdl/__init__.py @@ -0,0 +1,37 @@ +def add_fromwdl_args(parser): + parser.description = ( + "Parse a WDL command line tool / workflow and write it as a Janis file" + ) + + parser.add_argument( + "-o", + "--output", + help="Directory to output the workflow / tools to, otherwise this is written to stdout", + ) + + parser.add_argument("wdlfile", help="The path to the WDL file") + + parser.add_argument( + "translation", default="janis", choices=["wdl", "wdl", "janis"], nargs="?" + ) + + return parser + + +def do_fromwdl(args): + from janis_core import WdlParser, Logger + + + Logger.info(f"Loading WDL file: {args.wdlfile}") + tool = WdlParser.from_doc(args.wdlfile) + + Logger.info(f"Loaded {tool.type()}: {tool.versioned_id()}") + + translated = tool.translate( + args.translation, + to_console=args.output is None, + to_disk=args.output is not None, + export_path=args.output, + ) + + return translated diff --git a/janisdk/main.py b/janisdk/main.py index 69179744..51837eaa 100644 --- a/janisdk/main.py +++ b/janisdk/main.py @@ -4,13 +4,14 @@ from janisdk.container import do_container, add_container_args from janisdk.fromcwl import do_fromcwl, add_fromcwl_args +from janisdk.fromwdl import do_fromwdl, add_fromwdl_args from janisdk.runtest import runner as test_runner from janis_assistant.management.configuration import JanisConfiguration def process_args(): - cmds = {"container": do_container, "run-test": do_runtest, "fromcwl": do_fromcwl} + cmds = {"container": do_container, "run-test": do_runtest, "fromcwl": do_fromcwl, "fromwdl": do_fromwdl} parser = argparse.ArgumentParser(description="Execute a workflow") subparsers = parser.add_subparsers(help="subcommand help", dest="command") @@ -20,6 +21,7 @@ def process_args(): add_container_args(subparsers.add_parser("container")) test_runner.add_runtest_args(subparsers.add_parser("run-test")) add_fromcwl_args(subparsers.add_parser("fromcwl")) + add_fromwdl_args(subparsers.add_parser("fromwdl")) args = parser.parse_args() return cmds[args.command](args) diff --git a/setup.py b/setup.py index 60825a8a..4c6cb9f8 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ # Version information is found in the __init__ file of `janis/` DESCRIPTION = "Contains classes and helpers to build a workflow, and provide options to convert to CWL / WDL" -JANIS_CORE_VERSION = "v0.11.4" +JANIS_CORE_VERSION = "v0.11.5" JANIS_ASSISTANT_VERSION = "v0.11.7" JANIS_UNIX_VERSION = "v0.11.0" JANIS_BIOINFORMATICS_VERSION = "v0.11.1"