aws-mfa 0.3.0 → 0.3.2

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: 7acea0de7d157dcacffc45761829147d3928f4ff
4
- data.tar.gz: 18a947ec9f627b2e303585149c68e0a3393510b2
3
+ metadata.gz: 8e529f0ad78a90cfd6692e5a2a73f037701e1212
4
+ data.tar.gz: 3ef7f95f65837e93ba3c6a2c36e9279f9fd38be9
5
5
  SHA512:
6
- metadata.gz: b6a4b52a6a3ce238876ddffdcf9ea3d428e9c75e41069a9394be4fe7b477d9971fb0d42d7841d6e9503724096d5a446d20727ff124e9ec969fa506172de7db04
7
- data.tar.gz: 4adc1bc7e1171f840e855264f05eec5ccda076404fddbb8e95f55ef945d9ce222af1cb79d20701fd5b3e1a4818cd204373ccc24c2abd9d4f77dbd49b1d3f446b
6
+ metadata.gz: 4922a7081513a55505a136498b8d24ac24d5ca33873eb940e62a047d7a48fbeb92023d932f6904518c04b13cd216206a82940cab79259bf91a74fd04a7ddc70c
7
+ data.tar.gz: d91fdce8ce9c9ec6560ffa436c5324808ec5c0f5dd4c7a3195f383943878caf74ffeb8097ff3026bf10b0589dd0573e9f648ec2a35a7d517bac3593706231c5a
@@ -1,5 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ $LOAD_PATH.unshift File.expand_path(File.join(File.dirname(__FILE__), '../lib'))
4
+
3
5
  require 'aws_mfa'
4
6
 
5
7
  begin
@@ -1,5 +1,7 @@
1
1
  require 'json'
2
2
  require 'aws_mfa/errors'
3
+ require 'aws_mfa/shell_command'
4
+ require 'aws_mfa/shell_command_result'
3
5
 
4
6
  class AwsMfa
5
7
  attr_reader :aws_config_dir
@@ -72,7 +74,15 @@ class AwsMfa
72
74
  end
73
75
 
74
76
  def mfa_devices(profile='default')
75
- @mfa_devices ||= JSON.parse(`aws --profile #{profile} --output json iam list-mfa-devices`).fetch('MFADevices')
77
+ @mfa_devices ||= begin
78
+ list_mfa_devices_command = "aws --profile #{profile} --output json iam list-mfa-devices"
79
+ result = AwsMfa::ShellCommand.new(list_mfa_devices_command).call
80
+ if result.succeeded?
81
+ JSON.parse(result.output).fetch('MFADevices')
82
+ else
83
+ raise Errors::Error, 'There was a problem fetching MFA devices from AWS'
84
+ end
85
+ end
76
86
  end
77
87
 
78
88
  def write_arn_to_file(arn_file, arn)
@@ -104,7 +114,13 @@ class AwsMfa
104
114
  def load_credentials_from_aws(arn, profile='default')
105
115
  code = request_code_from_user
106
116
  unset_environment
107
- `aws --profile #{profile} --output json sts get-session-token --serial-number #{arn} --token-code #{code}`
117
+ credentials_command = "aws --profile #{profile} --output json sts get-session-token --serial-number #{arn} --token-code #{code}"
118
+ result = AwsMfa::ShellCommand.new(credentials_command).call
119
+ if result.succeeded?
120
+ result.output
121
+ else
122
+ raise Errors::InvalidCode, 'There was a problem validating the MFA code with AWS'
123
+ end
108
124
  end
109
125
 
110
126
  def write_credentials_to_file(credentials_file, credentials)
@@ -0,0 +1,14 @@
1
+ class AwsMfa
2
+ class ShellCommand
3
+ attr_reader :command
4
+
5
+ def initialize(command)
6
+ @command = command
7
+ end
8
+
9
+ def call
10
+ output = `#{command}`
11
+ ShellCommandResult.new(output, $?)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,18 @@
1
+ class AwsMfa
2
+ class ShellCommandResult
3
+ attr_reader :output
4
+
5
+ def initialize(command_output, process_status)
6
+ @output = command_output
7
+ @process_status = process_status
8
+ end
9
+
10
+ def succeeded?
11
+ process_status.success?
12
+ end
13
+
14
+ private
15
+
16
+ attr_reader :process_status
17
+ end
18
+ end
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-mfa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Pitts
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-09 00:00:00.000000000 Z
11
+ date: 2016-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.1'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: fakefs
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0.6'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0.6'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: simplecov
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0.9'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0.9'
55
55
  description: Run AWS commands with MFA
@@ -59,9 +59,11 @@ executables:
59
59
  extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
- - bin/aws-mfa
63
62
  - lib/aws_mfa.rb
64
63
  - lib/aws_mfa/errors.rb
64
+ - lib/aws_mfa/shell_command.rb
65
+ - lib/aws_mfa/shell_command_result.rb
66
+ - bin/aws-mfa
65
67
  homepage: http://www.github.com/lonelyplanet/aws-mfa
66
68
  licenses:
67
69
  - Apache-2.0
@@ -72,19 +74,20 @@ require_paths:
72
74
  - lib
73
75
  required_ruby_version: !ruby/object:Gem::Requirement
74
76
  requirements:
75
- - - ">="
77
+ - - '>='
76
78
  - !ruby/object:Gem::Version
77
79
  version: '0'
78
80
  required_rubygems_version: !ruby/object:Gem::Requirement
79
81
  requirements:
80
- - - ">="
82
+ - - '>='
81
83
  - !ruby/object:Gem::Version
82
84
  version: '0'
83
85
  requirements:
84
86
  - aws-cli
85
87
  rubyforge_project:
86
- rubygems_version: 2.4.5.1
88
+ rubygems_version: 2.0.14
87
89
  signing_key:
88
90
  specification_version: 4
89
91
  summary: Run AWS commands with MFA
90
92
  test_files: []
93
+ has_rdoc: