# File lib/rhc/commands/app.rb, line 418
    def show(app_name)

      if options.state
        find_app(:with_gear_groups => true).each do |gg|
          say "Cartridge #{gg.cartridges.collect { |c| c['name'] }.join(', ')} is #{gear_group_state(gg.gears.map{ |g| g['state'] })}"
        end

      elsif options.gears && options.gears != true
        groups = find_app(:with_gear_groups => true)

        case options.gears
        when 'quota'
          opts = {:as => :gear, :split_cells_on => /\s*\t/, :header => ['Gear', 'Cartridges', 'Used', 'Limit'], :align => [nil, nil, :right, :right]}
          table_from_gears('echo "$(du --block-size=1 -s 2>/dev/null | cut -f 1)"', groups, opts) do |gear, data, group|
            [gear['id'], group.cartridges.collect{ |c| c['name'] }.join(' '), (human_size(data.chomp) rescue 'error'), human_size(group.quota)]
          end
        when 'ssh'
          groups.each{ |group| group.gears.each{ |g| say (ssh_string(g['ssh_url']) or raise NoPerGearOperations) } }
        else
          run_on_gears(ssh_command_for_op(options.gears), groups)
        end

      elsif options.gears
        domain, app = discover_domain_and_app
        gear_info = rest_client.find_application_gear_groups_endpoints(domain, app).map do |group|
          group.gears.map do |gear|
            color_cart = if gear['endpoints'].present?
              e = gear['endpoints'].collect{ |c| c['cartridge_name'] }.uniq
              lambda { |c| e.include?(c) ? color(c, :green) : c }
            else
              lambda { |c| c }
            end
            [
              gear['id'],
              gear['state'] == 'started' ? color(gear['state'], :green) : color(gear['state'], :yellow),
              group.cartridges.collect{ |c| color_cart.call(c['name']) }.join(' '),
              group.gear_profile,              
              gear['region'],
              gear['zone'],
              ssh_string(gear['ssh_url'])
            ]
          end
        end.flatten(1)

        explicit_regions = gear_info.select{|i| !i[4].nil?}.present?
        explicit_zones = gear_info.select{|i| !i[5].nil?}.present?

        say table(gear_info.map(&:compact), :header => ['ID', 'State', 'Cartridges', 'Size', explicit_regions ? 'Region' : nil, explicit_zones ? 'Zone' : nil, 'SSH URL'].compact)

      elsif options.configuration
        display_app_configurations(find_app)
        paragraph { say "Use 'rhc configure-app' to change the configuration values of this application." }

      else
        app = find_app(:include => :cartridges)
        display_app(app, app.cartridges, nil, options.verbose)
      end

      0
    end