def list
carts = rest_client.cartridges.sort_by{ |c| "#{c.type == 'standalone' && 1}_#{c.tags.include?('experimental') ? 1 : 0}_#{(c.display_name || c.name).downcase}" }
pager
if options.verbose
carts.each do |c|
paragraph do
name = c.name
name += '*' if c.usage_rate?
name = c.display_name != c.name && "#{color(c.display_name, :cyan)} [#{name}]" || name
tags = c.tags - RHC::Rest::Cartridge::HIDDEN_TAGS
say header([name, "(#{c.only_in_existing? ? 'addon' : 'web'})"])
say c.description
paragraph{ say "Tagged with: #{tags.sort.join(', ')}" } if tags.present?
paragraph{ say format_usage_message(c) } if c.usage_rate?
paragraph{ warn "Does not receive automatic security updates" } unless c.automatic_updates?
end
end
else
say table(carts.collect do |c|
[[c.name, c.usage_rate? ? " (*)" : "", c.automatic_updates? ? '' : ' (!)'].join(''),
c.display_name,
c.only_in_existing? ? 'addon' : 'web',
]
end)
end
paragraph{ say "Note: Web cartridges can only be added to new applications." }
paragraph{ say "(*) denotes a cartridge with additional usage costs." } if carts.any?(&:usage_rate?)
paragraph{ say "(!) denotes a cartridge that will not receive automatic security updates." } unless options.verbose || carts.none?(&:automatic_updates?)
0
end