def self.get_cartridge_list(list_descriptors = false, porcelain = false, oo_debug = false)
carts = []
cartridge_path = OpenShift::Config.new.get("CARTRIDGE_BASE_PATH")
Dir.foreach(cartridge_path) do |cart_dir|
next if [".", "..", "embedded", "abstract", "abstract-httpd", "abstract-jboss"].include? cart_dir
path = File.join(cartridge_path, cart_dir, "info", "manifest.yml")
begin
print "Loading #{cart_dir}..." if oo_debug
carts.push OpenShift::Cartridge.new.from_descriptor(YAML.load(File.open(path)))
print "OK\n" if oo_debug
rescue Exception => e
print "ERROR\n" if oo_debug
print "#{e.message}\n#{e.backtrace.inspect}\n" unless porcelain
end
end
print "\n\n\n" if oo_debug
output = ""
if porcelain
if list_descriptors
output << "CLIENT_RESULT: "
output << carts.map{|c| c.to_descriptor.to_yaml}.to_json
else
output << "CLIENT_RESULT: "
output << carts.map{|c| c.name}.to_json
end
else
if list_descriptors
carts.each do |c|
output << "Cartridge name: #{c.name}\n\nDescriptor:\n #{c.to_descriptor.inspect}\n\n\n"
end
else
output << "Cartridges:\n"
carts.each do |c|
output << "\t#{c.name}\n"
end
end
end
output
end