lib/awskeyring_command.rb in awskeyring-0.9.0 vs lib/awskeyring_command.rb in awskeyring-0.10.0
- old
+ new
@@ -63,17 +63,23 @@
puts Awskeyring.list_role_names.join("\n")
end
desc 'env ACCOUNT', I18n.t('env.desc')
method_option 'no-token', type: :boolean, aliases: '-n', desc: I18n.t('method_option.notoken'), default: false
+ method_option 'unset', type: :boolean, aliases: '-u', desc: I18n.t('method_option.unset'), default: false
# Print Env vars
def env(account = nil)
- account = ask_check(
- existing: account, message: I18n.t('message.account'), validator: Awskeyring.method(:account_exists)
- )
- cred = age_check_and_get(account: account, no_token: options['no-token'])
- put_env_string(cred)
+ if options['unset']
+ put_env_string(account: nil, key: nil, secret: nil, token: nil)
+ else
+ account = ask_check(
+ existing: account, message: I18n.t('message.account'),
+ validator: Awskeyring.method(:account_exists)
+ )
+ cred = age_check_and_get(account: account, no_token: options['no-token'])
+ put_env_string(cred)
+ end
end
desc 'json ACCOUNT', I18n.t('json.desc')
method_option 'no-token', type: :boolean, aliases: '-n', desc: I18n.t('method_option.notoken'), default: false
# Print JSON for use with credential_process
@@ -98,11 +104,11 @@
if command.empty?
warn I18n.t('message.exec')
exit 1
end
cred = age_check_and_get(account: account, no_token: options['no-token'])
- env_vars = env_vars(cred)
+ env_vars = Awskeyring::Awsapi.get_env_array(cred)
begin
pid = Process.spawn(env_vars, command.join(' '))
Process.wait pid
$CHILD_STATUS
rescue Errno::ENOENT => e
@@ -417,30 +423,13 @@
exit 1 if command.empty?
self.class.all_commands[command].options.values.map(&:aliases).flatten! +
self.class.all_commands[command].options.values.map(&:switch_name)
end
- def env_vars(cred)
- env_var = {}
- env_var['AWS_DEFAULT_REGION'] = 'us-east-1' unless Awskeyring::Awsapi.region
- env_var['AWS_ACCOUNT_NAME'] = cred[:account]
- env_var['AWS_ACCESS_KEY_ID'] = cred[:key]
- env_var['AWS_ACCESS_KEY'] = cred[:key]
- env_var['AWS_SECRET_ACCESS_KEY'] = cred[:secret]
- env_var['AWS_SECRET_KEY'] = cred[:secret]
- if cred[:token]
- env_var['AWS_SECURITY_TOKEN'] = cred[:token]
- env_var['AWS_SESSION_TOKEN'] = cred[:token]
- end
- env_var
- end
-
def put_env_string(cred)
- env_var = env_vars(cred)
+ env_var = Awskeyring::Awsapi.get_env_array(cred)
env_var.each { |var, value| puts "export #{var}=\"#{value}\"" }
-
- puts 'unset AWS_SECURITY_TOKEN' unless cred[:token]
- puts 'unset AWS_SESSION_TOKEN' unless cred[:token]
+ Awskeyring::Awsapi::AWS_ENV_VARS.each { |key| puts "unset #{key}" unless env_var.key?(key) }
end
def ask_check(existing:, message:, secure: false, optional: false, validator: nil)
retries ||= 3
begin