aws-keychain-util 0.0.12 → 0.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 27605c262ccf5d07a36f56918a04d4b9c3f012ad
4
- data.tar.gz: 8790d93d8bc976e41cf132fb9724f88a38917181
3
+ metadata.gz: 90edd8647b398a66b149ca02c9d6790b6e7d6a1e
4
+ data.tar.gz: 9dfa7feb0b5fe3b00147704f9135fdc89a724cef
5
5
  SHA512:
6
- metadata.gz: 40cbeceef571c407749c645ee1fb72b748dddee8564a13c58406282da439dd6dbbcf6e5721ab705945ada9b0b59d9f2d5c1380fee7895955fb4b3a5db661cb51
7
- data.tar.gz: 523a878f9f686ce5ef81e409957cfc778a40813584d0340f0ecfc12af07c26c20d540b0d0d5817b2e94ba813ffd09f51192a747da7a0413c7084044426a59d02
6
+ metadata.gz: 0478d2ca301dda7bf6866bf4c237caf9b01bec3f8934de48422e3b1a202d23f31f47ce0595b9764603fd9aba70e83656d7a44384dcc080d211e2c2d084b2d6cc
7
+ data.tar.gz: d6ba9c8718e9c7a4ddbc7a11502a00c430eb35006d134005336010667f62ffea3acf37e1d546639aee9aa9fcc3b4f86754d8f5bfa033b2c9a0c30bc92e66d1a9
data/.rubocop.yml ADDED
@@ -0,0 +1,7 @@
1
+ Metrics/LineLength:
2
+ Max: 120
3
+
4
+ AllCops:
5
+ Includes:
6
+ - Rakefile
7
+
data/README.md CHANGED
@@ -53,15 +53,29 @@ you can source into your shell:
53
53
 
54
54
  $ aws-creds env <name>
55
55
 
56
+ If you want to load the credentials into your *current* shell, add a function
57
+ like this to your `.bashrc`:
58
+
59
+ aws-shell() { eval "$(/usr/bin/env aws-creds env $@)"; }
60
+
61
+ Then, you can use `aws-shell <name>`. This can be slightly more convenient as
62
+ you keep shell history around.
63
+
56
64
  To always load the given environment in your shell, add the following to
57
65
  your .bashrc or .zshrc
58
66
 
59
- source `aws-creds env <name>`
67
+ eval "$(aws-creds env <name>)"
60
68
 
61
69
  To automatically grab AWS credentials from your keychain when using
62
70
  the aws-sdk gem, add the following code:
63
71
 
64
- AWS.config(:credential_provider => AwsKeychainUtil::CredentialProvider.new('<name>', 'keychain name'))
72
+ require 'aws-keychain-util/credential_provider'
73
+ Aws.config[:credentials] = AwsKeychainUtil::CredentialProvider.new('<name>', 'keychain name')
74
+
75
+ To remove an item from your aws keychain:
76
+
77
+ $ aws-creds rm <name>
78
+
65
79
 
66
80
  ## AWS Multi-Factor Authentication (MFA)
67
81
 
@@ -86,6 +100,27 @@ The tool also tracks mfa expiration, and automatically removes expired tokens wh
86
100
  or source your env.
87
101
 
88
102
 
103
+ ## AWS Assume Role credentials
104
+
105
+ It's also possible assume a role that specifies a set of permissions that you can use to access
106
+ AWS resources that you need for a limited time. The role can be in your own account or any other AWS account.
107
+
108
+ For information about how to create and configure Roles, see
109
+ IAM Roles[Here](http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html)
110
+
111
+ In order to configure a role run:
112
+
113
+ $ aws-creds add-role <name>
114
+
115
+ Then to assume a role, you need to run:
116
+
117
+ $ aws-creds assume-role <name> <role-name>
118
+
119
+ Then you just need to either open a fresh shell for the `<name>` key or re-source your environment.
120
+
121
+ The tool also tracks role expiration, and automatically removes expired tokens when you open a new shell
122
+ or source your env.
123
+
89
124
  ## Security
90
125
 
91
126
  Unfortunately, when Keychain whitelists either the `aws-creds` script
