def graph()

in servicecatalog_puppet/commands/graph.py [0:0]


def graph(f):
    current_account_id = puppet_account_id = config.get_puppet_account_id()
    tasks_to_run = generate_tasks(f, puppet_account_id, current_account_id)
    lines = []
    nodes = []
    for task in tasks_to_run:
        nodes += graph_nodes(task)

        what = task.requires()
        if isinstance(what, puppet_tasks.PuppetTask):
            lines.append(f'"{task.node_id}" -> "{what.node_id}"')
        elif isinstance(what, list):
            for item in what:
                lines += graph_lines(task, item)
        elif isinstance(what, dict):
            for item in what.values():
                lines += graph_lines(task, item)
        else:
            raise Exception(f"unknown {type(what)}")

        # nodes.append(task.graph_node())
        # lines += task.get_graph_lines()
    click.echo("digraph G {\n")
    click.echo("node [shape=record fontname=Arial];")
    for node in nodes:
        click.echo(f"{node};")
    for line in lines:
        click.echo(f'{line} [label="depends on"];')
    click.echo("}")