Sha256: 95dd51355593ef103ea7ce1c1c7681228ba236b4b03310c97df0719d9ade0ce6

Contents?: true

Size: 1.81 KB

Versions: 12

Compression:

Stored size: 1.81 KB

Contents

class Lono::Inspector::Summary < Lono::Inspector::Base
  def perform(template_name)
    # little dirty but @template_name is used in data method
    # so we dont have to pass it to the data method
    @template_name = template_name

    puts "=> CloudFormation Template Summary for template #{@template_name.color(:sienna)}:"
    return if @options[:noop]

    print_parameters_summary

    puts "Resources:"
    print_resource_types
  end

  def print_parameters_summary
    if parameters.empty?
      puts "There are no parameters in this template."
    else
      print_parameters("Required Parameters", required_parameters)
      print_parameters("Optional Parameters", 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
    resources = data["Resources"]
    return unless resources

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

  def print_resource_types
    unless resource_types
      puts "No resources found."
      return
    end

    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

12 entries across 12 versions & 1 rubygems

Version Path
lono-5.2.8 lib/lono/inspector/summary.rb
lono-5.2.7 lib/lono/inspector/summary.rb
lono-5.2.6 lib/lono/inspector/summary.rb
lono-5.2.5 lib/lono/inspector/summary.rb
lono-5.2.4 lib/lono/inspector/summary.rb
lono-5.2.3 lib/lono/inspector/summary.rb
lono-5.2.2 lib/lono/inspector/summary.rb
lono-5.2.1 lib/lono/inspector/summary.rb
lono-5.2.0 lib/lono/inspector/summary.rb
lono-5.1.1 lib/lono/inspector/summary.rb
lono-5.1.0 lib/lono/inspector/summary.rb
lono-5.0.1 lib/lono/inspector/summary.rb