class Travis::CLI::Setup

def self.service(name)

def self.service(name)
  normal_name = Service.normalized_name(name)
  const_name  = constants(false).detect { |c| Service.normalized_name(c) == normal_name }
  constant    = const_get(const_name) if const_name
  constant if constant && (constant < Service) && constant.known_as?(name)
end

def self.services

def self.services
  constants(false).sort.map { |c| const_get(c) }.select { |c| c < Service }
end

def help

def help
  services = self.class.services.map do |s|
    "\t" << color(s.service_name.ljust(20), :command) << color(s.description, :info)
  end.join("\n")
  super("\nAvailable services:\n\n#{services}\n\n")
end

def run(service, file = travis_yaml)

def run(service, file = travis_yaml)
  service(service).run
  save_travis_config(file)
end

def service(name)

def service(name)
  factory = self.class.service(name)
  error("unknown service #{name}") unless factory
  factory.new(self)
end