def check_cartridges(names, opts={}, &block)
cartridge_names = Array(names).map{ |s| s.strip if s && s.length > 0 }.compact
from = opts[:from] || all_cartridges
cartridge_names.map do |name|
next use_cart(RHC::Rest::Cartridge.for_url(name), name) if name =~ %r(\Ahttps?://)i
name = name.downcase
from.find{ |c| c.name.downcase == name } ||
begin
carts = from.select{ |c| match_cart(c, name) }
if carts.empty?
paragraph { list_cartridges(from) }
raise RHC::CartridgeNotFoundException, "There are no cartridges that match '#{name}'."
elsif carts.length == 1
use_cart(carts.first, name)
else
carts.sort!.instance_variable_set(:@for, name)
carts
end
end
end.tap do |carts|
yield carts if block_given?
end.each do |carts|
if carts.is_a? Array
name = carts.instance_variable_get(:@for)
paragraph { list_cartridges(carts) }
raise RHC::MultipleCartridgesException, "There are multiple cartridges matching '#{name}'. Please provide the short name of the correct cart."
end
end
end