class Cloudbuildviz::Visualizer

Public Class Methods

new(parsed_cloudbuild_steps) click to toggle source
# File lib/cloudbuildviz/visualizer.rb, line 2
def initialize(parsed_cloudbuild_steps)
  @parsed_cloudbuild_steps = parsed_cloudbuild_steps
end

Public Instance Methods

visualize_normal_build(filename) click to toggle source
# File lib/cloudbuildviz/visualizer.rb, line 6
def visualize_normal_build(filename)
  g = GraphViz.new( :G, type: :digraph )
  node_hash = Hash.new(nil)
  origin_node = g.add_nodes('Start')

  # Create all nodes
  @parsed_cloudbuild_steps.each do |s|
    node_hash[s.id] = g.add_nodes(s.id)
  end

  # Draw the edges
  @parsed_cloudbuild_steps.each do |s|
    if s.origin_step?
      g.add_edges(origin_node, node_hash[s.id])
    else
      s.prev_ids.each do |prev_id|
        g.add_edges(node_hash[prev_id], node_hash[s.id])
      end
    end
  end
  
  # Generate output image
  g.output( png: filename )
end