data/Rakefile CHANGED
@@ -1 +1,6 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler/gem_tasks'
2
+ require 'rubocop/rake_task'
3
+
4
+ RuboCop::RakeTask.new do |rubocop|
5
+ rubocop.options = ['-D']
6
+ end
@@ -3,20 +3,22 @@ lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |gem|
6
- gem.name = "aws-keychain-util"
7
- gem.version = '0.0.12'
8
- gem.authors = ["Zach Wily"]
9
- gem.email = ["zach@zwily.com"]
10
- gem.description = %q{Helps manage a keychain of AWS credentials on OS X.}
11
- gem.summary = %q{Helps manage a keychain of AWS credentials on OS X.}
12
- gem.homepage = ""
6
+ gem.name = 'aws-keychain-util'
7
+ gem.version = '0.0.13'
8
+ gem.authors = ['Zach Wily']
9
+ gem.email = ['zach@zwily.com']
10
+ gem.description = 'Helps manage a keychain of AWS credentials on OS X.'
11
+ gem.summary = 'Helps manage a keychain of AWS credentials on OS X.'
12
+ gem.homepage = ''
13
13
 
14
- gem.files = `git ls-files`.split($/)
15
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
14
+ gem.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
15
+ gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
16
16
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
17
- gem.require_paths = ["lib"]
17
+ gem.require_paths = ['lib']
18
18
 
19
19
  gem.add_dependency('ruby-keychain', '~> 0.2.0')
20
20
  gem.add_dependency('highline')
21
- gem.add_dependency('aws-sdk-v1')
21
+ gem.add_dependency('aws-sdk', '> 2.0')
22
+ gem.add_development_dependency 'rubocop'
23
+ gem.add_development_dependency 'rake'
22
24
  end
data/bin/aws-creds CHANGED
@@ -1,15 +1,22 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- if $0 == "bin/aws-creds"
4
- $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__)) + "/../lib")
3
+ if $PROGRAM_NAME == 'bin/aws-creds'
4
+ $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__)) + '/../lib')
5
5
  end
6
6
 
7
7
  require 'rubygems'
8
8
  require 'highline'
9
9
  require 'keychain'
10
10
  require 'json'
11
- require 'aws-keychain-util'
12
- require 'aws-sdk-v1'
11
+ require 'aws_keychain_util'
12
+ require 'aws-sdk'
13
+
14
+ trap('SIGINT') do
15
+ puts
16
+ $stderr.puts "\nExecution aborted."
17
+ puts
18
+ exit 1
19
+ end
13
20
 
14
21
  def ask(question)
15
22
  HighLine.new.ask(question)
@@ -22,53 +29,74 @@ end
22
29
  def load_keychain
23
30
  keychain = AwsKeychainUtil.load_keychain
24
31
  if keychain && keychain.lock_interval > 300
25
- $stderr.puts "Your keychain is *not* set to lock automatically in under five minutes. This could be dangerous."
26
- if !File.exist? AwsKeychainUtil::PREFS_FILE
27
- $stderr.puts "You should probably run `#{$0} init` to create a new, secure keychain."
32
+ $stderr.puts 'Your keychain is *not* set to lock automatically in under five minutes. This could be dangerous.'
33
+ unless File.exist? AwsKeychainUtil::PREFS_FILE
34
+ $stderr.puts "You should probably run `#{$PROGRAM_NAME} init` to create a new, secure keychain."
28
35
  end
29
36
  end
30
37
  keychain
31
38
  end
32
39
 
33
40
  def get_item(name)
34
- load_keychain.generic_passwords.where(:label => name).first
41
+ load_keychain.generic_passwords.where(label: name).first
42
+ end
43
+
44
+ def delete_expired(key, token)
45
+ expires_at = Time.at(key.attributes[:comment].to_i)
46
+ if expires_at < Time.now
47
+ delete_pair(key, token, '# Removing expired STS credentials')
48
+ key = nil
49
+ token = nil
50
+ end
51
+ [key, token]
52
+ end
53
+
54
+ def delete_pair(key, token, message)
55
+ puts message
56
+ token.delete if token
57
+ key.delete if key
35
58
  end
36
59
 
37
60
  def get_name_from_args_for_command(command)
38
- if ARGV.length < 1
39
- puts "Usage: #{$0} #{command} <name>"
61
+ if ARGV.empty?
62
+ puts "Usage: #{$PROGRAM_NAME} #{command} <name>"
40
63
  exit 1
41
64
  end
42
65
  ARGV.shift
43
66
  end
44
67
 
