class PhusionPassenger::Config::ListInstancesCommand

def self.create_option_parser(options)

def self.create_option_parser(options)
  OptionParser.new do |opts|
    nl = "\n" + ' ' * 37
    opts.banner = "Usage: passenger-config list-instances [OPTIONS] <PID>\n"
    opts.separator ""
    opts.separator "  List all running #{PROGRAM_NAME} instances."
    opts.separator ""
    opts.on("--json", "Print output in JSON format") do
      options[:json] = true
    end
    opts.on("-q", "--quiet", "Don't print anything if there are no #{PROGRAM_NAME} instances running") do
      options[:quiet] = true
    end
    opts.on("-h", "--help", "Show this help") do
      options[:help] = true
    end
  end
end

def help

def help
  puts @parser
end

def parse_options

def parse_options
  super
  if !@argv.empty?
    help
    abort
  end
end

def print_instances(instances)

def print_instances(instances)
  printf "%-25s  %s\n", "Name", "Description"
  puts "------------------------------------------------------------------"
  instances.each do |instance|
    printf "%-25s  %s\n", instance.name, instance.server_software
  end
end

def print_json(instances)

def print_json(instances)
  result = []
  instances.each do |instance|
    result << instance.properties
  end
  puts PhusionPassenger::Utils::JSON.generate(result)
end

def print_no_instances_running

def print_no_instances_running
  if !@options[:quiet]
    puts "There are no #{PROGRAM_NAME} instances running."
  end
end

def run

def run
  parse_options
  instances = AdminTools::InstanceRegistry.new.list
  if @options[:json]
    print_json(instances)
  elsif instances.empty?
    print_no_instances_running
  else
    print_instances(instances)
  end
end