awskeyring 0.7.1 → 0.7.2

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: 1ebe6ee9bb5814b1566494d8be14c6b789b86721
4
- data.tar.gz: 59be7211203c6a51d309b92c66ea83d83ee6b046
3
+ metadata.gz: 26f6f9112f7dd321eb160034017bdcfde89c3ea9
4
+ data.tar.gz: 4d0c3eda8ef3301077925a69d1da7b6536c12229
5
5
  SHA512:
6
- metadata.gz: e2d948135aac4bc9b5e1b13899060934ed8333fe991587de39a50d0becb16f45c3fa53c0674e844ad6212e404f91354e0cb43dd7dbc3d3d7f3c81c2e025e436c
7
- data.tar.gz: 83844924a2145ef993f60afba15130b7f1526611419b9854ddd9e30a3295f837471ec1d4a942e361d4482347fa0b0054cb60db9baa818cc5b8e44c4ad357433c
6
+ metadata.gz: f7e7822873229041ec91de08fc4c073cafc8aee5d1e98bb4cad0424954196985f4679f23d041f035fe228359b411b9e6a80dcc2ba7c2d89c97591106b3f960bd
7
+ data.tar.gz: de9945806b4a310e6ba60e486b00aeb40b1857a6649ff0e424cec36eb8710607a7e3abb77d01fbf486608b59e6c98a2c485c5d395bb60e5a0177feaf7d061e5d
@@ -1,5 +1,13 @@
1
1
  # Change Log
2
2
 
