awskeyring 1.8.3 → 1.8.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/Rakefile +1 -1
- data/i18n/en.yml +0 -1
- data/lib/awskeyring/version.rb +1 -1
- data/lib/awskeyring_command.rb +59 -58
- data/man/awskeyring.5 +1 -4
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d6214486cc6877ca62ed23c40f01636f0f5bd726f7d7fdd9dd7f310ec87da84
|
4
|
+
data.tar.gz: fede3a531c42bab12951bb316e8f4c0f9c3d383f60121c4993359013422fb6b4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f23bed2643e3ab8f288ff690f20f540b8486a9aca792ff362696bf867009d36d874391f13b936cc1808a9908f1f16617d2fe81073e08c6620f0997835e653cb3
|
7
|
+
data.tar.gz: a9732e12755c7465545bdcd59a982f446a33e42988de10158a4db977c4d8fc5a8a391d6c55c67b835fb6af749dd3e77dfef1d335b04fa6683a6df1ce0a36d227
|
data/README.md
CHANGED
@@ -91,7 +91,7 @@ There are also short forms of most commands if you prefer:
|
|
91
91
|
|
92
92
|
To set your environment easily the following bash function helps:
|
93
93
|
|
94
|
-
awsenv() { eval "$(awskeyring env
|
94
|
+
awsenv() { eval "$(awskeyring env ${@:-$AWS_ACCOUNT_NAME})"; }
|
95
95
|
|
96
96
|
## Development
|
97
97
|
|
data/Rakefile
CHANGED
data/i18n/en.yml
CHANGED
data/lib/awskeyring/version.rb
CHANGED
data/lib/awskeyring_command.rb
CHANGED
@@ -17,17 +17,13 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
17
17
|
|
18
18
|
map %w[--version -v] => :__version
|
19
19
|
map %w[--help -h] => :help
|
20
|
-
map 'init' => :initialise
|
21
20
|
map 'adr' => :add_role
|
22
|
-
map '
|
21
|
+
map 'assume-role' => :token
|
23
22
|
map 'ls' => :list
|
24
23
|
map 'lsr' => :list_role
|
25
24
|
map 'rm' => :remove
|
26
25
|
map 'rmr' => :remove_role
|
27
26
|
map 'rmt' => :remove_token
|
28
|
-
map 'rot' => :rotate
|
29
|
-
map 'tok' => :token
|
30
|
-
map 'up' => :update
|
31
27
|
default_command :default
|
32
28
|
|
33
29
|
# default to returning an error on failure.
|
@@ -91,9 +87,8 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
91
87
|
puts Awskeyring.list_account_names.join("\n")
|
92
88
|
end
|
93
89
|
|
94
|
-
map 'list-role' => :list_role
|
95
90
|
desc 'list-role', I18n.t('list_role_desc')
|
96
|
-
method_option
|
91
|
+
method_option :detail, type: :boolean, aliases: '-d', desc: I18n.t('method_option.detail'), default: false
|
97
92
|
# List roles
|
98
93
|
def list_role
|
99
94
|
if Awskeyring.list_role_names.empty?
|
@@ -109,7 +104,7 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
109
104
|
|
110
105
|
desc 'env ACCOUNT', I18n.t('env_desc')
|
111
106
|
method_option 'no-token', type: :boolean, aliases: '-n', desc: I18n.t('method_option.notoken'), default: false
|
112
|
-
method_option
|
107
|
+
method_option :unset, type: :boolean, aliases: '-u', desc: I18n.t('method_option.unset'), default: false
|
113
108
|
# Print Env vars
|
114
109
|
def env(account = nil)
|
115
110
|
if options[:unset]
|
@@ -258,7 +253,6 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
258
253
|
puts I18n.t('message.upaccount', account: account)
|
259
254
|
end
|
260
255
|
|
261
|
-
map 'add-role' => :add_role
|
262
256
|
desc 'add-role ROLE', I18n.t('add_role_desc')
|
263
257
|
method_option :arn, type: :string, aliases: '-a', desc: I18n.t('method_option.arn')
|
264
258
|
# Add a role
|
@@ -291,15 +285,14 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
291
285
|
|
292
286
|
desc 'remove-token ACCOUNT', I18n.t('remove_token_desc')
|
293
287
|
# remove a session token
|
294
|
-
def remove_token(
|
295
|
-
|
296
|
-
existing:
|
288
|
+
def remove_token(token = nil)
|
289
|
+
token = ask_check(
|
290
|
+
existing: token, message: I18n.t('message.account'), validator: Awskeyring.method(:token_exists),
|
297
291
|
limited_to: Awskeyring.list_token_names
|
298
292
|
)
|
299
|
-
Awskeyring.delete_token(account:
|
293
|
+
Awskeyring.delete_token(account: token, message: I18n.t('message.deltoken', account: token))
|
300
294
|
end
|
301
295
|
|
302
|
-
map 'remove-role' => :remove_role
|
303
296
|
desc 'remove-role ROLE', I18n.t('remove_role_desc')
|
304
297
|
# remove a role
|
305
298
|
def remove_role(role = nil)
|
@@ -343,7 +336,6 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
343
336
|
end
|
344
337
|
|
345
338
|
desc 'token ACCOUNT [ROLE] [MFA]', I18n.t('token_desc')
|
346
|
-
method_option :role, type: :string, aliases: '-r', desc: I18n.t('method_option.role')
|
347
339
|
method_option :code, type: :string, aliases: '-c', desc: I18n.t('method_option.code')
|
348
340
|
method_option :duration, type: :string, aliases: '-d', desc: I18n.t('method_option.duration')
|
349
341
|
# generate a sessiopn token
|
@@ -354,7 +346,6 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
354
346
|
validator: Awskeyring.method(:account_exists),
|
355
347
|
limited_to: Awskeyring.list_account_names
|
356
348
|
)
|
357
|
-
role ||= options[:role]
|
358
349
|
if role
|
359
350
|
role = ask_check(
|
360
351
|
existing: role, message: I18n.t('message.role'), validator: Awskeyring.method(:role_exists),
|
@@ -441,14 +432,18 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
441
432
|
# autocomplete
|
442
433
|
def autocomplete(curr, prev)
|
443
434
|
comp_line = ENV['COMP_LINE']
|
444
|
-
|
435
|
+
comp_point_str = ENV['COMP_POINT']
|
436
|
+
unless comp_line && comp_point_str
|
445
437
|
exec_name = File.basename($PROGRAM_NAME)
|
446
438
|
warn I18n.t('message.awskeyring', path: $PROGRAM_NAME, bin: exec_name)
|
447
439
|
exit 1
|
448
440
|
end
|
449
441
|
|
450
|
-
|
451
|
-
|
442
|
+
comp_lines = comp_line[0..(comp_point_str.to_i)].split
|
443
|
+
|
444
|
+
comp_type, sub_cmd = comp_type(comp_lines: comp_lines, prev: prev)
|
445
|
+
list = fetch_auto_resp(comp_type, sub_cmd)
|
446
|
+
puts list.select { |elem| elem.start_with?(curr) }.sort!.join("\n")
|
452
447
|
end
|
453
448
|
|
454
449
|
private
|
@@ -463,59 +458,63 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
463
458
|
cred
|
464
459
|
end
|
465
460
|
|
466
|
-
def comp_type(
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
comp_len = 3 if curr.start_with?('-')
|
461
|
+
def comp_type(comp_lines:, prev:)
|
462
|
+
sub_cmd = sub_command(comp_lines)
|
463
|
+
comp_idx = comp_lines.rindex(prev)
|
471
464
|
|
472
465
|
case prev
|
473
|
-
when 'help', File.basename($PROGRAM_NAME)
|
474
|
-
comp_len = 0
|
475
|
-
when 'remove-role', '-r', 'rmr'
|
476
|
-
comp_len = 2
|
477
466
|
when '--path', '-p'
|
478
|
-
|
479
|
-
when 'remove-token', 'rmt'
|
480
|
-
comp_len = 50
|
467
|
+
comp_type = :path_type
|
481
468
|
when '--browser', '-b'
|
482
|
-
|
469
|
+
comp_type = :browser_type
|
470
|
+
else
|
471
|
+
comp_type = :command
|
472
|
+
comp_type = param_type(comp_idx, sub_cmd) unless sub_cmd.empty?
|
483
473
|
end
|
484
474
|
|
485
|
-
[
|
475
|
+
[comp_type, sub_cmd]
|
476
|
+
end
|
477
|
+
|
478
|
+
def param_type(comp_idx, sub_cmd)
|
479
|
+
param_list = method(sub_cmd).parameters
|
480
|
+
if comp_idx.zero?
|
481
|
+
:command
|
482
|
+
elsif comp_idx > param_list.length
|
483
|
+
:flag
|
484
|
+
else
|
485
|
+
param_list[comp_idx - 1][1]
|
486
|
+
end
|
486
487
|
end
|
487
488
|
|
488
489
|
def sub_command(comp_lines)
|
489
|
-
return
|
490
|
+
return '' if comp_lines.nil? || comp_lines.length < 2
|
491
|
+
|
492
|
+
sub_cmd = comp_lines[1].tr('-', '_')
|
490
493
|
|
491
|
-
|
494
|
+
sub_cmds = self.class.all_commands.keys.select { |elem| elem.start_with?(sub_cmd) }
|
492
495
|
|
493
|
-
return
|
496
|
+
return sub_cmds.first if sub_cmds.length == 1
|
494
497
|
|
495
498
|
self.class.map[sub_cmd].to_s
|
496
499
|
end
|
497
500
|
|
498
|
-
def
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
list = Awskeyring.list_token_names
|
513
|
-
when 60
|
514
|
-
list = Awskeyring.list_browsers
|
501
|
+
def fetch_auto_resp(comp_type, sub_cmd)
|
502
|
+
case comp_type
|
503
|
+
when :command
|
504
|
+
list_commands
|
505
|
+
when :account
|
506
|
+
Awskeyring.list_account_names
|
507
|
+
when :role
|
508
|
+
Awskeyring.list_role_names
|
509
|
+
when :path_type
|
510
|
+
Awskeyring.list_console_path
|
511
|
+
when :token
|
512
|
+
Awskeyring.list_token_names
|
513
|
+
when :browser_type
|
514
|
+
Awskeyring.list_browsers
|
515
515
|
else
|
516
|
-
|
516
|
+
list_arguments(command: sub_cmd)
|
517
517
|
end
|
518
|
-
puts list.select { |elem| elem.start_with?(curr) }.sort!.join("\n")
|
519
518
|
end
|
520
519
|
|
521
520
|
def list_commands
|
@@ -524,9 +523,11 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
524
523
|
end
|
525
524
|
|
526
525
|
def list_arguments(command:)
|
527
|
-
|
528
|
-
|
529
|
-
|
526
|
+
options = self.class.all_commands[command].options.values
|
527
|
+
exit 1 if options.empty?
|
528
|
+
|
529
|
+
options.map(&:aliases).flatten! +
|
530
|
+
options.map(&:switch_name)
|
530
531
|
end
|
531
532
|
|
532
533
|
def put_env_string(cred)
|
data/man/awskeyring.5
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "AWSKEYRING" "5" "
|
4
|
+
.TH "AWSKEYRING" "5" "May 2021" "" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBAwskeyring\fR \- is a small tool to manage AWS account keys in the macOS Keychain
|
@@ -197,9 +197,6 @@ Create an STS Token from a ROLE or an MFA code
|
|
197
197
|
.br
|
198
198
|
.
|
199
199
|
.IP
|
200
|
-
\-r, \-\-role=ROLE: The ROLE to assume\.
|
201
|
-
.
|
202
|
-
.br
|
203
200
|
\-c, \-\-code=CODE: Virtual mfa CODE\.
|
204
201
|
.
|
205
202
|
.br
|
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: 1.8.
|
4
|
+
version: 1.8.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tristan Morgan
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-05-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-iam
|
@@ -93,8 +93,8 @@ licenses:
|
|
93
93
|
metadata:
|
94
94
|
bug_tracker_uri: https://github.com/servian/awskeyring/issues
|
95
95
|
changelog_uri: https://github.com/servian/awskeyring/blob/main/CHANGELOG.md
|
96
|
-
documentation_uri: https://rubydoc.info/gems/awskeyring/1.8.
|
97
|
-
source_code_uri: https://github.com/servian/awskeyring/tree/v1.8.
|
96
|
+
documentation_uri: https://rubydoc.info/gems/awskeyring/1.8.4
|
97
|
+
source_code_uri: https://github.com/servian/awskeyring/tree/v1.8.4
|
98
98
|
wiki_uri: https://github.com/servian/awskeyring/wiki
|
99
99
|
post_install_message:
|
100
100
|
rdoc_options: []
|