def status_command
exitcode = 0
statuses = @server.status
groups = {}
statuses.each do |name, status|
g = status[:group] || ''
groups[g] ||= {}
groups[g][name] = status
end
if item = @args[1]
if single = statuses[item]
state = single[:state]
puts "#{item}: #{state}"
exitcode = state == :up ? 0 : (state == :unmonitored ? 1 : 2)
elsif groups[item]
puts "#{item}:"
groups[item].keys.sort.each do |name|
state = groups[item][name][:state]
print " "
puts "#{name}: #{state}"
exitcode += 1 unless state == :up
end
else
puts "Task or Group '#{item}' not found."
exit(1)
end
else
groups.keys.sort.each do |group|
puts "#{group}:" unless group.empty?
groups[group].keys.sort.each do |name|
state = groups[group][name][:state]
print " " unless group.empty?
puts "#{name}: #{state}"
end
end
end
exit(exitcode)
end