awskeyring 0.9.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9871d5b6d30539c178819acbd9142004c85443b7
4
- data.tar.gz: fb497258e4204746dae39bdd4d5af529de0d354b
3
+ metadata.gz: d9ba390ba84576e3ec79b6e60fc5da80363faa36
4
+ data.tar.gz: 4a6352ace35cad42d6a11fd0624646d958211e1c
5
5
  SHA512:
6
- metadata.gz: b04ba2c7c9f369aba46e44f8621f447e79235ff4a42a5e225e80e2353d3cc22a8d32b11017639a415e7bc1824b082c09917e994cca9798ac93b4688c945e3112
7
- data.tar.gz: a0fcdbfbce47d4e6e876f0e26766b3dd2f8f1a6d79fc913ceb11f8b63ae2099de82a070ecb7bcb373a715830e6f3fc9daaa20a8831b0493dd01d9d95ee80e819
6
+ metadata.gz: ec365e5dbe6349195131b07fb65ef7665d3c310894e5a0a08f1f58bf3fbcba0586ec385d46b1c1b1c7c095cb76c792bb1855c44ed01c590825532453f5f459d0
7
+ data.tar.gz: 67adf2badf660187fafad8ee55f8a743d312abc4fab491f1181fb54736b8530c2886275e37990971073970f45d0c2606a866eca8806949b862c3f1cb73d1437e
@@ -1,5 +1,12 @@
1
1
  # Change Log
2
2
 
