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
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_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
|
#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
|
#show_params(without_common, args) ⇒ Object
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
# File 'lib/hieracles/formats/console.rb', line 76
def show_params(without_common, args)
filter = args[0]
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"
@node.params(without_common).each do |key, v|
if !filter || Regexp.new(filter).match(key)
filecolor_index = @colors[v[:file]]
if v[:overriden]
output << format(
"%s #{COLORS[7]} %s\n", "[-]",
key,
sanitize(v[:value])
)
v[:found_in].each do |val|
filecolor_index = @colors[val[:file]]
output << format(
" #{COLORS[8]}\n",
"[#{filecolor_index}] #{key} #{val[:value]}"
)
end
else
filecolor = COLORS[filecolor_index]
output << format(
"#{filecolor} #{COLORS[7]} %s\n", "[#{filecolor_index}]",
key,
sanitize(v[:value])
)
end
end
end
output
end
|