awskeyring 0.6.0 → 0.7.0
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 +4 -4
- data/CHANGELOG.md +8 -0
- data/Gemfile +9 -0
- data/awskeyring.gemspec +1 -9
- data/lib/awskeyring/version.rb +1 -1
- data/lib/awskeyring.rb +11 -3
- data/lib/awskeyring_command.rb +13 -19
- metadata +2 -104
- data/.gitignore +0 -10
- data/.rspec +0 -3
- data/.rubocop.yml +0 -22
- data/.travis.yml +0 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: acf4100ecde4dce232c8ab205879ba29569ca81a
|
4
|
+
data.tar.gz: 5ea4a9a1dc79b5aa67280a3c412caa455f044674
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2f84e0aeb24f28dcab583cb04b26700db189484e81e898df95e6dff02c33f4ff4e70397ae485594b2a8c07c5f5a5cd32d62b051f228316b77f3398f6b1227207
|
7
|
+
data.tar.gz: 902baf9cf05652cb081b126589d4e1763e1e65a5868d1c86ec59e375e38f6c5c3c9fbf5b52964717b8f0f931a58e01cfda484f4e3581aad5c614ea52368c9874
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## [v0.7.0](https://github.com/vibrato/awskeyring/tree/v0.7.0) (2018-11-26)
|
4
|
+
[Full Changelog](https://github.com/vibrato/awskeyring/compare/v0.6.0...v0.7.0)
|
5
|
+
|
6
|
+
**Implemented enhancements:**
|
7
|
+
|
8
|
+
- Validate existing account. [\#35](https://github.com/vibrato/awskeyring/pull/35) ([tristanmorgan](https://github.com/tristanmorgan))
|
9
|
+
- Swap Highline for Thor::LineEditor [\#34](https://github.com/vibrato/awskeyring/pull/34) ([tristanmorgan](https://github.com/tristanmorgan))
|
10
|
+
|
3
11
|
## [v0.6.0](https://github.com/vibrato/awskeyring/tree/v0.6.0) (2018-10-18)
|
4
12
|
[Full Changelog](https://github.com/vibrato/awskeyring/compare/v0.5.3...v0.6.0)
|
5
13
|
|
data/Gemfile
CHANGED
data/awskeyring.gemspec
CHANGED
@@ -13,21 +13,13 @@ Gem::Specification.new do |spec|
|
|
13
13
|
spec.homepage = 'https://github.com/vibrato/awskeyring'
|
14
14
|
spec.license = 'MIT'
|
15
15
|
|
16
|
-
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^spec/|^\..*}) }
|
17
17
|
spec.bindir = 'exe'
|
18
18
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
21
|
spec.add_dependency('aws-sdk-iam')
|
22
|
-
spec.add_dependency('highline')
|
23
22
|
spec.add_dependency('i18n')
|
24
23
|
spec.add_dependency('ruby-keychain')
|
25
24
|
spec.add_dependency('thor')
|
26
|
-
|
27
|
-
spec.add_development_dependency 'bundler'
|
28
|
-
spec.add_development_dependency 'github_changelog_generator'
|
29
|
-
spec.add_development_dependency 'rake'
|
30
|
-
spec.add_development_dependency 'rspec'
|
31
|
-
spec.add_development_dependency 'rubocop'
|
32
|
-
spec.add_development_dependency 'yard'
|
33
25
|
end
|
data/lib/awskeyring/version.rb
CHANGED
data/lib/awskeyring.rb
CHANGED
@@ -115,13 +115,12 @@ module Awskeyring # rubocop:disable Metrics/ModuleLength
|
|
115
115
|
#
|
116
116
|
# @param [String] role The role name to add
|
117
117
|
# @param [String] arn The arn of the role
|
118
|
-
|
119
|
-
def self.add_role(role:, arn:, account:)
|
118
|
+
def self.add_role(role:, arn:)
|
120
119
|
all_items.create(
|
121
120
|
label: ROLE_PREFIX + role,
|
122
121
|
account: arn,
|
123
122
|
password: '',
|
124
|
-
comment:
|
123
|
+
comment: ''
|
125
124
|
)
|
126
125
|
end
|
127
126
|
|
@@ -280,4 +279,13 @@ module Awskeyring # rubocop:disable Metrics/ModuleLength
|
|
280
279
|
puts message if message
|
281
280
|
role.delete
|
282
281
|
end
|
282
|
+
|
283
|
+
# Validate account exists
|
284
|
+
#
|
285
|
+
# @param [String] account_name the associated account name.
|
286
|
+
def self.account_exists(account_name)
|
287
|
+
raise 'Account does not exist' unless list_account_names.include?(account_name)
|
288
|
+
|
289
|
+
account_name
|
290
|
+
end
|
283
291
|
end
|
data/lib/awskeyring_command.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'highline'
|
2
1
|
require 'i18n'
|
3
2
|
require 'thor'
|
4
3
|
|
@@ -68,7 +67,7 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
68
67
|
# Print Env vars
|
69
68
|
def env(account = nil)
|
70
69
|
account = ask_check(
|
71
|
-
existing: account, message: I18n.t('message.account'), validator: Awskeyring
|
70
|
+
existing: account, message: I18n.t('message.account'), validator: Awskeyring.method(:account_exists)
|
72
71
|
)
|
73
72
|
cred = age_check_and_get(account: account, no_token: options['no-token'])
|
74
73
|
put_env_string(
|
@@ -84,7 +83,7 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
84
83
|
# Print JSON for use with credential_process
|
85
84
|
def json(account = nil)
|
86
85
|
account = ask_check(
|
87
|
-
existing: account, message: I18n.t('message.account'), validator: Awskeyring
|
86
|
+
existing: account, message: I18n.t('message.account'), validator: Awskeyring.method(:account_exists)
|
88
87
|
)
|
89
88
|
cred = age_check_and_get(account: account, no_token: options['no-token'])
|
90
89
|
expiry = Time.at(cred[:expiry]) unless cred[:expiry].nil?
|
@@ -149,7 +148,7 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
149
148
|
# Update an Account
|
150
149
|
def update(account = nil) # rubocop:disable Metrics/MethodLength
|
151
150
|
account = ask_check(
|
152
|
-
existing: account, message: I18n.t('message.account'), validator: Awskeyring
|
151
|
+
existing: account, message: I18n.t('message.account'), validator: Awskeyring.method(:account_exists)
|
153
152
|
)
|
154
153
|
key = ask_check(
|
155
154
|
existing: options[:key], message: I18n.t('message.key'), validator: Awskeyring::Validate.method(:access_key)
|
@@ -171,7 +170,7 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
171
170
|
desc 'add-role ROLE', I18n.t('add_role.desc')
|
172
171
|
method_option :arn, type: :string, aliases: '-a', desc: I18n.t('method_option.arn')
|
173
172
|
# Add a role
|
174
|
-
def add_role(role = nil)
|
173
|
+
def add_role(role = nil)
|
175
174
|
role = ask_check(
|
176
175
|
existing: role, message: I18n.t('message.role'),
|
177
176
|
validator: Awskeyring::Validate.method(:role_name)
|
@@ -180,15 +179,10 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
180
179
|
existing: options[:arn], message: I18n.t('message.arn'),
|
181
180
|
validator: Awskeyring::Validate.method(:role_arn)
|
182
181
|
)
|
183
|
-
account = ask_check(
|
184
|
-
existing: account, message: I18n.t('message.account'),
|
185
|
-
optional: true, validator: Awskeyring::Validate.method(:account_name)
|
186
|
-
)
|
187
182
|
|
188
183
|
Awskeyring.add_role(
|
189
184
|
role: role,
|
190
|
-
arn: arn
|
191
|
-
account: account
|
185
|
+
arn: arn
|
192
186
|
)
|
193
187
|
puts I18n.t('message.addrole', role: role)
|
194
188
|
end
|
@@ -197,7 +191,7 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
197
191
|
# Remove an account
|
198
192
|
def remove(account = nil)
|
199
193
|
account = ask_check(
|
200
|
-
existing: account, message: I18n.t('message.account'), validator: Awskeyring
|
194
|
+
existing: account, message: I18n.t('message.account'), validator: Awskeyring.method(:account_exists)
|
201
195
|
)
|
202
196
|
Awskeyring.delete_account(account: account, message: I18n.t('message.delaccount', account: account))
|
203
197
|
end
|
@@ -206,7 +200,7 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
206
200
|
# remove a session token
|
207
201
|
def remove_token(account = nil)
|
208
202
|
account = ask_check(
|
209
|
-
existing: account, message: I18n.t('message.account'), validator: Awskeyring
|
203
|
+
existing: account, message: I18n.t('message.account'), validator: Awskeyring.method(:account_exists)
|
210
204
|
)
|
211
205
|
Awskeyring.delete_token(account: account, message: I18n.t('message.deltoken', account: account))
|
212
206
|
end
|
@@ -225,7 +219,7 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
225
219
|
# rotate Account keys
|
226
220
|
def rotate(account = nil) # rubocop:disable Metrics/MethodLength
|
227
221
|
account = ask_check(
|
228
|
-
existing: account, message: I18n.t('message.account'), validator: Awskeyring
|
222
|
+
existing: account, message: I18n.t('message.account'), validator: Awskeyring.method(:account_exists)
|
229
223
|
)
|
230
224
|
cred = Awskeyring.get_valid_creds(account: account, no_token: true)
|
231
225
|
|
@@ -257,7 +251,7 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
257
251
|
# generate a sessiopn token
|
258
252
|
def token(account = nil, role = nil, code = nil) # rubocop:disable all
|
259
253
|
account = ask_check(
|
260
|
-
existing: account, message: I18n.t('message.account'), validator: Awskeyring
|
254
|
+
existing: account, message: I18n.t('message.account'), validator: Awskeyring.method(:account_exists)
|
261
255
|
)
|
262
256
|
role ||= options[:role]
|
263
257
|
if role
|
@@ -314,7 +308,7 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
314
308
|
# Open the AWS Console
|
315
309
|
def console(account = nil) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
316
310
|
account = ask_check(
|
317
|
-
existing: account, message: I18n.t('message.account'), validator: Awskeyring
|
311
|
+
existing: account, message: I18n.t('message.account'), validator: Awskeyring.method(:account_exists)
|
318
312
|
)
|
319
313
|
cred = age_check_and_get(account: account, no_token: options['no-token'])
|
320
314
|
|
@@ -467,11 +461,11 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
467
461
|
|
468
462
|
def ask(message:, secure: false, optional: false)
|
469
463
|
if secure
|
470
|
-
|
464
|
+
Thor::LineEditor.readline(message.rjust(20) + ': ', echo: false)
|
471
465
|
elsif optional
|
472
|
-
|
466
|
+
Thor::LineEditor.readline((message + ' (optional)').rjust(20) + ': ')
|
473
467
|
else
|
474
|
-
|
468
|
+
Thor::LineEditor.readline(message.rjust(20) + ': ')
|
475
469
|
end
|
476
470
|
end
|
477
471
|
end
|
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.
|
4
|
+
version: 0.7.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: 2018-
|
11
|
+
date: 2018-11-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-iam
|
@@ -24,20 +24,6 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: highline
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: i18n
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,90 +66,6 @@ dependencies:
|
|
80
66
|
- - ">="
|
81
67
|
- !ruby/object:Gem::Version
|
82
68
|
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: bundler
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: github_changelog_generator
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: rake
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - ">="
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - ">="
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: rspec
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - ">="
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '0'
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - ">="
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: '0'
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: rubocop
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
142
|
-
requirements:
|
143
|
-
- - ">="
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
version: '0'
|
146
|
-
type: :development
|
147
|
-
prerelease: false
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
149
|
-
requirements:
|
150
|
-
- - ">="
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
version: '0'
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: yard
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
156
|
-
requirements:
|
157
|
-
- - ">="
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
version: '0'
|
160
|
-
type: :development
|
161
|
-
prerelease: false
|
162
|
-
version_requirements: !ruby/object:Gem::Requirement
|
163
|
-
requirements:
|
164
|
-
- - ">="
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: '0'
|
167
69
|
description: Manages AWS credentials in the macOS keychain
|
168
70
|
email:
|
169
71
|
- tristan@vibrato.com.au
|
@@ -172,10 +74,6 @@ executables:
|
|
172
74
|
extensions: []
|
173
75
|
extra_rdoc_files: []
|
174
76
|
files:
|
175
|
-
- ".gitignore"
|
176
|
-
- ".rspec"
|
177
|
-
- ".rubocop.yml"
|
178
|
-
- ".travis.yml"
|
179
77
|
- CHANGELOG.md
|
180
78
|
- CODE_OF_CONDUCT.md
|
181
79
|
- Gemfile
|
data/.gitignore
DELETED
data/.rspec
DELETED
data/.rubocop.yml
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
---
|
2
|
-
Metrics/LineLength:
|
3
|
-
Max: 120
|
4
|
-
|
5
|
-
Metrics/MethodLength:
|
6
|
-
Max: 16
|
7
|
-
|
8
|
-
Metrics/BlockLength:
|
9
|
-
Exclude:
|
10
|
-
- spec/**/*
|
11
|
-
|
12
|
-
Metrics/AbcSize:
|
13
|
-
Max: 20
|
14
|
-
|
15
|
-
Bundler/GemComment:
|
16
|
-
Enabled: false
|
17
|
-
Include:
|
18
|
-
- Gemfile
|
19
|
-
|
20
|
-
AllCops:
|
21
|
-
Exclude:
|
22
|
-
- bin/*
|
data/.travis.yml
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
---
|
2
|
-
language: ruby
|
3
|
-
os: osx
|
4
|
-
rvm:
|
5
|
-
- 2.3.3
|
6
|
-
- 2.3.7
|
7
|
-
before_install: gem install bundler
|
8
|
-
notifications:
|
9
|
-
slack:
|
10
|
-
secure: "okKLlQ93ogj8ut18MZazQD63XTIzCpTfneYQMlKPaLU5HnooAkUFmEpSN8ig\
|
11
|
-
TJD0GuEQ7Jf8+BkFlhECWl1FwtzIW6z/yMadiiLwY6qA/O1ZVVYZmkS4kpcKtCMrvO0Hf3iPL\
|
12
|
-
XpJX0sQGfGsMsho6NZuNs0dzlrr4+HX/cEGmDXBocDDxdv2d25HzHtqt4l+4axeJ+PJdHDmYl\
|
13
|
-
DzhtMAXhkGoPfzws7MPvkVcqY0eZRW2WqccO52zlQrBNcphp7BI8mLTW/BwkEY9YndJf2xoBa\
|
14
|
-
oEOuaIJbGgHbmskGMRui3vZnd08/fiWkNsCI/EhB5BDJ41bwobsHEtuqu+Qx92kI+hzjtU4D1\
|
15
|
-
6k1v/6HDm61T6gh6BTp0QEXJeOkiecjVGyzrMlBf5BEyIB7JfLvGPa7RUbvvvUxFGcEtnSbUZ\
|
16
|
-
49cXAG7cKiiSgcNOocCrMNIRAe864Tm606Mud1RbOv8tEiS9BJ96ktOpOfvrYPyYMRFTte2gR\
|
17
|
-
LwNDwcpXIWTI39CXD2EBxSfRK/OqmggLYMG5AKhxyS/Vl7E2p9gii6syB0LnpFBIZ6t+OSve7\
|
18
|
-
fZtCU/wruC5IrI/vHtWfApvADYKsXG6FEYJoJ1LsCDjIRlrkwV1dEVsp/HSSO6zRh9KhJ3b7y\
|
19
|
-
zL97Dyi6dCi+nM7aKGrox/8kvcn9alrdRt8sz3c="
|