class Chef::Compliance::Reporter::Cli

Public Instance Methods

send_report(report) click to toggle source
# File lib/chef/compliance/reporter/cli.rb, line 5
def send_report(report)
  # iterate over each profile and control
  output = ["\nCompliance report:"]
  report[:profiles].each do |profile|
    next if profile[:controls].nil?

    output << " * #{profile[:title]}"
    profile[:controls].each do |control|
      next if control[:results].nil?

      output << "#{" " * 6}#{control[:title]}"
      control[:results].each do |result|
        output << format_result(result)
      end
    end
  end
  output << "\n"
  puts output.join("\n")
end
validate_config!() click to toggle source
# File lib/chef/compliance/reporter/cli.rb, line 25
def validate_config!
  true
end

Private Instance Methods

format_result(result) click to toggle source
# File lib/chef/compliance/reporter/cli.rb, line 39
def format_result(result)
  output = []
  found = false
  if result[:status] == "failed"
    if result[:code_desc]
      found = true
      output << pastel.red("#{" " * 9}- #{result[:code_desc]}")
    end
    if result[:message]
      if found
        result[:message].split(/\n/).reject(&:empty?).each do |m|
          output << pastel.red("#{" " * 12}#{m}")
        end
      else
        result[:message].split(/\n/).reject(&:empty?).each do |m|
          output << pastel.red("#{" " * 9}#{m}")
        end
      end
      found = true
    end
    unless found
      output << pastel.red("#{" " * 9}- #{result[:status]}")
    end
  else
    found = false
    if result[:code_desc]
      found = true
      output << pastel.green("#{" " * 9}+ #{result[:code_desc]}")
    end
    unless found
      output << pastel.green("#{" " * 9}+ #{result[:status]}")
    end
  end
  output
end
pastel() click to toggle source

pastel.decorate is a lightweight replacement for highline.color

# File lib/chef/compliance/reporter/cli.rb, line 32
def pastel
  @pastel ||= begin
    require "pastel" unless defined?(Pastel)
    Pastel.new
  end
end