def run
q = Chef::Search::Query.new
display = { :total => 0, :start => config[:start] ? config[:start] : 0, :rows => [ ] }
q.search(@name_args[0], @name_args[1], config[:sort], config[:start] ? config[:start] : 0, config[:rows] ? config[:rows] : 20) do |item|
formatted_item = format_for_display(item)
if formatted_item.respond_to?(:has_key?) && !formatted_item.has_key?('id')
formatted_item['id'] = item.has_key?('id') ? item['id'] : item.name
end
display[:rows] << formatted_item
display[:total] += 1
end
if config[:id_only]
if config[:attribute]
display[:rows].each do |row|
puts row[config[:attribute]] if row.has_key?(config[:attribute]) && !row[config[:attribute]].nil?
end
else
puts display[:rows].join("\n")
end
else
output(display)
end
end