Source code for gxformat2.mermaid._cli
"""Command-line interface for Mermaid workflow diagram generation."""
import sys
from ._builder import workflow_to_mermaid
SCRIPT_DESCRIPTION = """
Convert a Galaxy workflow (Format 2 or native .ga) into a Mermaid flowchart
diagram.
Outputs Mermaid markdown to stdout by default, or to a file if an output
path is provided. If the output path ends with .md, the diagram is wrapped
in a fenced code block.
"""
[docs]
def to_mermaid(workflow_path: str, output_path=None, *, comments: bool = False):
"""Produce mermaid output for the supplied workflow path."""
diagram = workflow_to_mermaid(workflow_path, comments=comments)
if output_path is None:
print(diagram)
return
if output_path.endswith(".md"):
content = f"```mermaid\n{diagram}\n```\n"
else:
content = diagram + "\n"
with open(output_path, "w") as f:
f.write(content)
[docs]
def main(argv=None):
"""Entry point for generating Mermaid diagrams of Galaxy workflows."""
if argv is None:
argv = sys.argv[1:]
args = _parser().parse_args(argv)
to_mermaid(args.input_path, args.output_path, comments=args.comments)
def _parser():
import argparse
parser = argparse.ArgumentParser(description=SCRIPT_DESCRIPTION)
parser.add_argument("input_path", metavar="INPUT", type=str, help="input workflow path (.ga/gxwf.yml)")
parser.add_argument("output_path", metavar="OUTPUT", type=str, nargs="?", help="output path (.mmd/.md)")
parser.add_argument("--comments", action="store_true", default=False, help="render frame comments as subgraphs")
return parser