68
+ def get_valid_item(name)
69
+ item = get_item(name)
70
+ unless item
71
+ puts "Could not find item with name #{name}"
72
+ exit 1
73
+ end
74
+ item
75
+ end
76
+
45
77
  def get_item_from_args_for_command(command)
46
78
  name = get_name_from_args_for_command(command)
79
+
80
+ role_key = get_item("#{name} role-key")
81
+ role_token = get_item("#{name} role-token")
82
+ role_key, role_token = delete_expired(role_key, role_token) if role_key
83
+
47
84
  item_mfa = get_item("#{name} mfa")
48
85
  item_token = get_item("#{name} token")
49
- if item_mfa
50
- if item_mfa.attributes[:comment]
51
- expires_at = Time.at(item_mfa.attributes[:comment].to_i)
52
- if expires_at < Time.now
53
- puts "# Removing expired STS credentials"
54
- item_token.delete
55
- item_token = nil
56
- item_mfa.delete
57
- item_mfa = nil
58
- end
59
- end
86
+ item_mfa, item_token = delete_expired(item_mfa, item_token) if item_mfa
87
+
88
+ if role_key && role_token
89
+ puts '# Using temporary STS role credentials'
90
+ return role_key, role_token
60
91
  end
61
- if item_mfa and item_token
62
- puts "# Using temporary STS credentials"
92
+
93
+ if item_mfa && item_token
94
+ puts '# Using temporary STS credentials'
63
95
  return item_mfa, item_token
64
96
  end
65
97
 
66
- item = get_item(name)
67
- unless item
68
- puts "Could not find item with name #{name}"
69
- exit 1
70
- end
71
- return item, nil
98
+ item = get_valid_item(name)
99
+ [item, nil]
72
100
  end
73
101
 
74
102
  command = ARGV.shift
@@ -81,107 +109,182 @@ when 'init'
81
109
  end
82
110
 
83
111
  name = ask("Name for AWS keychain (default: 'aws'): ")
84
- name = "aws" if name == ""
112
+ name = 'aws' if name == ''
85
113
 
86
114
  shell_arguments = ask("Shell arguments (default: '--login'): ")
87
- shell_arguments = "--login" if shell_arguments == ""
115
+ shell_arguments = '--login' if shell_arguments == ''
88
116
 
89
- puts "The OS will now ask you for a password to protect your keychain. Choose wisely."
117
+ puts 'The OS will now ask you for a password to protect your keychain. Choose wisely.'
90
118
  keychain = Keychain.create(name)
91
119
  keychain.lock_interval = 300
92
120
  keychain.lock_on_sleep = true
93
121
 
94
122
  $prefs = { 'aws_keychain_name' => name, 'shell_arguments' => shell_arguments }
95
- File.new(AwsKeychainUtil::PREFS_FILE, "w").write JSON.dump($prefs)
123
+ File.new(AwsKeychainUtil::PREFS_FILE, 'w').write JSON.dump($prefs)
96
124
 
97
- puts "Your AWS keychain has been created and configured to auto-lock after"
98
- puts "5 minutes, and when sleeping. You can change those options in"
99
- puts "Keychain Access."
125
+ puts 'Your AWS keychain has been created and configured to auto-lock after'
126
+ puts '5 minutes, and when sleeping. You can change those options in'
127
+ puts 'Keychain Access.'
100
128
  puts
101
- puts "You can now add accounts to the keychain with:"
102
- puts " #{$0} add"
129
+ puts 'You can now add accounts to the keychain with:'
130
+ puts " #{$PROGRAM_NAME} add"
103
131
 
104
132
  when 'ls'
105
133
  keychain = load_keychain
106
- keychain.generic_passwords.all.sort {|a,b|
134
+ items = keychain.generic_passwords.all.sort do |a, b|
107
135
  a.attributes[:label] <=> b.attributes[:label]
108
- }.each do |item|
136
+ end
137
+ items.each do |item|
109
138
  puts " #{item.attributes[:label]}"
110
139
  end
111
140
 
112
141
  when 'add'
113
142
  keychain = load_keychain
114
- name = ask(" account name: ")
115
- account = ask(" access key id: ")
116
- password = ask_secure(" secret_access_key: ")
117
- arn = ask(" mfa arn: ")
143
+ name = ask(' account name: ')
144
+ account = ask(' access key id: ')
145
+ password = ask_secure(' secret_access_key: ')
146
+ arn = ask(' mfa arn: ')
118
147
 
