Class: OutputResults

Inherits:
Object
  • Object
show all
Defined in:
lib/puppet-check/output_results.rb

Overview

class to handle outputting diagnostic results in desired format

Class Method Summary collapse

Class Method Details

.category_info(heading, files) ⇒ Object

display heading, files, and file messages per category for text formatting



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/puppet-check/output_results.rb', line 43

def self.category_info(heading, files)
  private_class_method :method
  # display category heading
  print heading

  # display files and optionally messages
  case files
  when Hash then files.each { |file, messages| puts "-- #{file}:\n#{messages.join("\n")}" }
  when Array then puts files.join("\n-- ")
  else raise "puppet-check: The category files were of unexpected type #{files.class}. Please file an issue with this log message, category heading, and information about the parsed files."
  end

  # newline between categories for easier visual parsing
  puts ''
end

.run(files, format) ⇒ Object

output the results in various formats



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/puppet-check/output_results.rb', line 6

def self.run(files, format)
  # remove empty entries
  files.delete_if { |_, sorted_files| sorted_files.empty? }

  # output hash according to specified format
  case format
  when 'text'
    text(files)
  when 'yaml'
    require 'yaml'
    # maintain filename format consistency among output formats
    files.transform_keys!(&:to_s)
    puts Psych.dump(files, indentation: 2)
  when 'json'
    require 'json'
    puts JSON.pretty_generate(files)
  else
    raise "puppet-check: Unsupported output format '#{format}' was specified."
  end
end

.text(files) ⇒ Object

output the results as text



28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/puppet-check/output_results.rb', line 28

def self.text(files)
  private_class_method :method

  # errors
  category_info("\033[31mThe following files have errors:\033[0m\n", files[:errors]) if files.key?(:errors)
  # warnings
  category_info("\033[33mThe following files have warnings:\033[0m\n", files[:warnings]) if files.key?(:warnings)
  # cleans
  category_info("\033[32mThe following files have no errors or warnings:\033[0m\n-- ", files[:clean]) if files.key?(:clean)
  # ignores
  return unless files.key?(:ignored)
  category_info("\033[36mThe following files have unrecognized formats and therefore were not processed:\033[0m\n-- ", files[:ignored])
end