Class: Puppet::CatalogDiff::Formater
- Inherits:
-
Object
- Object
- Puppet::CatalogDiff::Formater
- Defined in:
- lib/puppet/catalog-diff/formater.rb
Overview
Formater provides methods to format resources into diff-able Puppet DSL
Instance Method Summary collapse
- #catalog_summary_header(header, number) ⇒ Object
- #format_array(v, indent = '', do_indent = false, comma = '') ⇒ Object
- #format_hash(v, indent = '', do_indent = false, comma = '') ⇒ Object
- #format_simple(v, indent = '', do_indent = false, comma = '') ⇒ Object
- #format_value(v, indent = '', do_indent = false, comma = '', k = nil) ⇒ Object
-
#initialize ⇒ Formater
constructor
A new instance of Formater.
- #key_pair(header, value) ⇒ Object
- #list(header, value) ⇒ Object
- #list_error_hash(header, value) ⇒ Object
- #list_file_hash(header, value) ⇒ Object
- #list_hash(header, value, mark = '%') ⇒ Object
- #node_summary_header(node, summary, key) ⇒ Object
- #params_diff(header, resource_id, resource) ⇒ Object
- #render_pull(output) ⇒ Object
- #resource_reference(header, resource_id, resource) ⇒ Object
-
#resource_to_string(resource) ⇒ Object
creates a string representation of a resource that looks like Puppet code.
- #string_diff(header, resource_id, resource) ⇒ Object
Constructor Details
#initialize ⇒ Formater
Returns a new instance of Formater.
7 |
# File 'lib/puppet/catalog-diff/formater.rb', line 7 def initialize; end |
Instance Method Details
#catalog_summary_header(header, number) ⇒ Object
69 70 71 72 |
# File 'lib/puppet/catalog-diff/formater.rb', line 69 def catalog_summary_header(header, number) header_spacing = ' ' * (79 - ("Total #{header}".length + number.to_s.length)) "\n#{'-' * 80}\n\033[1mTotal #{header.to_s.tr('_', ' ').capitalize}#{header_spacing}#{number} \033[0m\n#{'-' * 80}\n" end |
#format_array(v, indent = '', do_indent = false, comma = '') ⇒ Object
16 17 18 19 20 21 22 23 24 |
# File 'lib/puppet/catalog-diff/formater.rb', line 16 def format_array(v, indent = '', do_indent = false, comma = '') str = '' str << indent if do_indent str << '[' << "\n" v.each do |val| str << format_value(val, "#{indent} ", true, ',') end str << "\t #{indent} ]" << "\n" << comma end |
#format_hash(v, indent = '', do_indent = false, comma = '') ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/puppet/catalog-diff/formater.rb', line 26 def format_hash(v, indent = '', do_indent = false, comma = '') str = '' str << indent if do_indent str << '{' << "\n" keys = (v.sort_by { |key, _val| key }).to_h keys.each_pair do |key, val| str << "\t #{indent} #{key} => " str << format_value(val, "#{indent} ", true, ',', key) end str << "\t #{indent} }" << "\n" << comma end |
#format_simple(v, indent = '', do_indent = false, comma = '') ⇒ Object
9 10 11 12 13 14 |
# File 'lib/puppet/catalog-diff/formater.rb', line 9 def format_simple(v, indent = '', do_indent = false, comma = '') str = '' str << indent if do_indent v = "\"#{v}\"" unless [Integer, Float, TrueClass, FalseClass].include?(v.class) str << v.to_s << comma << "\n" end |
#format_value(v, indent = '', do_indent = false, comma = '', k = nil) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/puppet/catalog-diff/formater.rb', line 38 def format_value(v, indent = '', do_indent = false, comma = '', k = nil) case v when Array format_array(v, indent, do_indent, comma) when Hash format_hash(v, indent, do_indent, comma) else v = v[:checksum] if k == :content && v.is_a?(Hash) format_simple(v, indent, do_indent, comma) end end |
#key_pair(header, value) ⇒ Object
137 138 139 |
# File 'lib/puppet/catalog-diff/formater.rb', line 137 def key_pair(header, value) "\033[1m#{header.to_s.tr('_', ' ').capitalize}\033[0m:\t#{value}" end |
#list(header, value) ⇒ Object
95 96 97 98 99 100 |
# File 'lib/puppet/catalog-diff/formater.rb', line 95 def list(header, value) list = value.map do |k| "\t#{k}" end.join("\n") "\033[1m#{header.to_s.tr('_', ' ').capitalize}\033[0m:\n#{list}" end |
#list_error_hash(header, value) ⇒ Object
114 115 116 117 118 119 120 121 122 123 |
# File 'lib/puppet/catalog-diff/formater.rb', line 114 def list_error_hash(header, value) number = 0 list = value.map do |hash| number += 1 hash.map do |key, val| "\033[1m#{number}. #{val}\033[0m\n\t#{key}\n" end end.join("\n") "\n#{'-' * 80}\n\033[1m#{header.to_s.tr('_', ' ').capitalize}\033[0m:\n#{'-' * 80}\n#{list}" end |
#list_file_hash(header, value) ⇒ Object
125 126 127 128 129 130 131 132 133 134 135 |
# File 'lib/puppet/catalog-diff/formater.rb', line 125 def list_file_hash(header, value) number = 0 list = value.map do |hash| number += 1 hash.map do |key, val| header_spacing = ' ' * (79 - (' Affected nodes'.length + val.to_s.length)) "#{number}. #{key}\n Affected nodes:#{header_spacing}#{val}" end end.join("\n") "\n#{'-' * 80}\n\033[1m#{header.to_s.tr('_', ' ').capitalize}\033[0m:\n#{'-' * 80}\n#{list}" end |
#list_hash(header, value, mark = '%') ⇒ Object
102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/puppet/catalog-diff/formater.rb', line 102 def list_hash(header, value, mark = '%') number = 0 list = value.map do |hash| number += 1 hash.map do |key, val| header_spacing = ' ' * (79 - ("#{number}. #{key}".length + (((mark == '%' && ('%.2f' % val)) || val)).to_s.to_s.length)) "#{number}. #{key}#{header_spacing}#{(mark == '%' && ('%.2f' % val)) || val}#{mark}" end end.join("\n") "\033[1m#{header.to_s.tr('_', ' ').capitalize}\033[0m:\n#{list}" end |
#node_summary_header(node, summary, key) ⇒ Object
64 65 66 67 |
# File 'lib/puppet/catalog-diff/formater.rb', line 64 def node_summary_header(node, summary, key) header_spacing = ' ' * (79 - (node.length + summary[key].to_s.length)) "\n#{'-' * 80}\n\033[1m#{node}#{header_spacing}#{summary[key]}% \033[0m\n#{'-' * 80}\n" end |
#params_diff(header, resource_id, resource) ⇒ Object
84 85 86 87 88 89 90 91 92 93 |
# File 'lib/puppet/catalog-diff/formater.rb', line 84 def params_diff(header, resource_id, resource) if resource.is_a?(String) "\033[1m#{header.to_s.tr('_', ' ').capitalize}\033[0m:\n\t#{resource_id.capitalize}:\n#{resource}" else params = resource.map do |k, v| "\t#{k} = #{v}" end.join("\n") "\033[1m#{header.to_s.tr('_', ' ').capitalize}\033[0m:\n\t#{resource_id.capitalize}:\n#{params}" end end |
#render_pull(output) ⇒ Object
141 142 143 144 145 146 147 148 149 |
# File 'lib/puppet/catalog-diff/formater.rb', line 141 def render_pull(output) output.map do |key, value| if value.is_a?(Array) && key == :failed_to_compile_files list_file_hash('Failed to compiled sorted by file', value) elsif value.is_a?(Array) && key == :example_compile_errors list_error_hash(key, value) end end.join("\n") + node_summary_header("#{output[:failed_nodes_total]} out of #{output[:total_nodes]} nodes failed to compile. failure rate:", output, :total_percentage).to_s end |
#resource_reference(header, resource_id, resource) ⇒ Object
74 75 76 77 |
# File 'lib/puppet/catalog-diff/formater.rb', line 74 def resource_reference(header, resource_id, resource) dsl = resource_to_string(resource) "\033[1m#{header.to_s.tr('_', ' ').capitalize}\033[0m:\n\t#{resource_id.capitalize}:\n\n#{dsl}" end |
#resource_to_string(resource) ⇒ Object
creates a string representation of a resource that looks like Puppet code
51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/puppet/catalog-diff/formater.rb', line 51 def resource_to_string(resource) str = '' str << "\t#{resource[:type].downcase}" << '{"' << resource[:title].to_s << '":' << "\n" params = (resource[:parameters].sort_by { |k, _v| k }).to_h params.each_pair do |k, v| str << "\t #{k} => " indent = ' ' * k.to_s.size str << format_value(v, indent, false, '', k) end str << "\t}\n" str end |
#string_diff(header, resource_id, resource) ⇒ Object
79 80 81 82 |
# File 'lib/puppet/catalog-diff/formater.rb', line 79 def string_diff(header, resource_id, resource) list = "\t#{resource_id.capitalize}\n" + resource.map(&:to_s).join("\n") "\033[1m#{header.to_s.tr('_', ' ').capitalize}\033[0m:\n#{list}" end |