awskeyring 1.4.0 → 1.8.1

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
  SHA256:
3
- metadata.gz: ae2606582cb2a9c079bf4ebcb6223570148954cf66fe9938c9b4d969c1312da6
4
- data.tar.gz: d6b24f01901e6c3161e1874f9bd9d018f9b62e734d7d73f5ffaed78f0125ecb1
3
+ metadata.gz: 6f414457dbb053f2bbe8fde789ee2238ed11d3554576bfbd67ff52c84697eb5b
4
+ data.tar.gz: 70766a2e47f57dccd562a604d278bfa248b6133b7aa5f6f6a0c697bd2fd09cdc
5
5
  SHA512:
6
- metadata.gz: d7704820e908585b67575c319e03493512917a9e5ea5db9620040402c49fbcd6466448e108949bcf32ea2d2f782e2ee8bf7e3e1bdd4e4138cb6d462c2c603635
7
- data.tar.gz: 667e7d6d0417cda0a79c1d81680469f1ba2c7a03630bd8e7269e03f137ad669155126a927eb39542b1e9e0b07ee0f408678bb603bc77900cc7db9ff60e702c6b
6
+ metadata.gz: 6a14c818ec8f52ad3b0520d779c047eb2523252d9ebc032005571ed347fe3a66f3015e7cc5f7f64a0ff36845ea4c7232e5c70f64da171b5e489bc01b1be6b525
7
+ data.tar.gz: bbd9103d268378c1901097854df9880d6b5dc32843feb24e654faff26d8dfd8952862cfb48c492c290cd88b87ee6897c4ad8a8f1407dc0c22a8207b32f1c34d3
@@ -1,5 +1,56 @@
1
1
  # Changelog
2
2
 
