class SimplyGenius::Atmos::Commands::Account

Public Class Methods

description() click to toggle source
# File lib/simplygenius/atmos/commands/account.rb, line 11
def self.description
  "Manages accounts/envs in the cloud provider"
end

Public Instance Methods

execute() click to toggle source
# File lib/simplygenius/atmos/commands/account.rb, line 29
def execute

  Atmos.config.provider.auth_manager.authenticate(ENV) do |auth_env|
    ClimateControl.modify(auth_env) do

      config = YAML.load_file(Atmos.config.config_file)

      if config['environments'][env]
        signal_usage_error "Env '#{env}' is already present in atmos config"
      end

      source = {}
      if source_env.present?
        source = config['environments'][source_env]
        if source.blank?
          signal_usage_error "Source env '#{source_env}' does not exist"
        end
        source = source.clone
      end

      account = Atmos.config.provider.account_manager.create_account(env, name: name, email: email)
      logger.info "Account created: #{display account}"

      source['account_id'] = account[:account_id].to_s

      new_yml = SettingsHash.add_config(
          Atmos.config.config_file,
          "environments.#{env}", source
      )
      logger.info("Writing out new atmos.yml containing new account")
      File.write(Atmos.config.config_file, new_yml)
    end
  end
end