119
148
  item = keychain.generic_passwords.create(
120
- :label => name,
121
- :account => account,
122
- :password => password,
123
- :comment => arn
149
+ label: name,
150
+ account: account,
151
+ password: password,
152
+ comment: arn
124
153
  )
125
154
 
126
155
  when 'cat'
127
156
  item, token = get_item_from_args_for_command('cat')
128
157
  puts "AWS_ACCESS_KEY_ID=#{item.attributes[:account]}"
129
158
  puts "AWS_SECRET_ACCESS_KEY=#{item.password}"
130
- if token
131
- puts "AWS_SECURITY_TOKEN=#{token.password}"
132
- end
159
+ puts "AWS_SECURITY_TOKEN=#{token.password}" if token
133
160
 
134
161
  when 'rm'
135
162
  item, token = get_item_from_args_for_command('rm')
136
- item.delete
163
+ delete_pair(item, token, '# Removing credentials')
164
+
165
+ when 'add-role'
166
+ keychain = load_keychain
167
+ name = get_name_from_args_for_command('add-role')
168
+ item = get_valid_item(name)
169
+
170
+ role = ask(' role name: ')
171
+ arn = ask(' role arn: ')
172
+
173
+ keychain.generic_passwords.create(
174
+ label: "#{name} role #{role}",
175
+ account: role,
176
+ password: '',
177
+ comment: arn
178
+ )
179
+
180
+ when 'assume-role'
181
+ keychain = load_keychain
182
+ name = ARGV.shift
183
+ role_name = ARGV.shift
184
+ code = ARGV.shift
185
+
186
+ unless name
187
+ puts "Usage: #{$PROGRAM_NAME} assume-role <name> <role-name> [<mfa>]"
188
+ exit 1
189
+ end
190
+
191
+ item = get_valid_item(name)
192
+
193
+ role_key = get_item("#{name} role-key")
194
+ role_token = get_item("#{name} role-token")
195
+ delete_pair(role_key, role_token, '# Removing STS role credentials') if role_key
196
+
197
+ sts_item = get_item("#{name} mfa")
198
+ sts_token = get_item("#{name} token")
199
+ delete_pair(sts_item, sts_token, '# Removing STS credentials') if sts_item
200
+
201
+ exit 0 if 'none' == role_name || role_name.nil?
202
+
203
+ item_role = get_valid_item("#{name} role #{role_name}")
204
+
205
+ sts = Aws::STS::Client.new(access_key_id: item.attributes[:account], secret_access_key: item.password)
206
+
207
+ begin
208
+ if code
209
+ response = sts.assume_role(duration_seconds: (60 * 60 * 1),
210
+ role_arn: item_role.attributes[:comment],
211
+ role_session_name: item_role.attributes[:account],
212
+ serial_number: item.attributes[:comment],
213
+ token_code: code)
214
+ else
215
+ response = sts.assume_role(duration_seconds: (60 * 60 * 1),
216
+ role_arn: item_role.attributes[:comment],
217
+ role_session_name: item_role.attributes[:account])
218
+ end
219
+ keychain.generic_passwords.create(label: "#{name} role-key",
220
+ account: response.credentials[:access_key_id],
221
+ password: response.credentials[:secret_access_key],
222
+ comment: response.credentials[:expiration].to_i.to_s)
223
+ keychain.generic_passwords.create(label: "#{name} role-token",
224
+ account: "#{response.credentials[:access_key_id]}_token",
225
+ password: response.credentials[:session_token],
226
+ comment: "#{name} role #{role_name}")
227
+
228
+ puts "AssumeRoleAuthentication succeeded, expiration is #{response.credentials[:expiration]}"
229
+ rescue Aws::STS::Errors::AccessDenied => e
230
+ puts e.to_s
231
+ end
137
232
 
138
233
  when 'mfa'
139
234
  keychain = load_keychain
140
235
  item_name = ARGV.shift
141
236
  code = ARGV.shift
142
- if not item_name or not code
143
- puts "Usage: aws-creds mfa <item-name> <mfa-code>"
144
- exit(1)
237
+ if !item_name || !code
238
+ puts "Usage: #{$PROGRAM_NAME} mfa <name> <mfa-code>"
239
+ exit 1
145
240
  end
