class Sprawl::GraphvizDrawer
Public Class Methods
add_async_connections(graph, nodes, service, all_services)
click to toggle source
# File lib/sprawl/drawers/graphviz_drawer.rb, line 38 def self.add_async_connections(graph, nodes, service, all_services) return if service.message_types_produced.nil? service.message_types_produced.each do |t| defs_consuming = all_services.reject do |consuming_def| consuming_def.message_types_consumed.nil? || !consuming_def.message_types_consumed.include?(t) end defs_consuming.each do |c| graph.add_edges(nodes[service.name], nodes[c.name], style: 'dashed') end end end
add_rest_connections(graph, nodes, service)
click to toggle source
# File lib/sprawl/drawers/graphviz_drawer.rb, line 30 def self.add_rest_connections(graph, nodes, service) return if service.rest_dependencies.nil? service.rest_dependencies.each do |r| graph.add_edges(nodes[service.name], nodes[r]) end end
draw(defs, output)
click to toggle source
# File lib/sprawl/drawers/graphviz_drawer.rb, line 5 def self.draw(defs, output) graph = ::GraphViz.new(:G, type: :digraph) nodes = generate_nodes(graph, defs) # Generate the edges defs.each do |d| add_rest_connections(graph, nodes, d) add_async_connections(graph, nodes, d, defs) end graph.output(svg: 'graph.svg') if output.casecmp('SVG').zero? graph.output(png: 'graph.png') if output.casecmp('PNG').zero? end
generate_nodes(graph, defs)
click to toggle source
# File lib/sprawl/drawers/graphviz_drawer.rb, line 20 def self.generate_nodes(graph, defs) nodes = {} defs.each do |d| nodes[d.name] = graph.add_nodes(d.name) end nodes end