From 3d961b9a1f129b1d1be98b4e50d6dafd7888097a Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 27 Dec 2022 15:25:53 +0100 Subject: spack graph: rework to use Jinja templates and builders (#34637) `spack graph` has been reworked to use: - Jinja templates - builder objects to construct the template context when DOT graphs are requested. This allowed to add a new colored output for DOT graphs that highlights both the dependency types and the nodes that are needed at runtime for a given spec. --- share/spack/spack-completion.bash | 2 +- share/spack/templates/misc/graph.dot | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 share/spack/templates/misc/graph.dot (limited to 'share') diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index 028ec16bee..83fb689028 100755 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -1140,7 +1140,7 @@ _spack_gpg_publish() { _spack_graph() { if $list_options then - SPACK_COMPREPLY="-h --help -a --ascii -d --dot -s --static -i --installed --deptype" + SPACK_COMPREPLY="-h --help -a --ascii -d --dot -s --static -c --color -i --installed --deptype" else _all_packages fi diff --git a/share/spack/templates/misc/graph.dot b/share/spack/templates/misc/graph.dot new file mode 100644 index 0000000000..488aa6be1b --- /dev/null +++ b/share/spack/templates/misc/graph.dot @@ -0,0 +1,33 @@ +digraph G { + labelloc = "b" + rankdir = "TB" + ranksep = "1" + edge[ + penwidth=2 + ] + node[ + fontname=Monaco, + penwidth=4, + fontsize=24, + margin=.4, + shape=box, + fillcolor=lightblue, + style="rounded,filled" + ] + +{% for node, node_options in nodes %} +{% if node_options %} + "{{ node }}" {{ node_options }} +{% else %} + "{{ node }}" +{% endif %} +{% endfor %} +{% for edge_parent, edge_child, edge_options in edges %} +{% if edge_options %} + "{{ edge_parent }}" -> "{{ edge_child }}" {{ edge_options }} +{% else %} + "{{ edge_parent }}" -> "{{ edge_child }}" +{% endif %} +{% endfor %} + +} \ No newline at end of file -- cgit v1.2.3-60-g2f50