module AwsCftTools::Runbooks::Diff::Context::Reporting

Reporting functions for the Diff context

Public Instance Methods

output_report_on_differences(diffs) click to toggle source
# File lib/aws_cft_tools/runbooks/diff/context/reporting.rb, line 24
def output_report_on_differences(diffs)
  report_on_blank_diffs(diffs)
  report_on_real_diffs(diffs)
end
output_report_on_missing_stacks(missing) click to toggle source
# File lib/aws_cft_tools/runbooks/diff/context/reporting.rb, line 18
def output_report_on_missing_stacks(missing)
  missing = template_filenames(missing)
  return if missing.empty?
  puts "\nUndeployed templates:\n  #{missing.sort.join("\n  ")}\n"
end
output_report_on_missing_templates(missing) click to toggle source
# File lib/aws_cft_tools/runbooks/diff/context/reporting.rb, line 13
def output_report_on_missing_templates(missing)
  return if missing.empty?
  puts "\nStacks with no template:\n  #{missing.sort.join("\n  ")}\n"
end

Private Instance Methods

diff_with_filenames(diff, filename) click to toggle source
# File lib/aws_cft_tools/runbooks/diff/context/reporting.rb, line 75
def diff_with_filenames(diff, filename)
  diff.sub(%r{--- /.*$}, "--- #{filename} @ AWS")
      .sub(%r{\+\+\+ /.*$}, "+++ #{filename} @ Local")
end
report_full_diffs(names, diffs) click to toggle source
# File lib/aws_cft_tools/runbooks/diff/context/reporting.rb, line 50
def report_full_diffs(names, diffs)
  names.sort.each do |name|
    report_pos_diff(templates[name].filename.to_s, diffs[name])
  end
end
report_list_of_diffs(real_diffs) click to toggle source
# File lib/aws_cft_tools/runbooks/diff/context/reporting.rb, line 56
def report_list_of_diffs(real_diffs)
  puts "\nTemplates with changes:\n  #{template_filenames(real_diffs).sort.join("\n  ")}\n"
end
report_on_blank_diffs(diffs) click to toggle source
# File lib/aws_cft_tools/runbooks/diff/context/reporting.rb, line 31
def report_on_blank_diffs(diffs)
  no_diffs = diffs.keys.select { |name| diffs[name].match(/\A\s*\Z/) }
  return if no_diffs.empty?

  puts "\nTemplates with no changes:\n  #{template_filenames(no_diffs).sort.join("\n  ")}\n"
end
report_on_real_diffs(diffs) click to toggle source
# File lib/aws_cft_tools/runbooks/diff/context/reporting.rb, line 38
def report_on_real_diffs(diffs)
  real_diffs = diffs.keys.reject { |name| diffs[name].match(/\A\s*\Z/) }

  return if real_diffs.empty?

  if options[:verbose]
    report_full_diffs(real_diffs, diffs)
  else
    report_list_of_diffs(real_diffs)
  end
end
report_pos_diff(filename, diff) click to toggle source
# File lib/aws_cft_tools/runbooks/diff/context/reporting.rb, line 70
def report_pos_diff(filename, diff)
  return unless template_in_consideration(options[:templates], filename)
  puts diff_with_filenames(diff, filename), ''
end
template_filenames(stack_names) click to toggle source
# File lib/aws_cft_tools/runbooks/diff/context/reporting.rb, line 60
def template_filenames(stack_names)
  set = templates.values_at(*stack_names).map(&:filename).map(&:to_s)
  allowed = options[:templates]
  if allowed && allowed.any?
    set & allowed
  else
    set
  end
end
template_in_consideration(list, filename) click to toggle source
# File lib/aws_cft_tools/runbooks/diff/context/reporting.rb, line 80
def template_in_consideration(list, filename)
  !list || list.empty? || list.include?(filename)
end