146
241
 
242
+ role_key = get_item("#{item_name} role-key")
243
+ role_token = get_item("#{item_name} role-token")
244
+ delete_pair(role_key, role_token, '# Removing STS role credentials')
245
+
147
246
  sts_item = get_item("#{item_name} mfa")
148
247
  sts_token = get_item("#{item_name} token")
149
- if sts_item
150
- puts "Removing existing STS credentials"
151
- sts_item.delete
152
- sts_token.delete if sts_token
153
- end
248
+ delete_pair(sts_item, sts_token, '# Removing STS credentials')
154
249
 
155
250
  item, token = get_item(item_name)
156
- sts = AWS::STS.new(:access_key_id => item.attributes[:account], :secret_access_key => item.password)
251
+ sts = Aws::STS::Client.new(access_key_id: item.attributes[:account],
252
+ secret_access_key: item.password)
157
253
  begin
158
- response = sts.new_session(:duration => (60 * 60 * 12), :serial_number => item.attributes[:comment], :token_code => code)
159
- temp_item = keychain.generic_passwords.create(:label => "#{item_name} mfa",
160
- :account => response.credentials[:access_key_id],
161
- :password=> response.credentials[:secret_access_key],
162
- :comment => response.expires_at.to_i.to_s)
163
- temp_token = keychain.generic_passwords.create(:label => "#{item_name} token",
164
- :account => "#{response.credentials[:access_key_id]}_token",
165
- :password=> response.credentials[:session_token],
166
- :comment => response.expires_at.to_i.to_s)
167
-
168
- puts "MultiFactorAuthentication succeeded, expiration is #{response.expires_at}"
169
- rescue AWS::STS::Errors::AccessDenied => e
254
+ response = sts.get_session_token(duration_seconds: (60 * 60 * 12),
255
+ serial_number: item.attributes[:comment],
256
+ token_code: code)
257
+ keychain.generic_passwords.create(label: "#{item_name} mfa",
258
+ account: response.credentials[:access_key_id],
259
+ password: response.credentials[:secret_access_key],
260
+ comment: response.credentials[:expiration].to_i.to_s)
261
+ keychain.generic_passwords.create(label: "#{item_name} token",
262
+ account: "#{response.credentials[:access_key_id]}_token",
263
+ password: response.credentials[:session_token],
264
+ comment: "#{item_name} mfa")
265
+
266
+ puts "MultiFactorAuthentication succeeded, expiration is #{response.credentials[:expiration]}"
267
+ rescue Aws::STS::Errors::AccessDenied => e
170
268
  puts e.to_s
171
269
  end
172
270
 
173
271
  when 'env'
174
- item, token = get_item_from_args_for_command('shell')
272
+ item, token = get_item_from_args_for_command('env')
175
273
  key = item.password
176
274
  puts "export AWS_ACCESS_KEY_ID=\"#{item.attributes[:account]}\""
177
275
  puts "export AWS_ACCESS_KEY=\"#{item.attributes[:account]}\""
178
276
  puts "export AWS_SECRET_ACCESS_KEY=\"#{key}\""
179
277
  puts "export AWS_SECRET_KEY=\"#{key}\""
180
- puts "export RPROMPT=\"(aws #{item.attributes[:label]})\""
181
- puts "export AWS_CREDS_NAME=\"#{item.attributes[:label]}\""
182
278
  if token
279
+ puts "export RPROMPT=\"(aws #{token.attributes[:comment]})\""
280
+ puts "export AWS_CREDS_NAME=\"#{token.attributes[:comment]}\""
183
281
  puts "export AWS_SECURITY_TOKEN=\"#{token.password}\""
184
282
  puts "export AWS_SESSION_TOKEN=\"#{token.password}\""
283
+ else
284
+ puts "export RPROMPT=\"(aws #{item.attributes[:label]})\""
285
+ puts "export AWS_CREDS_NAME=\"#{item.attributes[:label]}\""
286
+ puts 'unset AWS_SECURITY_TOKEN'
287
+ puts 'unset AWS_SESSION_TOKEN'
185
288
  end
186
289
 
187
290
  when 'shell'
@@ -196,13 +299,16 @@ when 'shell'
196
299
  aws_env = {}
197
300
  aws_env['AWS_ACCESS_KEY_ID'] = aws_env['AWS_ACCESS_KEY'] = item.attributes[:account]
