Class: Hieracles::Formats::Console
Overview
format accepting colors for display in the terminal
Constant Summary
collapse
- COLORS =
[
"\e[31m%s\e[0m",
"\e[32m%s\e[0m",
"\e[33m%s\e[0m",
"\e[34m%s\e[0m",
"\e[35m%s\e[0m",
"\e[37m%s\e[0m",
"\e[38m%s\e[0m",
"\e[36m%s\e[0m",
"\e[97m%s\e[0m",
"\e[35;1m%s\e[0m"
]
Instance Method Summary
collapse
Methods included from Utils
#deep_sort, #local_merge, #local_merge!, #max_key_length, #sym_keys, #to_deep_hash, #to_shallow_hash
#allparams, #modules, #params, #show_params
Constructor Details
#initialize(node) ⇒ Console
Returns a new instance of Console.
23
24
25
26
|
# File 'lib/hieracles/formats/console.rb', line 23
def initialize(node)
@colors = {}
super(node)
end
|
Instance Method Details
#build_head(without_common) ⇒ Object
76
77
78
79
80
81
82
83
|
# File 'lib/hieracles/formats/console.rb', line 76
def build_head(without_common)
output = "[-] (merged)\n"
@node.files(without_common).each_with_index do |f, i|
output << format("#{COLORS[i]}\n", "[#{i}] #{f}")
@colors[f] = i
end
"#{output}\n"
end
|
#build_line_item(key, value) ⇒ Object
93
94
95
96
97
98
99
100
101
102
|
# File 'lib/hieracles/formats/console.rb', line 93
def build_line_item(key, value)
if value[:overriden]
format("%s #{COLORS[7]} %s\n", "[-]", key, sanitize(value[:value]) ) +
build_overriden(key, value[:found_in])
else
filecolor_index = @colors[value[:file]]
filecolor = COLORS[filecolor_index]
format("#{filecolor} #{COLORS[7]} %s\n", "[#{filecolor_index}]", key, sanitize(value[:value]) )
end
end
|
#build_list(hash, notifications, filter) ⇒ Object
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
# File 'lib/hieracles/formats/console.rb', line 36
def build_list(hash, notifications, filter)
back = ''
if hash.class.name == 'Array'
hash.each do |v|
back << "#{v}\n"
end
else
back << build_notifications(notifications) if notifications
if filter[0]
hash.select! { |k, v| Regexp.new(filter[0]).match(k.to_s) }
end
length = max_key_length(hash) + 2
title = format(COLORS[8], "%-#{length}s")
hash.each do |k, v|
if v.class.name == 'Hash' || v.class.name == 'Array'
v = v.ai({ indent: 10, raw: true}).strip
end
back << format("#{title} %s\n", k, v)
end
end
back
end
|
#build_modules_line(key, value) ⇒ Object
113
114
115
116
117
118
119
|
# File 'lib/hieracles/formats/console.rb', line 113
def build_modules_line(key, value)
length = max_key_length(@node.modules) + 3
value_color = '%s'
value_color = COLORS[0] if /not found/i.match value
value_color = COLORS[2] if /\(duplicate\)/i.match value
format("%-#{length}s #{value_color}\n", key, value)
end
|
#build_notifications(notifications) ⇒ Object
59
60
61
62
63
64
65
66
|
# File 'lib/hieracles/formats/console.rb', line 59
def build_notifications(notifications)
back = "\n"
notifications.each do |v|
back << format("#{COLORS[9]}\n", "*** #{v.source}: #{v.message} ***")
end
back << "\n"
back
end
|
#build_overriden(key, found_in) ⇒ Object
104
105
106
107
108
109
110
111
|
# File 'lib/hieracles/formats/console.rb', line 104
def build_overriden(key, found_in)
back = ''
found_in.each do |v|
filecolor_index = @colors[v[:file]]
back << format(" #{COLORS[8]}\n", "[#{filecolor_index}] #{key} #{v[:value]}")
end
back
end
|
#build_params_line(key, value, filter) ⇒ Object
85
86
87
88
89
90
91
|
# File 'lib/hieracles/formats/console.rb', line 85
def build_params_line(key, value, filter)
output = ''
if !filter || Regexp.new(filter).match(key)
output << build_line_item(key, value)
end
output
end
|
#facts(filter) ⇒ Object
32
33
34
|
# File 'lib/hieracles/formats/console.rb', line 32
def facts(filter)
build_list(@node.facts, @node.notifications, filter)
end
|
#files(_) ⇒ Object
68
69
70
|
# File 'lib/hieracles/formats/console.rb', line 68
def files(_)
@node.files.join("\n") + "\n"
end
|
#info(filter) ⇒ Object
28
29
30
|
# File 'lib/hieracles/formats/console.rb', line 28
def info(filter)
build_list(@node.info, @node.notifications, filter)
end
|
#paths(_) ⇒ Object
72
73
74
|
# File 'lib/hieracles/formats/console.rb', line 72
def paths(_)
@node.paths.join("\n") + "\n"
end
|