3
+ ## [v0.10.0](https://github.com/vibrato/awskeyring/tree/v0.10.0) (2019-04-24)
4
+ [Full Changelog](https://github.com/vibrato/awskeyring/compare/v0.9.0...v0.10.0)
5
+
6
+ **Implemented enhancements:**
7
+
8
+ - Add --unset flag to env command [\#44](https://github.com/vibrato/awskeyring/pull/44) ([tristanmorgan](https://github.com/tristanmorgan))
9
+
3
10
  ## [v0.9.0](https://github.com/vibrato/awskeyring/tree/v0.9.0) (2019-04-09)
4
11
  [Full Changelog](https://github.com/vibrato/awskeyring/compare/v0.8.1...v0.9.0)
5
12
 
@@ -47,6 +47,7 @@ en:
47
47
  path: 'The service PATH to open.'
48
48
  role: 'The ROLE to assume.'
49
49
  secret: 'AWS account secret.'
50
+ unset: 'Unset environment variables.'
50
51
  message:
51
52
  keychain: 'Name for new keychain (default: awskeyring)'
52
53
  account: 'account name'
@@ -20,6 +20,16 @@ module Awskeyring
20
20
  # AWS Signin url
21
21
  AWS_SIGNIN_URL = 'https://signin.aws.amazon.com/federation'.freeze
22
22
 
23
+ # AWS Env vars
24
+ AWS_ENV_VARS = %w[
25
+ AWS_ACCESS_KEY_ID
26
+ AWS_ACCESS_KEY
27
+ AWS_SECRET_ACCESS_KEY
28
+ AWS_SECRET_KEY
29
+ AWS_SECURITY_TOKEN
30
+ AWS_SESSION_TOKEN
31
+ ].freeze
32
+
23
33
  # Twelve hours in seconds
24
34
  TWELVE_HOUR = (60 * 60 * 12)
25
35
  # One hour in seconds
@@ -101,6 +111,35 @@ module Awskeyring
101
111
  )
102
112
  end
103
113
 
114
+ # Generates Environment Variables for the AWS CLI
115
+ #
116
+ # @param [Hash] params including
117
+ # [String] account The aws_access_key_id
118
+ # [String] secret The aws_secret_access_key
119
+ # [String] token The aws_session_token
120
+ # @return [Hash] env_var hash
121
+ def self.get_env_array(params = {})
122
+ env_var = {}
123
+ env_var['AWS_DEFAULT_REGION'] = 'us-east-1' unless region
124
+ env_var['AWS_ACCOUNT_NAME'] = params[:account] if params[:account]
125
+
126
+ if params[:key]
127
+ env_var['AWS_ACCESS_KEY_ID'] = params[:key]
128
+ env_var['AWS_ACCESS_KEY'] = params[:key]
129
+ end
130
+
131
+ if params[:secret]
132
+ env_var['AWS_SECRET_ACCESS_KEY'] = params[:secret]
133
+ env_var['AWS_SECRET_KEY'] = params[:secret]
134
+ end
135
+
136
+ if params[:token]
137
+ env_var['AWS_SECURITY_TOKEN'] = params[:token]
138
+ env_var['AWS_SESSION_TOKEN'] = params[:token]
139
+ end
140
+ env_var
141
+ end
142
+
104
143
  # Verify Credentials are active and valid
105
144
  #
106
145
  # @param [String] key The aws_access_key_id
@@ -1,4 +1,4 @@
1
1
  module Awskeyring
2
2
  # The Gems version number
3
- VERSION = '0.9.0'.freeze
3
+ VERSION = '0.10.0'.freeze
4
4
  end
@@ -65,13 +65,19 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
65
65
 
66
66
  desc 'env ACCOUNT', I18n.t('env.desc')
67
67
  method_option 'no-token', type: :boolean, aliases: '-n', desc: I18n.t('method_option.notoken'), default: false
68
+ method_option 'unset', type: :boolean, aliases: '-u', desc: I18n.t('method_option.unset'), default: false
68
69
  # Print Env vars
69
70
  def env(account = nil)
70
- account = ask_check(
71
- existing: account, message: I18n.t('message.account'), validator: Awskeyring.method(:account_exists)
72
- )
73
- cred = age_check_and_get(account: account, no_token: options['no-token'])
74
- put_env_string(cred)
71
+ if options['unset']
72
+ put_env_string(account: nil, key: nil, secret: nil, token: nil)
73
+ else
74
+ account = ask_check(
75
+ existing: account, message: I18n.t('message.account'),
76
+ validator: Awskeyring.method(:account_exists)
77
+ )
78
+ cred = age_check_and_get(account: account, no_token: options['no-token'])
79
+ put_env_string(cred)
80
+ end
75
81
  end
76
82
 
77
83
  desc 'json ACCOUNT', I18n.t('json.desc')
@@ -100,7 +106,7 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
100
106
  exit 1
101
107
  end
102
108
  cred = age_check_and_get(account: account, no_token: options['no-token'])
103
- env_vars = env_vars(cred)
109
+ env_vars = Awskeyring::Awsapi.get_env_array(cred)
104
110
  begin
105
111
  pid = Process.spawn(env_vars, command.join(' '))
106
112
  Process.wait pid
@@ -419,27 +425,10 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
419
425
  self.class.all_commands[command].options.values.map(&:switch_name)
420
426
  end
421
427
 
422
- def env_vars(cred)
423
- env_var = {}
424
- env_var['AWS_DEFAULT_REGION'] = 'us-east-1' unless Awskeyring::Awsapi.region
425
- env_var['AWS_ACCOUNT_NAME'] = cred[:account]
426
- env_var['AWS_ACCESS_KEY_ID'] = cred[:key]
427
- env_var['AWS_ACCESS_KEY'] = cred[:key]
428
- env_var['AWS_SECRET_ACCESS_KEY'] = cred[:secret]
429
- env_var['AWS_SECRET_KEY'] = cred[:secret]
430
- if cred[:token]
431
- env_var['AWS_SECURITY_TOKEN'] = cred[:token]
432
- env_var['AWS_SESSION_TOKEN'] = cred[:token]
433
- end
434
- env_var
435
- end
436
-
437
428
  def put_env_string(cred)
438
- env_var = env_vars(cred)
429
+ env_var = Awskeyring::Awsapi.get_env_array(cred)
439
430
  env_var.each { |var, value| puts "export #{var}=\"#{value}\"" }
440
-
441
- puts 'unset AWS_SECURITY_TOKEN' unless cred[:token]
442
- puts 'unset AWS_SESSION_TOKEN' unless cred[:token]
431
+ Awskeyring::Awsapi::AWS_ENV_VARS.each { |key| puts "unset #{key}" unless env_var.key?(key) }
443
432
  end
444
433
 
445
434
  def ask_check(existing:, message:, secure: false, optional: false, validator: nil)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: awskeyring
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tristan Morgan
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-04-09 00:00:00.000000000 Z
11
+ date: 2019-04-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-iam