class Travis::CLI::Env

def clear

def clear
  exit   if env_vars.empty?
  exit 1 if interactive? and not force? and not danger_zone? "Clear out all env variables for #{color(repository.slug, :bold)}?"
  remove_vars
end

def copy(*names)

def copy(*names)
  names.each do |name|
    if ENV.include? name
      set(name, ENV[name])
    else
      warn "missing in current environment: #{color "$#{name}", :bold}"
    end
  end
end

def env_vars

def env_vars
  repository.env_vars
end

def list

def list
  say color("# environment variables for #{color repository.slug, :bold}", :info)
  env_vars.each { |v| say "#{v.name}=" << color(v.value || "[secure]", :bold) }
end

def remove_vars

def remove_vars
  env_vars.each do |var|
    next if block_given? and not yield(var)
    say color('[x] ', [:red, :bold]) + "removing environment variable #{color "$#{var.name}", :info}"
    var.delete
  end
end

def set(name, value)

def set(name, value)
  options ||= { :public => public } if public != nil
  say color('[+] ', [:green, :bold]) + "setting environment variable #{color "$#{name}", :info}"
  value = Shellwords.escape(value) unless unescape?
  env_vars.upsert(name, value, options || {})
end

def setup

def setup
  super
  authenticate
  error "not allowed to access environment variables for #{color(repository.slug, :bold)}" unless repository.admin?
end

def unset(*names)

def unset(*names)
  remove_vars { |var| names.include? var.name }
end