3
+ ## [v0.7.2](https://github.com/vibrato/awskeyring/tree/v0.7.2) (2018-12-17)
4
+ [Full Changelog](https://github.com/vibrato/awskeyring/compare/v0.7.1...v0.7.2)
5
+
6
+ **Fixed bugs:**
7
+
8
+ - Validate that account doesn't already exists. [\#40](https://github.com/vibrato/awskeyring/pull/40) ([tristanmorgan](https://github.com/tristanmorgan))
9
+ - Check for COMMAND param to exec. [\#38](https://github.com/vibrato/awskeyring/pull/38) ([tristanmorgan](https://github.com/tristanmorgan))
10
+
3
11
  ## [v0.7.1](https://github.com/vibrato/awskeyring/tree/v0.7.1) (2018-12-03)
4
12
  [Full Changelog](https://github.com/vibrato/awskeyring/compare/v0.7.0...v0.7.1)
5
13
 
@@ -68,6 +68,7 @@ en:
68
68
  delrole: '# Removing role %{role}'
69
69
  deltoken: '# Removing token for account %{account}'
70
70
  delexpired: '# Removing expired session credentials'
71
+ exec: '# COMMAND not provided'
71
72
  missing: '# Config missing, run `%{bin} initialise` to recreate.'
72
73
  rotate: '# You have two access keys for account %{account}'
73
74
  temporary: '# Using temporary session credentials.'
@@ -1,5 +1,6 @@
1
1
  require 'json'
2
2
  require 'keychain'
3
+ require 'awskeyring/validate'
3
4
 
4
5
  # Awskeyring Module,
5
6
  # gives you an interface to access keychains and items.
@@ -284,8 +285,19 @@ module Awskeyring # rubocop:disable Metrics/ModuleLength
284
285
  #
285
286
  # @param [String] account_name the associated account name.
286
287
  def self.account_exists(account_name)
288
+ Awskeyring::Validate.account_name(account_name)
287
289
  raise 'Account does not exist' unless list_account_names.include?(account_name)
288
290
 
289
291
  account_name
290
292
  end
293
+
294
+ # Validate account does not exists
295
+ #
296
+ # @param [String] account_name the associated account name.
297
+ def self.account_not_exists(account_name)
298
+ Awskeyring::Validate.account_name(account_name)
299
+ raise 'Account already exists' if list_account_names.include?(account_name)
300
+
301
+ account_name
302
+ end
291
303
  end
@@ -1,4 +1,4 @@
1
1
  module Awskeyring
2
2
  # The Gems version number
3
- VERSION = '0.7.1'.freeze
3
+ VERSION = '0.7.2'.freeze
4
4
  end
@@ -70,12 +70,7 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
70
70
  existing: account, message: I18n.t('message.account'), validator: Awskeyring.method(:account_exists)
71
71
  )
72
72
  cred = age_check_and_get(account: account, no_token: options['no-token'])
73
- put_env_string(
74
- account: cred[:account],
75
- key: cred[:key],
76
- secret: cred[:secret],
77
- token: cred[:token]
78
- )
73
+ put_env_string(cred)
79
74
  end
80
75
 
81
76
  desc 'json ACCOUNT', I18n.t('json.desc')
@@ -99,15 +94,20 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
99
94
  method_option 'no-token', type: :boolean, aliases: '-n', desc: I18n.t('method_option.notoken'), default: false
100
95
  # execute an external command with env set
101
96
  def exec(account, *command)
97
+ if command.empty?
98
+ warn I18n.t('message.exec')
99
+ exit 1
100
+ end
102
101
  cred = age_check_and_get(account: account, no_token: options['no-token'])
103
- env_vars = env_vars(
104
- account: cred[:account],
105
- key: cred[:key],
106
- secret: cred[:secret],
107
- token: cred[:token]
108
- )
109
- pid = Process.spawn(env_vars, command.join(' '))
110
- Process.wait pid
102
+ env_vars = env_vars(cred)
103
+ begin
104
+ pid = Process.spawn(env_vars, command.join(' '))
105
+ Process.wait pid
106
+ $CHILD_STATUS
107
+ rescue Errno::ENOENT => err
108
+ warn err.to_s
109
+ exit 1
110
+ end
111
111
  end
112
112
 
113
113
  desc 'add ACCOUNT', I18n.t('add.desc')
@@ -118,7 +118,7 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
118
118
  # Add an Account
119
119
  def add(account = nil) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
120
120
  account = ask_check(
121
- existing: account, message: I18n.t('message.account'), validator: Awskeyring::Validate.method(:account_name)
121
+ existing: account, message: I18n.t('message.account'), validator: Awskeyring.method(:account_not_exists)
122
122
  )
123
123
  key = ask_check(
124
124
  existing: options[:key], message: I18n.t('message.key'), validator: Awskeyring::Validate.method(:access_key)
@@ -418,27 +418,27 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
418
418
  self.class.all_commands[command].options.values.map(&:switch_name)
419
419
  end
420
420
 
421
- def env_vars(account:, key:, secret:, token:)
421
+ def env_vars(cred)
422
422
  env_var = {}
423
423
  env_var['AWS_DEFAULT_REGION'] = 'us-east-1' unless Awskeyring::Awsapi.region
424
- env_var['AWS_ACCOUNT_NAME'] = account
425
- env_var['AWS_ACCESS_KEY_ID'] = key
426
- env_var['AWS_ACCESS_KEY'] = key
427
- env_var['AWS_SECRET_ACCESS_KEY'] = secret
428
- env_var['AWS_SECRET_KEY'] = secret
429
- if token
430
- env_var['AWS_SECURITY_TOKEN'] = token
431
- env_var['AWS_SESSION_TOKEN'] = token
424
+ env_var['AWS_ACCOUNT_NAME'] = cred[:account]
425
+ env_var['AWS_ACCESS_KEY_ID'] = cred[:key]
426
+ env_var['AWS_ACCESS_KEY'] = cred[:key]
427
+ env_var['AWS_SECRET_ACCESS_KEY'] = cred[:secret]
428
+ env_var['AWS_SECRET_KEY'] = cred[:secret]
429
+ if cred[:token]
430
+ env_var['AWS_SECURITY_TOKEN'] = cred[:token]
431
+ env_var['AWS_SESSION_TOKEN'] = cred[:token]
432
432
  end
433
433
  env_var
434
434
  end
435
435
 
436
- def put_env_string(account:, key:, secret:, token:)
437
- env_var = env_vars(account: account, key: key, secret: secret, token: token)
436
+ def put_env_string(cred)
437
+ env_var = env_vars(cred)
438
438
  env_var.each { |var, value| puts "export #{var}=\"#{value}\"" }
439
439
 
440
- puts 'unset AWS_SECURITY_TOKEN' unless token
441
- puts 'unset AWS_SESSION_TOKEN' unless token
440
+ puts 'unset AWS_SECURITY_TOKEN' unless cred[:token]
441
+ puts 'unset AWS_SESSION_TOKEN' unless cred[:token]
442
442
  end
443
443
 
444
444
  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.7.1
4
+ version: 0.7.2
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-12-03 00:00:00.000000000 Z
11
+ date: 2018-12-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-iam