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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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
|
# File 'lib/chef/knife/github_baselist.rb', line 26
def self.included(includer)
includer.class_eval do
option :fields,
:long => "--fields 'NAME, NAME'",
:description => "The fields to output, comma-separated"
option :fieldlist,
:long => "--fieldlist",
:description => "The available fields to output/filter",
:boolean => true
option :noheader,
:long => "--noheader",
:description => "Removes header from output",
:boolean => true
def display_info(data, columns, match = [])
object_list = []
if config[:fields]
config[:fields].split(',').each { |n| object_list << ui.color(("#{n}").capitalize.strip, :bold) }
else
columns.each { |c| r = c.split(","); object_list << ui.color(("#{r.last}").strip, :bold) }
end
col = object_list.count
object_list = [] if config[:noheader]
data.each do |k,v|
if config[:fields]
config[:fields].downcase.split(',').each { |n| object_list << ((v["#{n}".strip]).to_s || 'n/a') }
else
color = :white
if !match.empty? && !config[:all]
matches = []; match.each { |m| matches << v[m].to_s }
if matches.uniq.count == 1
next if config[:mismatch]
else
color = :yellow
end
end
columns.each { |c| r = c.split(","); object_list << ui.color((v["#{r.first}"]).to_s, color) || 'n/a' }
end
end
puts ui.list(object_list, :uneven_columns_across, col)
display_object_fields(data) if locate_config_value(:fieldlist)
end
def display_object_fields(object)
exit 1 if object.nil? || object.empty?
object_fields = [
ui.color('Key', :bold),
ui.color('Type', :bold),
ui.color('Value', :bold)
]
object.first.each do |n|
if n.class == Hash
n.keys.each do |k,v|
object_fields << ui.color(k, :yellow, :bold)
object_fields << n[k].class.to_s
if n[k].kind_of?(Array)
object_fields << '<Array>'
elsif n[k].kind_of?(Hash)
object_fields << '<Hash>'
else
object_fields << ("#{n[k]}").strip.to_s
end
end
end
end
puts "\n"
puts ui.list(object_fields, :uneven_columns_across, 3)
end
end
end
|