module Fig::Command::Action::Role::ListAsGraphviz
Requires a node_content(package, config_name) method.
Public Instance Methods
execute()
click to toggle source
# File lib/fig/command/action/role/list_as_graphviz.rb, line 12 def execute() @subgraphs = {} puts 'digraph {' puts ' node [shape = box];' walk_dependency_tree( @execution_context.base_package, base_display_config_names(), include_emit, &package_gather ) emit_subgraphs puts '}' return Fig::Command::Action::EXIT_SUCCESS end
Private Instance Methods
emit_subgraphs()
click to toggle source
# File lib/fig/command/action/role/list_as_graphviz.rb, line 66 def emit_subgraphs() @subgraphs.each do |package_name, nodes| cluster = nodes.size > 1 ? 'cluster ' : '' puts %Q< subgraph "#{cluster}#{package_name}" {> nodes.each { |node| puts %Q< #{node}> } puts %q< }> end return end
include_emit()
click to toggle source
# File lib/fig/command/action/role/list_as_graphviz.rb, line 31 def include_emit visited = Set.new return lambda do |including_package, including_config, included_package, included_config| including_name = node_name(including_package, including_config) included_name = node_name(included_package, included_config) edge = %Q/ "#{including_name}" -> "#{included_name}";/ if ! visited.include? edge visited << edge puts edge end end end
node_name(package, config_name)
click to toggle source
# File lib/fig/command/action/role/list_as_graphviz.rb, line 79 def node_name(package, config_name) return package.to_s_with_config(config_name) end
package_gather()
click to toggle source
# File lib/fig/command/action/role/list_as_graphviz.rb, line 48 def package_gather visited = Set.new return lambda do |package, config_name, depth| name = node_name package, config_name if ! visited.include? name visited << name package_name = node_name package, nil @subgraphs[package_name] ||= [] @subgraphs[package_name] << node_content(package, config_name) end end end