Sha256: e495cbe45110fdff39ebba32afc2d176280e80d1a385c798cc9aad5e85b7d4d4

Contents?: true

Size: 1.48 KB

Versions: 7

Compression:

Stored size: 1.48 KB

Contents

class Lono::Inspector::Summary < Lono::Inspector::Base
  def perform
    puts "=> CloudFormation Template Summary:".colorize(:green)
    return if @options[:noop]

    puts "Parameters:"
    print_parameters_summary

    puts "Resources:"
    print_resource_types
  end

  def print_parameters_summary
    if parameters.empty?
      puts "  There are no parameters"
    else
      print_parameters("Required", required_parameters)
      print_parameters("Optional", optional_parameters)
    end
  end

  def print_parameters(label, parameters)
    puts "#{label}:"
    if parameters.empty?
      puts "  There are no #{label.downcase} parameters"
    else
      parameters.each do |logical_id, p|
        output = "  #{logical_id} (#{p["Type"]})"
        if p["Default"]
          output << " Default: #{p["Default"]}"
        end
        puts output
      end
    end
  end

  def required_parameters
    parameters.reject { |logical_id, p| p["Default"] }
  end

  def optional_parameters
    parameters.select { |logical_id, p| p["Default"] }
  end

  def parameters
    data["Parameters"] || []
  end

  def resource_types
    types = Hash.new(0)
    data["Resources"].each do |logical_id, resource|
      types[resource["Type"]] += 1
    end
    types
  end

  def print_resource_types
    types = resource_types.sort_by {|r| r[1] * -1} # Hash -> 2D Array
    types.each do |a|
      type, count = a
      printf "%3s %s\n", count, type
    end
    printf "%3s %s\n", resource_types.size, "Total"
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
lono-4.0.6 lib/lono/inspector/summary.rb
lono-4.0.5 lib/lono/inspector/summary.rb
lono-4.0.4 lib/lono/inspector/summary.rb
lono-4.0.3 lib/lono/inspector/summary.rb
lono-4.0.2 lib/lono/inspector/summary.rb
lono-4.0.1 lib/lono/inspector/summary.rb
lono-4.0.0 lib/lono/inspector/summary.rb