class Travis::CLI::Settings

def all_settings?

def all_settings?
  agree("Really #{setting ? "enable" : "disable"} all settings? ") do |q|
    q.default = "no"
  end
end

def describe(key, description = key)

def describe(key, description = key)
  return description if keys?
  desc = DESCRIPTIONS[key.to_sym]
  desc &&= yield(desc) if block_given?
  desc || description
end

def run(*keys)

def run(*keys)
  exit 1 if interactive? and keys.empty? and !setting.nil? and !all_settings? and !configure?
  authenticate
  say repository.slug, "Settings for %s:"
  repository.settings.to_h.each do |key, value|
    next unless keys.empty? or keys.include? key
    if configure?
      repository.settings[key] = agree("#{describe(key, "enable #{key}")}? ") do |q|
        default   = setting.nil? ? value : setting
        q.default = default ? "yes" : "no"
      end
    else
      value = repository.settings[key] = setting unless setting.nil?
      descr = color(describe(key, color(key, :info)) { |s| key.ljust(30) + " " + color(s, [:reset, :bold]) }, :info)
      say color("[#{value ? "+" : "-"}] ", [:bold, value ? :green : :red]) << descr
    end
  end
  repository.settings.save if configure? or !setting.nil?
end