Puppet Function: cd4peadm::checks::format_summary

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

Overview

cd4peadm::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/cd4peadm/checks/format_summary.rb', line 2

Puppet::Functions.create_function(:'cd4peadm::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.length > 0) 
            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'].length > 0 }
    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