3
+ ## [v1.8.1](https://github.com/servian/awskeyring/tree/v1.8.1) (2021-01-20)
4
+
5
+ [Full Changelog](https://github.com/servian/awskeyring/compare/v1.8.0...v1.8.1)
6
+
7
+ **Fixed bugs:**
8
+
9
+ - Update command failed. [\#75](https://github.com/servian/awskeyring/issues/75)
10
+
11
+ **Merged pull requests:**
12
+
13
+ - Default nil token \(fix \#75\) [\#76](https://github.com/servian/awskeyring/pull/76) ([tristanmorgan](https://github.com/tristanmorgan))
14
+
15
+ ## [v1.8.0](https://github.com/servian/awskeyring/tree/v1.8.0) (2020-12-07)
16
+
17
+ [Full Changelog](https://github.com/servian/awskeyring/compare/v1.7.0...v1.8.0)
18
+
19
+ **Implemented enhancements:**
20
+
21
+ - Include expiry time export, AWS\_CREDENTIAL\_EXPIRATION [\#74](https://github.com/servian/awskeyring/pull/74) ([tristanmorgan](https://github.com/tristanmorgan))
22
+
23
+ ## [v1.7.0](https://github.com/servian/awskeyring/tree/v1.7.0) (2020-11-18)
24
+
25
+ [Full Changelog](https://github.com/servian/awskeyring/compare/v1.6.0...v1.7.0)
26
+
27
+ **Implemented enhancements:**
28
+
29
+ - Allow specifying a browser other than the default [\#71](https://github.com/servian/awskeyring/issues/71)
30
+ - Autocomplete for Browsers [\#73](https://github.com/servian/awskeyring/pull/73) ([tristanmorgan](https://github.com/tristanmorgan))
31
+
32
+ **Merged pull requests:**
33
+
34
+ - Updates for added RuboCop checks. [\#70](https://github.com/servian/awskeyring/pull/70) ([tristanmorgan](https://github.com/tristanmorgan))
35
+
36
+ ## [v1.6.0](https://github.com/servian/awskeyring/tree/v1.6.0) (2020-08-11)
37
+
38
+ [Full Changelog](https://github.com/servian/awskeyring/compare/v1.5.0...v1.6.0)
39
+
40
+ **Implemented enhancements:**
41
+
42
+ - Warn about missing accounts/roles [\#69](https://github.com/servian/awskeyring/pull/69) ([tristanmorgan](https://github.com/tristanmorgan))
43
+ - RuboCop and Spec update [\#68](https://github.com/servian/awskeyring/pull/68) ([tristanmorgan](https://github.com/tristanmorgan))
44
+ - Add SimpleCov reports. [\#67](https://github.com/servian/awskeyring/pull/67) ([tristanmorgan](https://github.com/tristanmorgan))
45
+
46
+ ## [v1.5.0](https://github.com/servian/awskeyring/tree/v1.5.0) (2020-07-08)
47
+
48
+ [Full Changelog](https://github.com/servian/awskeyring/compare/v1.4.0...v1.5.0)
49
+
50
+ **Implemented enhancements:**
51
+
52
+ - No-Bundle env changes for exec. [\#66](https://github.com/servian/awskeyring/pull/66) ([tristanmorgan](https://github.com/tristanmorgan))
53
+
3
54
  ## [v1.4.0](https://github.com/servian/awskeyring/tree/v1.4.0) (2020-06-19)
4
55
 
5
56
  [Full Changelog](https://github.com/servian/awskeyring/compare/v1.3.3...v1.4.0)
data/Gemfile CHANGED
@@ -15,5 +15,6 @@ group :development do
15
15
  gem 'rubocop-rake'
16
16
  gem 'rubocop-rspec'
17
17
  gem 'rubocop-rubycw'
18
+ gem 'simplecov'
18
19
  gem 'yard'
19
20
  end
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2017 Tristan Morgan
3
+ Copyright (c) 2017-2020 Tristan Morgan
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # Awskeyring
2
2
 
3
- ![Awskeyring](https://raw.githubusercontent.com/servian/awskeyring/master/awskeyring-144.png)
3
+ ![Awskeyring](https://raw.githubusercontent.com/servian/awskeyring/main/awskeyring-144.png)
4
4
 
5
- * [![Build Status](https://travis-ci.org/servian/awskeyring.svg?branch=master)](https://travis-ci.org/servian/awskeyring)
5
+ * [![Build Status](https://travis-ci.org/servian/awskeyring.svg?branch=main)](https://travis-ci.org/servian/awskeyring)
6
6
  * [![Gem Version](https://badge.fury.io/rb/awskeyring.svg)](https://badge.fury.io/rb/awskeyring)
7
7
  * [![license MIT](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://opensource.org/licenses/MIT)
8
8
  * [![All Downloads](https://ruby-gem-downloads-badge.herokuapp.com/awskeyring?type=total)](https://rubygems.org/gems/awskeyring)
@@ -27,6 +27,10 @@ Install it with:
27
27
 
28
28
  $ gem install awskeyring --user-install
29
29
 
30
+ or via [homebrew gem](https://github.com/sportngin/brew-gem):
31
+
32
+ $ brew gem install awskeyring
33
+
30
34
  ## Wiki
31
35
 
32
36
  Please see the [Wiki](https://github.com/servian/awskeyring/wiki) for full usage instructions and tips.
@@ -113,6 +117,7 @@ the [Contributor Covenant](https://contributor-covenant.org) code of conduct.
113
117
 
114
118
  * Tristan [tristanmorgan](https://github.com/tristanmorgan)
115
119
  * Adam Sir [AzySir](https://github.com/AzySir)
120
+ * Vito Giarrusso [thtliife](https://github.com/thtliife)
116
121
 
117
122
  ## License
118
123
 
@@ -0,0 +1,4 @@
1
+ # Security Policy
2
+
3
+ If you believe you have found a security issue in Awskeyring, please responsibly disclose by contacting me at
4
+ [tristan.morgan@servian.com](mailto:tristan.morgan@servian.com).
@@ -20,9 +20,11 @@ Gem::Specification.new do |spec|
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ['lib']
22
22
 
23
+ spec.required_ruby_version = '>= 2.6.0'
24
+
23
25
  spec.metadata = {
24
26
  'bug_tracker_uri' => "#{Awskeyring::HOMEPAGE}/issues",
25
- 'changelog_uri' => "#{Awskeyring::HOMEPAGE}/blob/master/CHANGELOG.md",
27
+ 'changelog_uri' => "#{Awskeyring::HOMEPAGE}/blob/main/CHANGELOG.md",
26
28
  'documentation_uri' => "https://rubydoc.info/gems/#{spec.name}/#{Awskeyring::VERSION}",
27
29
  'source_code_uri' => "#{Awskeyring::HOMEPAGE}/tree/v#{Awskeyring::VERSION}",
28
30
  'wiki_uri' => "#{Awskeyring::HOMEPAGE}/wiki"
@@ -44,10 +44,12 @@ en:
44
44
  key: 'AWS account key id.'
45
45
  keychain: 'Name of KEYCHAIN to initialise.'
46
46
  mfa: 'AWS virtual mfa arn.'
47
+ nobundle: 'Unset Bundler environment variables.'
47
48
  noopen: 'Do not open the url.'
48
49
  notoken: 'Do not use saved token.'
49
50
  noremote: 'Do not validate with remote api.'
50
51
  path: 'The service PATH to open.'
52
+ browser: 'Specify an alternative browser.'
51
53
  role: 'The ROLE to assume.'
52
54
  secret: 'AWS account secret.'
53
55
  unset: 'Unset environment variables.'
@@ -74,6 +76,8 @@ en:
74
76
  delexpired: '# Removing expired session credentials'
75
77
  exec: '# COMMAND not provided'
76
78
  missing: '# Config missing, run `%{bin} initialise` to recreate.'
79
+ missing_account: '# No accounts added, run `%{bin} add` to add.'
80
+ missing_role: '# No roles added, run `%{bin} add-role` to add.'
77
81
  rotate: '# You have two access keys for account %{account}'
78
82
  temporary: '# Using temporary session credentials.'
79
83
  timeout: '# It is STRONGLY recommended to set your keychain to lock in 5 minutes or less.'
@@ -27,6 +27,8 @@ module Awskeyring # rubocop:disable Metrics/ModuleLength
27
27
  DEFAULT_KEY_AGE = 90
28
28
  # Default Console Paths
29
29
  DEFAULT_CONSOLE_LIST = %w[cloudformation ec2/v2 iam rds route53 s3 sns sqs vpc].freeze
30
+ # Default Browsers
31
+ DEFAULT_BROWSER_LIST = %w[Brave FireFox Opera Safari Vivaldi].freeze
30
32
 
31
33
  # Retrieve the preferences
32
34
  #
@@ -174,26 +176,26 @@ module Awskeyring # rubocop:disable Metrics/ModuleLength
174
176
 
175
177
  # Return a list account item names
176
178
  def self.list_account_names
177
- items = list_items.map { |elem| elem.attributes[:label][(ACCOUNT_PREFIX.length)..-1] }
179
+ items = list_items.map { |elem| elem.attributes[:label][(ACCOUNT_PREFIX.length)..] }
178
180
 
179
- tokens = list_tokens.map { |elem| elem.attributes[:label][(SESSION_KEY_PREFIX.length)..-1] }
181
+ tokens = list_tokens.map { |elem| elem.attributes[:label][(SESSION_KEY_PREFIX.length)..] }
180
182
 
181
183
  (items + tokens).uniq.sort
182
184
  end
183
185
 
184
186
  # Return a list role item names
185
187
  def self.list_role_names
186
- list_roles.map { |elem| elem.attributes[:label][(ROLE_PREFIX.length)..-1] }.sort
188
+ list_roles.map { |elem| elem.attributes[:label][(ROLE_PREFIX.length)..] }.sort
187
189
  end
188
190
 
189
191
  # Return a list token item names
190
192
  def self.list_token_names
191
- list_tokens.map { |elem| elem.attributes[:label][(SESSION_KEY_PREFIX.length)..-1] }.sort
193
+ list_tokens.map { |elem| elem.attributes[:label][(SESSION_KEY_PREFIX.length)..] }.sort
192
194
  end
193
195
 
194
196
  # Return a list role item names and arns
195
197
  def self.list_role_names_plus
196
- list_roles.map { |elem| "#{elem.attributes[:label][(ROLE_PREFIX.length)..-1]}\t#{elem.attributes[:account]}" }
198
+ list_roles.map { |elem| "#{elem.attributes[:label][(ROLE_PREFIX.length)..]}\t#{elem.attributes[:account]}" }
197
199
  end
198
200
 
199
201
  # Return a list of console paths
@@ -201,6 +203,11 @@ module Awskeyring # rubocop:disable Metrics/ModuleLength
201
203
  prefs.key?('console') ? prefs['console'] : DEFAULT_CONSOLE_LIST
202
204
  end
203
205
 
206
+ # Return a list of browserss
207
+ def self.list_browsers
208
+ prefs.key?('browser') ? prefs['browser'] : DEFAULT_BROWSER_LIST
209
+ end
210
+
204
211
  # Return Key age warning number
205
212
  def self.key_age
206
213
  prefs.key?('keyage') ? prefs['keyage'] : DEFAULT_KEY_AGE
@@ -27,6 +27,7 @@ module Awskeyring
27
27
  AWS_ACCOUNT_NAME
28
28
  AWS_ACCESS_KEY_ID
29
29
  AWS_ACCESS_KEY
30
+ AWS_CREDENTIAL_EXPIRATION
30
31
  AWS_SECRET_ACCESS_KEY
31
32
  AWS_SECRET_KEY
32
33
  AWS_SECURITY_TOKEN
@@ -126,6 +127,8 @@ module Awskeyring
126
127
  env_var = {}
127
128
  env_var['AWS_DEFAULT_REGION'] = 'us-east-1' unless region
128
129
 
130
+ params[:expiration] = Time.at(params[:expiry]).iso8601 unless params[:expiry].nil?
131
+
129
132
  params.each_key do |param_name|
130
133
  AWS_ENV_VARS.each do |var_name|
131
134
  if var_name.include?(param_name.to_s.upcase) && !params[param_name].nil?
@@ -142,7 +145,7 @@ module Awskeyring
142
145
  # @param [String] key The aws_access_key_id
143
146
  # @param [String] secret The aws_secret_access_key
144
147
  # @param [String] token The aws_session_token
145
- def self.verify_cred(key:, secret:, token:)
148
+ def self.verify_cred(key:, secret:, token: nil)
146
149
  begin
147
150
  ENV['AWS_DEFAULT_REGION'] = 'us-east-1' unless region
148
151
  sts = Aws::STS::Client.new(access_key_id: key, secret_access_key: secret, session_token: token)
@@ -198,9 +201,9 @@ module Awskeyring
198
201
  sessionToken: token
199
202
  }.to_json
200
203
 
201
- destination_param = '&Destination=' + CGI.escape(console_url)
204
+ destination_param = "&Destination=#{CGI.escape(console_url)}"
202
205
 
203
- AWS_SIGNIN_URL + '?Action=login' + token_param(session_json: session_json) + destination_param
206
+ "#{AWS_SIGNIN_URL}?Action=login#{token_param(session_json: session_json)}#{destination_param}"
204
207
  end
205
208
 
206
209
  # Get the signin token param
@@ -214,7 +217,7 @@ module Awskeyring
214
217
  returned_content = request.get(uri).body
215
218
 
216
219
  signin_token = JSON.parse(returned_content)['SigninToken']
217
- '&SigninToken=' + CGI.escape(signin_token)
220
+ "&SigninToken=#{CGI.escape(signin_token)}"
218
221
  end
219
222
 
220
223
  # Get the current region
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'io/console'
4
-
5
3
  # Awskeyring Module,
6
4
  module Awskeyring
7
5
  # Input methods for Awskeyring
@@ -15,18 +13,20 @@ module Awskeyring
15
13
  end
16
14
 
17
15
  private_class_method def self.hide_input # rubocop:disable Metrics/MethodLength
16
+ require 'io/console'
18
17
  password = +''
19
18
  loop do
20
19
  character = $stdin.getch
21
20
  break unless character
22
21
 
23
- if ["\n", "\r"].include? character
22
+ case character
23
+ when "\n", "\r"
24
24
  puts ''
25
25
  break
26
- elsif ["\b", "\u007f"].include? character
26
+ when "\b", "\u007f"
27
27
  password.chop!
28
28
  print "\b\e[P"
29
- elsif character == "\u0003"
29
+ when "\u0003"
30
30
  exit 1
31
31
  else
32
32
  print '*'
@@ -6,7 +6,7 @@ require 'json'
6
6
  # Version const and query of latest.
7
7
  module Awskeyring
8
8
  # The Gem's version number
9
- VERSION = '1.4.0'
9
+ VERSION = '1.8.1'
10
10
  # The Gem's homepage
11
11
  HOMEPAGE = 'https://github.com/servian/awskeyring'
12
12
 
@@ -72,6 +72,10 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
72
72
  desc 'list', I18n.t('list.desc')
73
73
  # list the accounts
74
74
  def list
75
+ if Awskeyring.list_account_names.empty?
76
+ warn I18n.t('message.missing_account', bin: File.basename($PROGRAM_NAME))
77
+ exit 1
78
+ end
75
79
  puts Awskeyring.list_account_names.join("\n")
76
80
  end
77
81
 
@@ -80,7 +84,11 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
80
84
  method_option 'detail', type: :boolean, aliases: '-d', desc: I18n.t('method_option.detail'), default: false
81
85
  # List roles
82
86
  def list_role
83
- if options['detail']
87
+ if Awskeyring.list_role_names.empty?
88
+ warn I18n.t('message.missing_role', bin: File.basename($PROGRAM_NAME))
89
+ exit 1
90
+ end
91
+ if options[:detail]
84
92
  puts Awskeyring.list_role_names_plus.join("\n")
85
93
  else
86
94
  puts Awskeyring.list_role_names.join("\n")
@@ -92,7 +100,7 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
92
100
  method_option 'unset', type: :boolean, aliases: '-u', desc: I18n.t('method_option.unset'), default: false
93
101
  # Print Env vars
94
102
  def env(account = nil)
95
- if options['unset']
103
+ if options[:unset]
96
104
  put_env_string(account: nil, key: nil, secret: nil, token: nil)
97
105
  else
98
106
  account = ask_check(
@@ -160,6 +168,7 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
160
168
 
161
169
  desc 'exec ACCOUNT command...', I18n.t('exec.desc')
162
170
  method_option 'no-token', type: :boolean, aliases: '-n', desc: I18n.t('method_option.notoken'), default: false
171
+ method_option 'no-bundle', type: :boolean, aliases: '-b', desc: I18n.t('method_option.nobundle'), default: false
163
172
  # execute an external command with env set
164
173
  def exec(account, *command)
165
174
  if command.empty?
@@ -168,6 +177,7 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
168
177
  end
169
178
  cred = age_check_and_get(account: account, no_token: options['no-token'])
170
179
  env_vars = Awskeyring::Awsapi.get_env_array(cred)
180
+ unbundle if options['no-bundle']
171
181
  begin
172
182
  pid = Process.spawn(env_vars, command.join(' '))
173
183
  Process.wait pid
@@ -199,7 +209,7 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
199
209
  existing: options[:mfa], message: I18n.t('message.mfa'),
200
210
  flags: 'optional', validator: Awskeyring::Validate.method(:mfa_arn)
201
211
  )
202
- Awskeyring::Awsapi.verify_cred(key: key, secret: secret, token: nil) unless options['no-remote']
212
+ Awskeyring::Awsapi.verify_cred(key: key, secret: secret) unless options['no-remote']
203
213
  Awskeyring.add_account(
204
214
  account: account,
205
215
  key: key,
@@ -377,6 +387,7 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
377
387
 
378
388
  desc 'console ACCOUNT', I18n.t('console.desc')
379
389
  method_option :path, type: :string, aliases: '-p', desc: I18n.t('method_option.path')
390
+ method_option :browser, type: :string, aliases: '-b', desc: I18n.t('method_option.browser')
380
391
  method_option 'no-token', type: :boolean, aliases: '-n', desc: I18n.t('method_option.notoken'), default: false
381
392
  method_option 'no-open', type: :boolean, aliases: '-o', desc: I18n.t('method_option.noopen'), default: false
382
393
  # Open the AWS Console
@@ -407,7 +418,8 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
407
418
  if options['no-open']
408
419
  puts login_url
409
420
  else
410
- pid = Process.spawn("open \"#{login_url}\"")
421
+ spawn_cmd = options[:browser] ? "open -a \"#{options[:browser]}\" \"#{login_url}\"" : "open \"#{login_url}\""
422
+ pid = Process.spawn(spawn_cmd)
411
423
  Process.wait pid
412
424
  end
413
425
  end
@@ -450,9 +462,11 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
450
462
  when 'remove-role', '-r', 'rmr'
451
463
  comp_len = 2
452
464
  when '--path', '-p'
453
- comp_len = 4
465
+ comp_len = 40
454
466
  when 'remove-token', 'rmt'
455
- comp_len = 5
467
+ comp_len = 50
468
+ when '--browser', '-b'
469
+ comp_len = 60
456
470
  end
457
471
 
458
472
  [curr, comp_len, sub_cmd]
@@ -477,12 +491,14 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
477
491
  list = Awskeyring.list_account_names
478
492
  when 2
479
493
  list = Awskeyring.list_role_names
480
- when 3
494
+ when 3..10
481
495
  list = list_arguments(command: sub_cmd)
482
- when 4
496
+ when 40
483
497
  list = Awskeyring.list_console_path
484
- when 5
498
+ when 50
485
499
  list = Awskeyring.list_token_names
500
+ when 60
501
+ list = Awskeyring.list_browsers
486
502
  else
487
503
  exit 1
488
504
  end
@@ -537,13 +553,26 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
537
553
 
538
554
  def ask(message:, secure: false, optional: false, limited_to: nil)
539
555
  if secure
540
- Awskeyring::Input.read_secret(message.rjust(20) + ': ')
556
+ Awskeyring::Input.read_secret("#{message.rjust(20)}: ")
541
557
  elsif optional
542
- Thor::LineEditor.readline((message + ' (optional)').rjust(20) + ': ')
558
+ Thor::LineEditor.readline("#{"#{message} (optional)".rjust(20)}: ")
543
559
  elsif limited_to
544
- Thor::LineEditor.readline(message.rjust(20) + ': ', limited_to: limited_to)
560
+ Thor::LineEditor.readline("#{message.rjust(20)}: ", limited_to: limited_to)
545
561
  else
546
- Thor::LineEditor.readline(message.rjust(20) + ': ')
562
+ Thor::LineEditor.readline("#{message.rjust(20)}: ")
563
+ end
564
+ end
565
+
566
+ def unbundle
567
+ to_delete = ENV.keys.select { |elem| elem.start_with?('BUNDLER_ORIG_') }
568
+ bundled_env = to_delete.map { |elem| elem[('BUNDLER_ORIG_'.length)..] }
569
+ to_delete << 'BUNDLE_GEMFILE'
570
+ bundled_env.each do |env_name|
571
+ ENV[env_name] = ENV["BUNDLER_ORIG_#{env_name}"]
572
+ to_delete << env_name if ENV["BUNDLER_ORIG_#{env_name}"].start_with? 'BUNDLER_'
573
+ end
574
+ to_delete.each do |env_name|
575
+ ENV.delete(env_name)
547
576
  end
548
577
  end
549
578
  end
@@ -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" "June 2020" "" ""
4
+ .TH "AWSKEYRING" "5" "November 2020" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBAwskeyring\fR \- is a small tool to manage AWS account keys in the macOS Keychain
@@ -24,36 +24,90 @@ The commands are as follows:
24
24
  .IP
25
25
  Prints the version
26
26
  .
27
+ .br
28
+ .
29
+ .IP
30
+ \-r, \-\-no\-remote: Do not validate with remote api\.
31
+ .
27
32
  .TP
28
33
  add ACCOUNT:
29
34
  .
30
35
  .IP
31
36
  Adds an ACCOUNT to the keyring
32
37
  .
38
+ .br
39
+ .
40
+ .IP
41
+ \-k, \-\-key=KEY: AWS account key id\.
42
+ .
43
+ .br
44
+ \-s, \-\-secret=SECRET: AWS account secret\.
45
+ .
46
+ .br
47
+ \-m, \-\-mfa=MFA: AWS virtual mfa arn\.
48
+ .
49
+ .br
50
+ \-r, \-\-no\-remote: Do not validate with remote api\.
51
+ .
33
52
  .TP
34
53
  add\-role ROLE:
35
54
  .
36
55
  .IP
37
56
  Adds a ROLE to the keyring
38
57
  .
58
+ .br
59
+ .
60
+ .IP
61
+ \-a, \-\-arn=ARN: AWS role arn\.
62
+ .
39
63
  .TP
40
- console ACCOUNT:
64
+ awskeyring console ACCOUNT:
41
65
  .
42
66
  .IP
43
67
  Open the AWS Console for the ACCOUNT
44
68
  .
69
+ .br
70
+ .
71
+ .IP
72
+ \-p, \-\-path=PATH: The service PATH to open\.
73
+ .
74
+ .br
75
+ \-b, \-\-browser=BROWSER: Specify an alternative browser\.
76
+ .
77
+ .br
78
+ \-n, \-\-no\-token: Do not use saved token\.
79
+ .
80
+ .br
81
+ \-o, \-\-no\-open: Do not open the url\.
82
+ .
45
83
  .TP
46
84
  env ACCOUNT:
47
85
  .
48
86
  .IP
49
87
  Outputs bourne shell environment exports for an ACCOUNT
50
88
  .
89
+ .br
90
+ .
91
+ .IP
92
+ \-n, \-\-no\-token: Do not use saved token\.
93
+ .
94
+ .br
95
+ \-u, \-\-unset, \-\-no\-unset: Unset environment variables\.
96
+ .
51
97
  .TP
52
98
  exec ACCOUNT command\.\.\.:
53
99
  .
54
100
  .IP
55
101
  Execute a COMMAND with the environment set for an ACCOUNT
56
102
  .
103
+ .br
104
+ .
105
+ .IP
106
+ \-n, \-\-no\-token: Do not use saved token\.
107
+ .
108
+ .br
109
+ \-b, \-\-no\-bundle: Unset Bundler environment variables\.
110
+ .
57
111
  .TP
58
112
  help [COMMAND]:
59
113
  .
@@ -66,18 +120,33 @@ import:
66
120
  .IP
67
121
  Import an ACCOUNT to the keyring from ~/\.aws/credentials
68
122
  .
123
+ .br
124
+ .
125
+ .IP
126
+ \-r, \-\-no\-remote: Do not validate with remote api\.
127
+ .
69
128
  .TP
70
129
  initialise:
71
130
  .
72
131
  .IP
73
132
  Initialises a new KEYCHAIN
74
133
  .
134
+ .br
135
+ .
136
+ .IP
137
+ \-n, \-\-keychain=KEYCHAIN: Name of KEYCHAIN to initialise\.
138
+ .
75
139
  .TP
76
140
  json ACCOUNT:
77
141
  .
78
142
  .IP
79
143
  Outputs AWS CLI compatible JSON for an ACCOUNT
80
144
  .
145
+ .br
146
+ .
147
+ .IP
148
+ \-n, \-\-no\-token: Do not use saved token\.
149
+ .
81
150
  .TP
82
151
  list:
83
152
  .
@@ -90,6 +159,11 @@ list\-role:
90
159
  .IP
91
160
  Prints a list of roles in the keyring
92
161
  .
162
+ .br
163
+ .
164
+ .IP
165
+ \-d, \-\-detail, \-\-no\-detail: Show more detail\.
166
+ .
93
167
  .TP
94
168
  remove ACCOUNT:
95
169
  .
@@ -120,12 +194,34 @@ token ACCOUNT [ROLE] [MFA]:
120
194
  .IP
121
195
  Create an STS Token from a ROLE or an MFA code
122
196
  .
197
+ .br
198
+ .
199
+ .IP
200
+ \-r, \-\-role=ROLE: The ROLE to assume\.
201
+ .
202
+ .br
203
+ \-c, \-\-code=CODE: Virtual mfa CODE\.
204
+ .
205
+ .br
206
+ \-d, \-\-duration=DURATION: Session DURATION in seconds\.
207
+ .
123
208
  .TP
124
209
  update ACCOUNT:
125
210
  .
126
211
  .IP
127
212
  Updates an ACCOUNT in the keyring
128
213
  .
214
+ .br
215
+ .
216
+ .IP
217
+ \-k, \-\-key=KEY: AWS account key id\.
218
+ .
219
+ .br
220
+ \-s, \-\-secret=SECRET: AWS account secret\.
221
+ .
222
+ .br
223
+ \-r, \-\-no\-remote: Do not validate with remote api\.
224
+ .
129
225
  .SH "ENVIRONMENT"
130
226
  The AWS_DEFAULT_REGION environment variable will be used for AWS API calls where specified or fall back to us\-east\-1 when not\.
131
227
  .
@@ -188,6 +284,9 @@ Tristan tristanmorgan \fIhttps://github\.com/tristanmorgan\fR
188
284
  .IP "\(bu" 4
189
285
  Adam Sir AzySir \fIhttps://github\.com/AzySir\fR
190
286
  .
287
+ .IP "\(bu" 4
288
+ Vito Giarrusso thtliife \fIhttps://github\.com/thtliife\fR
289
+ .
191
290
  .IP "" 0
192
291
  .
193
292
  .SH "LICENSE"
@@ -16,27 +16,47 @@ The commands are as follows:
16
16
 
17
17
  * --version, -v:
18
18
 
19
- Prints the version
19
+ Prints the version<br>
20
+
21
+ -r, --no-remote: Do not validate with remote api.
20
22
 
21
23
  * add ACCOUNT:
22
24
 
23
- Adds an ACCOUNT to the keyring
25
+ Adds an ACCOUNT to the keyring<br>
26
+
27
+ -k, --key=KEY: AWS account key id.<br>
28
+ -s, --secret=SECRET: AWS account secret.<br>
29
+ -m, --mfa=MFA: AWS virtual mfa arn.<br>
30
+ -r, --no-remote: Do not validate with remote api.
24
31
 
25
32
  * add-role ROLE:
26
33
 
27
- Adds a ROLE to the keyring
34
+ Adds a ROLE to the keyring<br>
35
+
36
+ -a, --arn=ARN: AWS role arn.
37
+
38
+ * awskeyring console ACCOUNT:
28
39
 
29
- * console ACCOUNT:
40
+ Open the AWS Console for the ACCOUNT<br>
30
41
 
31
- Open the AWS Console for the ACCOUNT
42
+ -p, --path=PATH: The service PATH to open.<br>
43
+ -b, --browser=BROWSER: Specify an alternative browser.<br>
44
+ -n, --no-token: Do not use saved token.<br>
45
+ -o, --no-open: Do not open the url.
32
46
 
33
47
  * env ACCOUNT:
34
48
 
35
- Outputs bourne shell environment exports for an ACCOUNT
49
+ Outputs bourne shell environment exports for an ACCOUNT<br>
50
+
51
+ -n, --no-token: Do not use saved token.<br>
52
+ -u, --unset, --no-unset: Unset environment variables.
36
53
 
37
54
  * exec ACCOUNT command...:
38
55
 
39
- Execute a COMMAND with the environment set for an ACCOUNT
56
+ Execute a COMMAND with the environment set for an ACCOUNT<br>
57
+
58
+ -n, --no-token: Do not use saved token.<br>
59
+ -b, --no-bundle: Unset Bundler environment variables.
40
60
 
41
61
  * help [COMMAND]:
42
62
 
@@ -44,15 +64,21 @@ The commands are as follows:
44
64
 
45
65
  * import:
46
66
 
47
- Import an ACCOUNT to the keyring from ~/.aws/credentials
67
+ Import an ACCOUNT to the keyring from ~/.aws/credentials<br>
68
+
69
+ -r, --no-remote: Do not validate with remote api.
48
70
 
49
71
  * initialise:
50
72
 
51
- Initialises a new KEYCHAIN
73
+ Initialises a new KEYCHAIN<br>
74
+
75
+ -n, --keychain=KEYCHAIN: Name of KEYCHAIN to initialise.
52
76
 
53
77
  * json ACCOUNT:
54
78
 
55
- Outputs AWS CLI compatible JSON for an ACCOUNT
79
+ Outputs AWS CLI compatible JSON for an ACCOUNT<br>
80
+
81
+ -n, --no-token: Do not use saved token.
56
82
 
57
83
  * list:
58
84
 
@@ -60,7 +86,9 @@ The commands are as follows:
60
86
 
61
87
  * list-role:
62
88
 
63
- Prints a list of roles in the keyring
89
+ Prints a list of roles in the keyring<br>
90
+
91
+ -d, --detail, --no-detail: Show more detail.
64
92
 
65
93
  * remove ACCOUNT:
66
94
 
@@ -80,11 +108,19 @@ The commands are as follows:
80
108
 
81
109
  * token ACCOUNT [ROLE] [MFA]:
82
110
 
83
- Create an STS Token from a ROLE or an MFA code
111
+ Create an STS Token from a ROLE or an MFA code<br>
112
+
113
+ -r, --role=ROLE: The ROLE to assume.<br>
114
+ -c, --code=CODE: Virtual mfa CODE.<br>
115
+ -d, --duration=DURATION: Session DURATION in seconds.
84
116
 
85
117
  * update ACCOUNT:
86
118
 
87
- Updates an ACCOUNT in the keyring
119
+ Updates an ACCOUNT in the keyring<br>
120
+
121
+ -k, --key=KEY: AWS account key id.<br>
122
+ -s, --secret=SECRET: AWS account secret.<br>
123
+ -r, --no-remote: Do not validate with remote api.
88
124
 
89
125
  ## ENVIRONMENT
90
126
 
@@ -132,6 +168,7 @@ Tristan Morgan <tristan.morgan@servian.com> is the maintainer of Awskeyring.
132
168
 
133
169
  * Tristan [tristanmorgan](https://github.com/tristanmorgan)
134
170
  * Adam Sir [AzySir](https://github.com/AzySir)
171
+ * Vito Giarrusso [thtliife](https://github.com/thtliife)
135
172
 
136
173
  ## LICENSE
137
174
 
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.4.0
4
+ version: 1.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tristan Morgan
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-19 00:00:00.000000000 Z
11
+ date: 2021-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-iam
@@ -80,6 +80,7 @@ files:
80
80
  - LICENSE.txt
81
81
  - README.md
82
82
  - Rakefile
83
+ - SECURITY.md
83
84
  - awskeyring.gemspec
84
85
  - exe/awskeyring
85
86
  - i18n/en.yml
@@ -96,9 +97,9 @@ licenses:
96
97
  - MIT
97
98
  metadata:
98
99
  bug_tracker_uri: https://github.com/servian/awskeyring/issues
99
- changelog_uri: https://github.com/servian/awskeyring/blob/master/CHANGELOG.md
100
- documentation_uri: https://rubydoc.info/gems/awskeyring/1.4.0
101
- source_code_uri: https://github.com/servian/awskeyring/tree/v1.4.0
100
+ changelog_uri: https://github.com/servian/awskeyring/blob/main/CHANGELOG.md
101
+ documentation_uri: https://rubydoc.info/gems/awskeyring/1.8.1
102
+ source_code_uri: https://github.com/servian/awskeyring/tree/v1.8.1
102
103
  wiki_uri: https://github.com/servian/awskeyring/wiki
103
104
  post_install_message:
104
105
  rdoc_options: []
@@ -108,7 +109,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
108
109
  requirements:
109
110
  - - ">="
110
111
  - !ruby/object:Gem::Version
111
- version: '0'
112
+ version: 2.6.0
112
113
  required_rubygems_version: !ruby/object:Gem::Requirement
113
114
  requirements:
114
115
  - - ">="