class CF::App::Env

Constants

VALID_ENV_VAR

Public Instance Methods

env() click to toggle source
# File lib/cf/cli/app/env.rb, line 11
def env
  app = input[:app]

  vars =
    with_progress("Getting env for #{c(app.name, :name)}") do |s|
      app.env
    end

  line unless quiet?

  vars.each do |name, val|
    line "#{c(name, :name)}: #{val}"
  end
end
set_env() click to toggle source
# File lib/cf/cli/app/env.rb, line 34
def set_env
  app = input[:app]
  name, value = parse_name_and_value!

  with_progress("Updating env variable #{c(name, :name)} for app #{c(app.name, :name)}") do
    app.env[name] = value
    app.update!
  end

  restart_if_necessary(app)
end
unset_env() click to toggle source
# File lib/cf/cli/app/env.rb, line 52
def unset_env
  app = input[:app]
  name = input[:name]

  with_progress("Unsetting #{c(name, :name)} for app #{c(app.name, :name)}") do
    app.env.delete(name)
    app.update!
  end

  restart_if_necessary(app)
end

Private Instance Methods

parse_name_and_value!() click to toggle source
# File lib/cf/cli/app/env.rb, line 80
def parse_name_and_value!
  name = input[:name]
  value = input[:value]

  if name["="]
    name, new_value, extra_values = name.split("=")
    fail "You attempted to specify the value of #{name} twice." if value
    fail "Invalid format: environment variable definition contains too many occurences of '='" if extra_values
    value = new_value
  end

  unless name =~ VALID_ENV_VAR
    fail "Invalid format: environment variable names cannot start with a number" if name[0] =~ /\d/
    fail "Invalid format: environment variable names can only contain alphanumeric characters and underscores"
  end

  return name, value
end
restart_if_necessary(app) click to toggle source
# File lib/cf/cli/app/env.rb, line 66
def restart_if_necessary(app)
  unless input[:restart]
    line c("TIP: Use 'truck push' to ensure your env variable changes take effect.", :warning)
    return
  end

  if app.started?
    invoke :restart, :app => app
  else
    line "Your app was unstarted. Starting now."
    invoke :start, :app => app
  end
end