Puppet Function: complyadm::checks::format_summary

Defined in:
lib/puppet/functions/complyadm/checks/format_summary.rb
Function type:
Ruby 4.x API

Overview

complyadm::checks::format_summary(Array $results)String

Creates summary for the end of check output

Parameters:

  • results (Array)

    list of results hashes that need to be summarized

Returns:

  • (String)


2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/puppet/functions/complyadm/checks/format_summary.rb', line 2

Puppet::Functions.create_function(:'complyadm::checks::format_summary') do
  # Creates summary for the end of check output
  # @param [Array] results list of results hashes that need to be summarized
  # @returns [String] gorgeous formatted output, complete with colors
  dispatch :format_summary do
    param 'Array', :results
    return_type 'String'
  end

  def format_summary(results)
    message = ''
    total_results_count = results.length
    failed_results_list = extract_failed_results(results)

    if !failed_results_list.empty?
      message += summary_message(total_results_count, failed_results_list.length)
      failed_results_list.each do |result|
        message += failures_per_result(result)
      end
    else
      message += summary_message(total_results_count, 0)
    end
    message
  end

  def red(message)
    "\e[31m#{message}\e[0m"
  end

  def pluralize_check(number)
    (number == 1) ? 'check' : 'checks'
  end

  def extract_failed_results(results)
    results.filter { |result| !result['failed'].empty? }
  end

  def failures_per_result(failed_result)
    failed_result['failed'].map { |failure| " . #{red(failure)}\n" }.join
  end

  def summary_message(total_count, failed_count)
    if failed_count > 0
      "#{total_count} #{pluralize_check(total_count)} completed, #{failed_count} failed.\n"
    else
      "#{total_count} #{pluralize_check(total_count)} completed.\n"
    end
  end
end