198
301
  aws_env['AWS_SECRET_ACCESS_KEY'] = aws_env['AWS_SECRET_KEY'] = item.password
199
- aws_env['AWS_CREDS_NAME'] = item.attributes[:label]
200
302
  if token
303
+ aws_env['AWS_CREDS_NAME'] = token.attributes[:comment]
201
304
  aws_env['AWS_SECURITY_TOKEN'] = aws_env['AWS_SESSION_TOKEN'] = token.password
305
+ else
306
+ aws_env['AWS_CREDS_NAME'] = item.attributes[:label]
202
307
  end
203
308
 
204
309
  if ARGV.empty?
205
310
  aws_env['RPROMPT'] = "(aws #{item.attributes[:label]})" # zsh only
311
+
206
312
  if prefs['shell_arguments']
207
313
  exec(aws_env, ENV['SHELL'], prefs['shell_arguments'])
208
314
  else
@@ -213,6 +319,6 @@ when 'shell'
213
319
  end
214
320
 
215
321
  else
216
- puts "Usage: #{$0} <command> <arguments>"
217
- puts " Commands: init, ls, add, cat, env, mfa, rm, shell"
322
+ puts "Usage: #{$PROGRAM_NAME} <command> <arguments>"
323
+ puts ' Commands: init, ls, add, add-role, assume-role, cat, env, mfa, rm, shell'
218
324
  end
@@ -3,23 +3,21 @@ require 'keychain'
3
3
  require 'aws-keychain-util'
4
4
 
5
5
  module AwsKeychainUtil
6
+ # class to automatically grab AWS credentials from your keychain
6
7
  class CredentialProvider
7
- include AWS::Core::CredentialProviders::Provider
8
+ include Aws::CredentialProvider
8
9
 
9
10
  attr_reader :item, :keychain
10
11
 
11
12
  def initialize(item = 'AWS', keychain = nil)
12
- @item, @keychain = item, keychain
13
+ @item = item
14
+ @keychain = keychain
13
15
  end
14
16
 
15
- def get_credentials
17
+ def credentials
16
18
  keychain = @keychain ? Keychain.open(@keychain) : AwsKeychainUtil.load_keychain
17
- item = keychain.generic_passwords.where(:label => @item).first
18
- return {} unless item
19
- {
20
- access_key_id: item.attributes[:account],
21
- secret_access_key: item.password
22
- }
19
+ item = keychain.generic_passwords.where(label: @item).first
20
+ Aws::Credentials.new(item.attributes[:account], item.password)
23
21
  end
24
22
  end
25
23
  end
@@ -1,5 +1,6 @@
1
+ # Utility class to hold runtime config.
1
2
  module AwsKeychainUtil
2
- PREFS_FILE = File.expand_path "~/.aws-keychain-util"
3
+ PREFS_FILE = File.expand_path '~/.aws-keychain-util'
3
4
 
4
5
  def self.load_keychain
5
6
  name = prefs['aws_keychain_name']
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-keychain-util
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zach Wily
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-31 00:00:00.000000000 Z
11
+ date: 2017-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby-keychain
@@ -39,13 +39,41 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: aws-sdk-v1
42
+ name: aws-sdk
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rubocop
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - ">="
46
60
  - !ruby/object:Gem::Version
47
61
  version: '0'
48
- type: :runtime
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
49
77
  prerelease: false
50
78
  version_requirements: !ruby/object:Gem::Requirement
51
79
  requirements:
@@ -61,14 +89,15 @@ extensions: []
61
89
  extra_rdoc_files: []
62
90
  files:
63
91
  - ".gitignore"
92
+ - ".rubocop.yml"
64
93
  - Gemfile
65
94
  - LICENSE.txt
66
95
  - README.md
67
96
  - Rakefile
68
97
  - aws-keychain-util.gemspec
69
98
  - bin/aws-creds
70
- - lib/aws-keychain-util.rb
71
99
  - lib/aws-keychain-util/credential_provider.rb
100
+ - lib/aws_keychain_util.rb
72
101
  homepage: ''
73
102
  licenses: []
74
103
  metadata: {}
@@ -93,4 +122,3 @@ signing_key:
93
122
  specification_version: 4
94
123
  summary: Helps manage a keychain of AWS credentials on OS X.
95
124
  test_files: []
96
- has_rdoc: