awskeyring 1.0.2 → 1.1.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 +14 -199
- data/Rakefile +3 -0
- data/lib/awskeyring.rb +20 -0
- data/lib/awskeyring/version.rb +1 -1
- data/lib/awskeyring_command.rb +51 -22
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b87abef9f85c6701db2bd73209be0d385ac426b5421aeff5c0f81b1d67b695d9
|
|
4
|
+
data.tar.gz: 63e772094af9ad179f44b254ccf607418bc33577e67d6fd35c304708bdcf7a43
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b78466f81f87df9e9dd48ac5755ed58b9ea35a84d2f87b4c1fc3e9501cf4545cdc5a4730b412967ef8e2ccae2cf641d4fa05decff75d966b7b47d3e1955c30a5
|
|
7
|
+
data.tar.gz: 550148fee86d1dcb7bdf3c52b14400ab9d8bdf1e84361b5f77ad0a05c9d43e86cd539a3a0d6617eff288f9a70925f99cf775f4d150596f308e4f16361325dc1d
|
data/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [v1.1.0](https://github.com/servian/awskeyring/tree/v1.1.0) (2019-11-06)
|
|
4
|
+
|
|
5
|
+
[Full Changelog](https://github.com/servian/awskeyring/compare/v1.0.2...v1.1.0)
|
|
6
|
+
|
|
7
|
+
**Implemented enhancements:**
|
|
8
|
+
|
|
9
|
+
- Add completion to input prompts [\#53](https://github.com/servian/awskeyring/pull/53) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
10
|
+
- Check for existing \(or not\) role names [\#52](https://github.com/servian/awskeyring/pull/52) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
2
11
|
|
|
3
12
|
## [v1.0.2](https://github.com/servian/awskeyring/tree/v1.0.2) (2019-10-18)
|
|
13
|
+
|
|
4
14
|
[Full Changelog](https://github.com/servian/awskeyring/compare/v1.0.1...v1.0.2)
|
|
5
15
|
|
|
6
16
|
**Implemented enhancements:**
|
|
@@ -9,6 +19,7 @@
|
|
|
9
19
|
- Use RuboCop-RSpec too and expect\(\) more. [\#48](https://github.com/servian/awskeyring/pull/48) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
10
20
|
|
|
11
21
|
## [v1.0.1](https://github.com/servian/awskeyring/tree/v1.0.1) (2019-05-23)
|
|
22
|
+
|
|
12
23
|
[Full Changelog](https://github.com/servian/awskeyring/compare/v1.0.0...v1.0.1)
|
|
13
24
|
|
|
14
25
|
**Implemented enhancements:**
|
|
@@ -20,209 +31,13 @@
|
|
|
20
31
|
- Unfreeze secret strings. [\#46](https://github.com/servian/awskeyring/pull/46) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
21
32
|
|
|
22
33
|
## [v1.0.0](https://github.com/servian/awskeyring/tree/v1.0.0) (2019-05-19)
|
|
34
|
+
|
|
23
35
|
[Full Changelog](https://github.com/servian/awskeyring/compare/v0.10.0...v1.0.0)
|
|
24
36
|
|
|
25
37
|
**Implemented enhancements:**
|
|
26
38
|
|
|
27
39
|
- More RuboCop changes and tweaked version string. [\#45](https://github.com/servian/awskeyring/pull/45) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
28
40
|
|
|
29
|
-
## [v0.10.0](https://github.com/servian/awskeyring/tree/v0.10.0) (2019-04-24)
|
|
30
|
-
[Full Changelog](https://github.com/servian/awskeyring/compare/v0.9.0...v0.10.0)
|
|
31
|
-
|
|
32
|
-
**Implemented enhancements:**
|
|
33
|
-
|
|
34
|
-
- Add --unset flag to env command [\#44](https://github.com/servian/awskeyring/pull/44) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
35
|
-
|
|
36
|
-
## [v0.9.0](https://github.com/servian/awskeyring/tree/v0.9.0) (2019-04-09)
|
|
37
|
-
[Full Changelog](https://github.com/servian/awskeyring/compare/v0.8.1...v0.9.0)
|
|
38
|
-
|
|
39
|
-
**Implemented enhancements:**
|
|
40
|
-
|
|
41
|
-
- Strip whitespace from user input [\#43](https://github.com/servian/awskeyring/pull/43) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
42
|
-
|
|
43
|
-
## [v0.8.1](https://github.com/servian/awskeyring/tree/v0.8.1) (2019-02-06)
|
|
44
|
-
[Full Changelog](https://github.com/servian/awskeyring/compare/v0.8.0...v0.8.1)
|
|
45
|
-
|
|
46
|
-
**Fixed bugs:**
|
|
47
|
-
|
|
48
|
-
- Fix usage behind PROXIES [\#42](https://github.com/servian/awskeyring/pull/42) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
49
|
-
|
|
50
|
-
## [v0.8.0](https://github.com/servian/awskeyring/tree/v0.8.0) (2018-12-19)
|
|
51
|
-
[Full Changelog](https://github.com/servian/awskeyring/compare/v0.7.2...v0.8.0)
|
|
52
|
-
|
|
53
|
-
**Implemented enhancements:**
|
|
54
|
-
|
|
55
|
-
- Provide input feedback for secret fields. [\#41](https://github.com/servian/awskeyring/pull/41) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
56
|
-
|
|
57
|
-
**Fixed bugs:**
|
|
58
|
-
|
|
59
|
-
- Cannot enter secret access key when adding new accounts in 0.7.0 [\#36](https://github.com/servian/awskeyring/issues/36)
|
|
60
|
-
|
|
61
|
-
## [v0.7.2](https://github.com/servian/awskeyring/tree/v0.7.2) (2018-12-17)
|
|
62
|
-
[Full Changelog](https://github.com/servian/awskeyring/compare/v0.7.1...v0.7.2)
|
|
63
|
-
|
|
64
|
-
**Fixed bugs:**
|
|
65
|
-
|
|
66
|
-
- Validate that account doesn't already exists. [\#40](https://github.com/servian/awskeyring/pull/40) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
67
|
-
- Check for COMMAND param to exec. [\#38](https://github.com/servian/awskeyring/pull/38) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
68
|
-
|
|
69
|
-
## [v0.7.1](https://github.com/servian/awskeyring/tree/v0.7.1) (2018-12-03)
|
|
70
|
-
[Full Changelog](https://github.com/servian/awskeyring/compare/v0.7.0...v0.7.1)
|
|
71
|
-
|
|
72
|
-
**Fixed bugs:**
|
|
73
|
-
|
|
74
|
-
- Trailing LF was being passed to validator [\#37](https://github.com/servian/awskeyring/pull/37) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
75
|
-
|
|
76
|
-
## [v0.7.0](https://github.com/servian/awskeyring/tree/v0.7.0) (2018-11-26)
|
|
77
|
-
[Full Changelog](https://github.com/servian/awskeyring/compare/v0.6.0...v0.7.0)
|
|
78
|
-
|
|
79
|
-
**Implemented enhancements:**
|
|
80
|
-
|
|
81
|
-
- Validate existing account. [\#35](https://github.com/servian/awskeyring/pull/35) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
82
|
-
- Swap Highline for Thor::LineEditor [\#34](https://github.com/servian/awskeyring/pull/34) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
83
|
-
|
|
84
|
-
## [v0.6.0](https://github.com/servian/awskeyring/tree/v0.6.0) (2018-10-18)
|
|
85
|
-
[Full Changelog](https://github.com/servian/awskeyring/compare/v0.5.3...v0.6.0)
|
|
86
|
-
|
|
87
|
-
**Fixed bugs:**
|
|
88
|
-
|
|
89
|
-
- Use a default Region for Rotate. [\#33](https://github.com/servian/awskeyring/pull/33) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
90
|
-
- Fix JSON time format to use ISO8601. [\#32](https://github.com/servian/awskeyring/pull/32) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
91
|
-
|
|
92
|
-
## [v0.5.3](https://github.com/servian/awskeyring/tree/v0.5.3) (2018-10-03)
|
|
93
|
-
[Full Changelog](https://github.com/servian/awskeyring/compare/v0.5.2...v0.5.3)
|
|
94
|
-
|
|
95
|
-
**Implemented enhancements:**
|
|
96
|
-
|
|
97
|
-
- Console favourites [\#31](https://github.com/servian/awskeyring/pull/31) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
98
|
-
|
|
99
|
-
## [v0.5.2](https://github.com/servian/awskeyring/tree/v0.5.2) (2018-09-18)
|
|
100
|
-
[Full Changelog](https://github.com/servian/awskeyring/compare/v0.5.1...v0.5.2)
|
|
101
|
-
|
|
102
|
-
**Implemented enhancements:**
|
|
103
|
-
|
|
104
|
-
- More robust autocomplete. [\#30](https://github.com/servian/awskeyring/pull/30) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
105
|
-
|
|
106
|
-
## [v0.5.1](https://github.com/servian/awskeyring/tree/v0.5.1) (2018-09-12)
|
|
107
|
-
[Full Changelog](https://github.com/servian/awskeyring/compare/v0.5.0...v0.5.1)
|
|
108
|
-
|
|
109
|
-
**Implemented enhancements:**
|
|
110
|
-
|
|
111
|
-
- Autocomplete flags too. [\#29](https://github.com/servian/awskeyring/pull/29) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
112
|
-
|
|
113
|
-
## [v0.5.0](https://github.com/servian/awskeyring/tree/v0.5.0) (2018-09-10)
|
|
114
|
-
[Full Changelog](https://github.com/servian/awskeyring/compare/v0.4.0...v0.5.0)
|
|
115
|
-
|
|
116
|
-
**Implemented enhancements:**
|
|
117
|
-
|
|
118
|
-
- Separate update account from add account. [\#28](https://github.com/servian/awskeyring/pull/28) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
119
|
-
|
|
120
|
-
**Merged pull requests:**
|
|
121
|
-
|
|
122
|
-
- Refactor [\#27](https://github.com/servian/awskeyring/pull/27) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
123
|
-
|
|
124
|
-
## [v0.4.0](https://github.com/servian/awskeyring/tree/v0.4.0) (2018-08-21)
|
|
125
|
-
[Full Changelog](https://github.com/servian/awskeyring/compare/v0.3.1...v0.4.0)
|
|
126
|
-
|
|
127
|
-
**Implemented enhancements:**
|
|
128
|
-
|
|
129
|
-
- I18n - Internationalisation [\#26](https://github.com/servian/awskeyring/pull/26) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
130
|
-
- Adds no token flag to skip saved token [\#25](https://github.com/servian/awskeyring/pull/25) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
131
|
-
|
|
132
|
-
## [v0.3.1](https://github.com/servian/awskeyring/tree/v0.3.1) (2018-07-25)
|
|
133
|
-
[Full Changelog](https://github.com/servian/awskeyring/compare/v0.3.0...v0.3.1)
|
|
134
|
-
|
|
135
|
-
**Implemented enhancements:**
|
|
136
|
-
|
|
137
|
-
- Warn about key-age [\#24](https://github.com/servian/awskeyring/pull/24) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
138
|
-
|
|
139
|
-
**Fixed bugs:**
|
|
140
|
-
|
|
141
|
-
- Error adding account when region is not specified [\#21](https://github.com/servian/awskeyring/issues/21)
|
|
142
|
-
- Check more locations for current region. [\#23](https://github.com/servian/awskeyring/pull/23) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
143
|
-
|
|
144
|
-
**Merged pull requests:**
|
|
145
|
-
|
|
146
|
-
- Set a default region on cred verify. [\#22](https://github.com/servian/awskeyring/pull/22) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
147
|
-
|
|
148
|
-
## [v0.3.0](https://github.com/servian/awskeyring/tree/v0.3.0) (2018-04-12)
|
|
149
|
-
[Full Changelog](https://github.com/servian/awskeyring/compare/v0.2.0...v0.3.0)
|
|
150
|
-
|
|
151
|
-
**Implemented enhancements:**
|
|
152
|
-
|
|
153
|
-
- Validate tokens upon adding them to the keychain [\#18](https://github.com/servian/awskeyring/issues/18)
|
|
154
|
-
- Generate a token from IAM User credentials using the GetFederationToken API [\#17](https://github.com/servian/awskeyring/issues/17)
|
|
155
|
-
- Test creds against AWS API \(optionally\). [\#20](https://github.com/servian/awskeyring/pull/20) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
156
|
-
- Allow STS get\_session\_token without role [\#19](https://github.com/servian/awskeyring/pull/19) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
157
|
-
|
|
158
|
-
## [v0.2.0](https://github.com/servian/awskeyring/tree/v0.2.0) (2018-04-05)
|
|
159
|
-
[Full Changelog](https://github.com/servian/awskeyring/compare/v0.1.1...v0.2.0)
|
|
160
|
-
|
|
161
|
-
**Implemented enhancements:**
|
|
162
|
-
|
|
163
|
-
- Add AWS CLI credential\_process compatible JSON output [\#16](https://github.com/servian/awskeyring/pull/16) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
164
|
-
|
|
165
|
-
## [v0.1.1](https://github.com/servian/awskeyring/tree/v0.1.1) (2018-03-25)
|
|
166
|
-
[Full Changelog](https://github.com/servian/awskeyring/compare/v0.1.0...v0.1.1)
|
|
167
|
-
|
|
168
|
-
**Merged pull requests:**
|
|
169
|
-
|
|
170
|
-
- More coverage with tests. [\#15](https://github.com/servian/awskeyring/pull/15) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
171
|
-
- Validate MFA code and tweak Autocomplete [\#14](https://github.com/servian/awskeyring/pull/14) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
172
|
-
|
|
173
|
-
## [v0.1.0](https://github.com/servian/awskeyring/tree/v0.1.0) (2018-03-14)
|
|
174
|
-
[Full Changelog](https://github.com/servian/awskeyring/compare/v0.0.6...v0.1.0)
|
|
175
|
-
|
|
176
|
-
**Implemented enhancements:**
|
|
177
|
-
|
|
178
|
-
- Item refactor [\#13](https://github.com/servian/awskeyring/pull/13) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
179
|
-
- Aws refactor [\#12](https://github.com/servian/awskeyring/pull/12) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
180
|
-
|
|
181
|
-
## [v0.0.6](https://github.com/servian/awskeyring/tree/v0.0.6) (2018-03-01)
|
|
182
|
-
[Full Changelog](https://github.com/servian/awskeyring/compare/v0.0.5...v0.0.6)
|
|
183
|
-
|
|
184
|
-
**Implemented enhancements:**
|
|
185
|
-
|
|
186
|
-
- Credential Rotation Feature [\#4](https://github.com/servian/awskeyring/issues/4)
|
|
187
|
-
- Rotate credentials feature. [\#11](https://github.com/servian/awskeyring/pull/11) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
188
|
-
|
|
189
|
-
**Merged pull requests:**
|
|
190
|
-
|
|
191
|
-
- Input validation [\#10](https://github.com/servian/awskeyring/pull/10) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
192
|
-
- Adding a check for incorrect file modes. [\#9](https://github.com/servian/awskeyring/pull/9) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
193
|
-
|
|
194
|
-
## [v0.0.5](https://github.com/servian/awskeyring/tree/v0.0.5) (2018-02-15)
|
|
195
|
-
[Full Changelog](https://github.com/servian/awskeyring/compare/v0.0.4...v0.0.5)
|
|
196
|
-
|
|
197
|
-
**Fixed bugs:**
|
|
198
|
-
|
|
199
|
-
- Issue on add [\#7](https://github.com/servian/awskeyring/issues/7)
|
|
200
|
-
|
|
201
|
-
**Merged pull requests:**
|
|
202
|
-
|
|
203
|
-
- fix issue \#7 and add a path to open console. [\#8](https://github.com/servian/awskeyring/pull/8) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
204
|
-
|
|
205
|
-
## [v0.0.4](https://github.com/servian/awskeyring/tree/v0.0.4) (2018-01-29)
|
|
206
|
-
[Full Changelog](https://github.com/servian/awskeyring/compare/v0.0.3...v0.0.4)
|
|
207
|
-
|
|
208
|
-
## [v0.0.3](https://github.com/servian/awskeyring/tree/v0.0.3) (2018-01-28)
|
|
209
|
-
[Full Changelog](https://github.com/servian/awskeyring/compare/v0.0.2...v0.0.3)
|
|
210
|
-
|
|
211
|
-
**Implemented enhancements:**
|
|
212
|
-
|
|
213
|
-
- Remove Token feature [\#5](https://github.com/servian/awskeyring/issues/5)
|
|
214
|
-
- Implement exec command [\#2](https://github.com/servian/awskeyring/issues/2)
|
|
215
|
-
- Add Remove token feature [\#6](https://github.com/servian/awskeyring/pull/6) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
216
|
-
- Implement exec feature. [\#3](https://github.com/servian/awskeyring/pull/3) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
217
|
-
|
|
218
|
-
## [v0.0.2](https://github.com/servian/awskeyring/tree/v0.0.2) (2018-01-18)
|
|
219
|
-
[Full Changelog](https://github.com/servian/awskeyring/compare/v0.0.1...v0.0.2)
|
|
220
|
-
|
|
221
|
-
**Merged pull requests:**
|
|
222
|
-
|
|
223
|
-
- Sledgehammer disable of rubocop metrics. [\#1](https://github.com/servian/awskeyring/pull/1) ([tristanmorgan](https://github.com/tristanmorgan))
|
|
224
|
-
|
|
225
|
-
## [v0.0.1](https://github.com/servian/awskeyring/tree/v0.0.1) (2017-12-25)
|
|
226
41
|
|
|
227
42
|
|
|
228
|
-
\* *This
|
|
43
|
+
\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*
|
data/Rakefile
CHANGED
|
@@ -7,7 +7,10 @@ require 'github_changelog_generator/task'
|
|
|
7
7
|
require 'yard'
|
|
8
8
|
|
|
9
9
|
GitHubChangelogGenerator::RakeTask.new :changelog do |config|
|
|
10
|
+
config.user = 'servian'
|
|
11
|
+
config.project = 'awskeyring'
|
|
10
12
|
config.future_release = "v#{Awskeyring::VERSION}"
|
|
13
|
+
config.since_tag = 'v0.10.0'
|
|
11
14
|
end
|
|
12
15
|
|
|
13
16
|
RuboCop::RakeTask.new do |rubocop|
|
data/lib/awskeyring.rb
CHANGED
|
@@ -302,4 +302,24 @@ module Awskeyring # rubocop:disable Metrics/ModuleLength
|
|
|
302
302
|
|
|
303
303
|
account_name
|
|
304
304
|
end
|
|
305
|
+
|
|
306
|
+
# Validate role exists
|
|
307
|
+
#
|
|
308
|
+
# @param [String] role_name the associated role name.
|
|
309
|
+
def self.role_exists(role_name)
|
|
310
|
+
Awskeyring::Validate.role_name(role_name)
|
|
311
|
+
raise 'Role does not exist' unless list_role_names.include?(role_name)
|
|
312
|
+
|
|
313
|
+
role_name
|
|
314
|
+
end
|
|
315
|
+
|
|
316
|
+
# Validate role does not exists
|
|
317
|
+
#
|
|
318
|
+
# @param [String] role_name the associated role name.
|
|
319
|
+
def self.role_not_exists(role_name)
|
|
320
|
+
Awskeyring::Validate.role_name(role_name)
|
|
321
|
+
raise 'Role already exists' if list_role_names.include?(role_name)
|
|
322
|
+
|
|
323
|
+
role_name
|
|
324
|
+
end
|
|
305
325
|
end
|
data/lib/awskeyring/version.rb
CHANGED
data/lib/awskeyring_command.rb
CHANGED
|
@@ -44,7 +44,12 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
|
44
44
|
exit 1
|
|
45
45
|
end
|
|
46
46
|
|
|
47
|
-
keychain =
|
|
47
|
+
keychain = ask_check(
|
|
48
|
+
existing: options[:keychain],
|
|
49
|
+
flags: 'optional',
|
|
50
|
+
message: I18n.t('message.keychain'),
|
|
51
|
+
validator: Awskeyring::Validate.method(:account_name)
|
|
52
|
+
)
|
|
48
53
|
keychain = 'awskeyring' if keychain.empty?
|
|
49
54
|
|
|
50
55
|
puts I18n.t('message.newkeychain')
|
|
@@ -78,7 +83,8 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
|
78
83
|
else
|
|
79
84
|
account = ask_check(
|
|
80
85
|
existing: account, message: I18n.t('message.account'),
|
|
81
|
-
validator: Awskeyring.method(:account_exists)
|
|
86
|
+
validator: Awskeyring.method(:account_exists),
|
|
87
|
+
limited_to: Awskeyring.list_account_names
|
|
82
88
|
)
|
|
83
89
|
cred = age_check_and_get(account: account, no_token: options['no-token'])
|
|
84
90
|
put_env_string(cred)
|
|
@@ -88,7 +94,7 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
|
88
94
|
desc 'json ACCOUNT', I18n.t('json.desc')
|
|
89
95
|
method_option 'no-token', type: :boolean, aliases: '-n', desc: I18n.t('method_option.notoken'), default: false
|
|
90
96
|
# Print JSON for use with credential_process
|
|
91
|
-
def json(account
|
|
97
|
+
def json(account)
|
|
92
98
|
account = ask_check(
|
|
93
99
|
existing: account, message: I18n.t('message.account'), validator: Awskeyring.method(:account_exists)
|
|
94
100
|
)
|
|
@@ -137,11 +143,11 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
|
137
143
|
)
|
|
138
144
|
secret = ask_check(
|
|
139
145
|
existing: options[:secret], message: I18n.t('message.secret'),
|
|
140
|
-
|
|
146
|
+
flags: 'secure', validator: Awskeyring::Validate.method(:secret_access_key)
|
|
141
147
|
)
|
|
142
148
|
mfa = ask_check(
|
|
143
149
|
existing: options[:mfa], message: I18n.t('message.mfa'),
|
|
144
|
-
|
|
150
|
+
flags: 'optional', validator: Awskeyring::Validate.method(:mfa_arn)
|
|
145
151
|
)
|
|
146
152
|
Awskeyring::Awsapi.verify_cred(key: key, secret: secret) unless options['no-remote']
|
|
147
153
|
Awskeyring.add_account(
|
|
@@ -158,16 +164,18 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
|
158
164
|
method_option :secret, type: :string, aliases: '-s', desc: I18n.t('method_option.secret')
|
|
159
165
|
method_option 'no-remote', type: :boolean, aliases: '-r', desc: I18n.t('method_option.noremote'), default: false
|
|
160
166
|
# Update an Account
|
|
161
|
-
def update(account = nil) # rubocop:disable Metrics/MethodLength
|
|
167
|
+
def update(account = nil) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
|
162
168
|
account = ask_check(
|
|
163
|
-
existing: account, message: I18n.t('message.account'),
|
|
169
|
+
existing: account, message: I18n.t('message.account'),
|
|
170
|
+
validator: Awskeyring.method(:account_exists),
|
|
171
|
+
limited_to: Awskeyring.list_account_names
|
|
164
172
|
)
|
|
165
173
|
key = ask_check(
|
|
166
174
|
existing: options[:key], message: I18n.t('message.key'), validator: Awskeyring::Validate.method(:access_key)
|
|
167
175
|
)
|
|
168
176
|
secret = ask_check(
|
|
169
177
|
existing: options[:secret], message: I18n.t('message.secret'),
|
|
170
|
-
|
|
178
|
+
flags: 'secure', validator: Awskeyring::Validate.method(:secret_access_key)
|
|
171
179
|
)
|
|
172
180
|
Awskeyring::Awsapi.verify_cred(key: key, secret: secret) unless options['no-remote']
|
|
173
181
|
Awskeyring.update_account(
|
|
@@ -185,7 +193,7 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
|
185
193
|
def add_role(role = nil)
|
|
186
194
|
role = ask_check(
|
|
187
195
|
existing: role, message: I18n.t('message.role'),
|
|
188
|
-
validator: Awskeyring
|
|
196
|
+
validator: Awskeyring.method(:role_not_exists)
|
|
189
197
|
)
|
|
190
198
|
arn = ask_check(
|
|
191
199
|
existing: options[:arn], message: I18n.t('message.arn'),
|
|
@@ -203,7 +211,8 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
|
203
211
|
# Remove an account
|
|
204
212
|
def remove(account = nil)
|
|
205
213
|
account = ask_check(
|
|
206
|
-
existing: account, message: I18n.t('message.account'), validator: Awskeyring.method(:account_exists)
|
|
214
|
+
existing: account, message: I18n.t('message.account'), validator: Awskeyring.method(:account_exists),
|
|
215
|
+
limited_to: Awskeyring.list_account_names
|
|
207
216
|
)
|
|
208
217
|
Awskeyring.delete_account(account: account, message: I18n.t('message.delaccount', account: account))
|
|
209
218
|
end
|
|
@@ -212,7 +221,8 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
|
212
221
|
# remove a session token
|
|
213
222
|
def remove_token(account = nil)
|
|
214
223
|
account = ask_check(
|
|
215
|
-
existing: account, message: I18n.t('message.account'), validator: Awskeyring.method(:account_exists)
|
|
224
|
+
existing: account, message: I18n.t('message.account'), validator: Awskeyring.method(:account_exists),
|
|
225
|
+
limited_to: Awskeyring.list_account_names
|
|
216
226
|
)
|
|
217
227
|
Awskeyring.delete_token(account: account, message: I18n.t('message.deltoken', account: account))
|
|
218
228
|
end
|
|
@@ -222,7 +232,8 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
|
222
232
|
# remove a role
|
|
223
233
|
def remove_role(role = nil)
|
|
224
234
|
role = ask_check(
|
|
225
|
-
existing: role, message: I18n.t('message.role'), validator: Awskeyring
|
|
235
|
+
existing: role, message: I18n.t('message.role'), validator: Awskeyring.method(:role_exists),
|
|
236
|
+
limited_to: Awskeyring.list_role_names
|
|
226
237
|
)
|
|
227
238
|
Awskeyring.delete_role(role_name: role, message: I18n.t('message.delrole', role: role))
|
|
228
239
|
end
|
|
@@ -231,7 +242,10 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
|
231
242
|
# rotate Account keys
|
|
232
243
|
def rotate(account = nil) # rubocop:disable Metrics/MethodLength
|
|
233
244
|
account = ask_check(
|
|
234
|
-
existing: account,
|
|
245
|
+
existing: account,
|
|
246
|
+
message: I18n.t('message.account'),
|
|
247
|
+
validator: Awskeyring.method(:account_exists),
|
|
248
|
+
limited_to: Awskeyring.list_account_names
|
|
235
249
|
)
|
|
236
250
|
cred = Awskeyring.get_valid_creds(account: account, no_token: true)
|
|
237
251
|
|
|
@@ -263,12 +277,16 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
|
263
277
|
# generate a sessiopn token
|
|
264
278
|
def token(account = nil, role = nil, code = nil) # rubocop:disable all
|
|
265
279
|
account = ask_check(
|
|
266
|
-
existing: account,
|
|
280
|
+
existing: account,
|
|
281
|
+
message: I18n.t('message.account'),
|
|
282
|
+
validator: Awskeyring.method(:account_exists),
|
|
283
|
+
limited_to: Awskeyring.list_account_names
|
|
267
284
|
)
|
|
268
285
|
role ||= options[:role]
|
|
269
286
|
if role
|
|
270
287
|
role = ask_check(
|
|
271
|
-
existing: role, message: I18n.t('message.role'), validator: Awskeyring
|
|
288
|
+
existing: role, message: I18n.t('message.role'), validator: Awskeyring.method(:role_exists),
|
|
289
|
+
limited_to: Awskeyring.list_role_names
|
|
272
290
|
)
|
|
273
291
|
end
|
|
274
292
|
code ||= options[:code]
|
|
@@ -320,7 +338,10 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
|
320
338
|
# Open the AWS Console
|
|
321
339
|
def console(account = nil) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
|
322
340
|
account = ask_check(
|
|
323
|
-
existing: account,
|
|
341
|
+
existing: account,
|
|
342
|
+
message: I18n.t('message.account'),
|
|
343
|
+
validator: Awskeyring.method(:account_exists),
|
|
344
|
+
limited_to: Awskeyring.list_account_names
|
|
324
345
|
)
|
|
325
346
|
cred = age_check_and_get(account: account, no_token: options['no-token'])
|
|
326
347
|
|
|
@@ -436,11 +457,17 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
|
436
457
|
Awskeyring::Awsapi::AWS_ENV_VARS.each { |key| puts "unset #{key}" unless env_var.key?(key) }
|
|
437
458
|
end
|
|
438
459
|
|
|
439
|
-
def ask_check(existing:, message:,
|
|
460
|
+
def ask_check(existing:, message:, flags: nil, validator: nil, limited_to: nil) # rubocop:disable Metrics/MethodLength
|
|
440
461
|
retries ||= 3
|
|
441
462
|
begin
|
|
442
|
-
value = ask_missing(
|
|
443
|
-
|
|
463
|
+
value = ask_missing(
|
|
464
|
+
existing: existing,
|
|
465
|
+
message: message,
|
|
466
|
+
secure: 'secure'.eql?(flags),
|
|
467
|
+
optional: 'optional'.eql?(flags),
|
|
468
|
+
limited_to: limited_to
|
|
469
|
+
)
|
|
470
|
+
value = validator.call(value) unless value.empty? && 'optional'.eql?(flags)
|
|
444
471
|
rescue RuntimeError => e
|
|
445
472
|
warn e.message
|
|
446
473
|
existing = nil
|
|
@@ -450,15 +477,17 @@ class AwskeyringCommand < Thor # rubocop:disable Metrics/ClassLength
|
|
|
450
477
|
value
|
|
451
478
|
end
|
|
452
479
|
|
|
453
|
-
def ask_missing(existing:, message:, secure: false, optional: false)
|
|
454
|
-
existing || ask(message: message, secure: secure, optional: optional).strip
|
|
480
|
+
def ask_missing(existing:, message:, secure: false, optional: false, limited_to: nil)
|
|
481
|
+
existing || ask(message: message, secure: secure, optional: optional, limited_to: limited_to).strip
|
|
455
482
|
end
|
|
456
483
|
|
|
457
|
-
def ask(message:, secure: false, optional: false)
|
|
484
|
+
def ask(message:, secure: false, optional: false, limited_to: nil)
|
|
458
485
|
if secure
|
|
459
486
|
Awskeyring::Input.read_secret(message.rjust(20) + ': ')
|
|
460
487
|
elsif optional
|
|
461
488
|
Thor::LineEditor.readline((message + ' (optional)').rjust(20) + ': ')
|
|
489
|
+
elsif limited_to
|
|
490
|
+
Thor::LineEditor.readline(message.rjust(20) + ': ', limited_to: limited_to)
|
|
462
491
|
else
|
|
463
492
|
Thor::LineEditor.readline(message.rjust(20) + ': ')
|
|
464
493
|
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: 1.0
|
|
4
|
+
version: 1.1.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: 2019-
|
|
11
|
+
date: 2019-11-06 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: aws-sdk-iam
|