secret_config 0.7.0 → 0.7.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/secret_config/cli.rb +34 -19
- data/lib/secret_config/version.rb +1 -1
- 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: 4774ef1279f56c5ce70a89de9fdada0c661b4085afef81c6296aa56800da92fa
|
4
|
+
data.tar.gz: 8f16b3bf4a7193315a5c761f3ce39283a23851660c2aa61752b8d958b1798e20
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0afe6dab591c52af29ecb7a95317c8da193e8220b0a89da8f4dbd8f641c9aa8848adf033aa32ffc15f7974c54ec245791914526b07f3a589dec1e562caa91e3b
|
7
|
+
data.tar.gz: feb776daefb9795da0ffabcec4cc3da4a6030bcc3d6043525eba24823e0d6051c072ebfb0ee019466eeadef03e491afdd5ed88a0ac552575a78351b1c456d5b9
|
data/lib/secret_config/cli.rb
CHANGED
@@ -10,7 +10,7 @@ module SecretConfig
|
|
10
10
|
class CLI
|
11
11
|
attr_reader :path, :region, :provider,
|
12
12
|
:export, :no_filter,
|
13
|
-
:import, :key_id, :key_alias, :random_size, :prune, :
|
13
|
+
:import, :key_id, :key_alias, :random_size, :prune, :force,
|
14
14
|
:diff_path, :import_path,
|
15
15
|
:fetch_key, :delete_key, :set_key, :set_value, :delete_path,
|
16
16
|
:copy_path, :diff,
|
@@ -46,6 +46,7 @@ module SecretConfig
|
|
46
46
|
@delete_path = nil
|
47
47
|
@diff_path = nil
|
48
48
|
@import_path = nil
|
49
|
+
@force = false
|
49
50
|
|
50
51
|
if argv.empty?
|
51
52
|
puts parser
|
@@ -63,13 +64,13 @@ module SecretConfig
|
|
63
64
|
elsif export
|
64
65
|
run_export(export, path, filtered: !no_filter)
|
65
66
|
elsif import
|
66
|
-
run_import(import, path, prune)
|
67
|
+
run_import(import, path, prune, force)
|
67
68
|
elsif import_path
|
68
|
-
run_import_path(import_path, path, prune)
|
69
|
+
run_import_path(import_path, path, prune, force)
|
69
70
|
elsif diff
|
70
71
|
run_diff(diff, path)
|
71
72
|
elsif diff_path
|
72
|
-
run_diff_path(
|
73
|
+
run_diff_path(diff_path, path)
|
73
74
|
elsif set_key
|
74
75
|
run_set(set_key, set_value)
|
75
76
|
elsif fetch_key
|
@@ -152,6 +153,10 @@ module SecretConfig
|
|
152
153
|
@prune = true
|
153
154
|
end
|
154
155
|
|
156
|
+
opts.on "--force", "During import overwrite all values, not just the changed ones. Useful for changing the KMS key. Only applies to --import and --import-path." do
|
157
|
+
@force = true
|
158
|
+
end
|
159
|
+
|
155
160
|
opts.on "--key_id KEY_ID", "Encrypt config settings with this AWS KMS key id. Default: AWS Default key." do |key_id|
|
156
161
|
@key_id = key_id
|
157
162
|
end
|
@@ -182,14 +187,15 @@ module SecretConfig
|
|
182
187
|
private
|
183
188
|
|
184
189
|
def provider_instance
|
185
|
-
@provider_instance ||=
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
190
|
+
@provider_instance ||=
|
191
|
+
begin
|
192
|
+
case provider
|
193
|
+
when :ssm
|
194
|
+
Providers::Ssm.new(key_id: key_id, key_alias: key_alias)
|
195
|
+
else
|
196
|
+
raise ArgumentError, "Invalid provider: #{provider}"
|
197
|
+
end
|
191
198
|
end
|
192
|
-
end
|
193
199
|
end
|
194
200
|
|
195
201
|
def run_export(file_name, path, filtered: true)
|
@@ -201,20 +207,20 @@ module SecretConfig
|
|
201
207
|
puts("Exported #{path} from #{provider} to #{file_name}") if file_name.is_a?(String)
|
202
208
|
end
|
203
209
|
|
204
|
-
def run_import(file_name, path, prune
|
210
|
+
def run_import(file_name, path, prune, force)
|
205
211
|
raise(ArgumentError, "Missing required option --path") unless path
|
206
212
|
|
207
213
|
config = read_config_file(file_name)
|
208
|
-
import_config(config, path, prune)
|
214
|
+
import_config(config, path, prune, force)
|
209
215
|
|
210
216
|
puts("Imported #{file_name} to #{path} on provider: #{provider}") if file_name.is_a?(String)
|
211
217
|
end
|
212
218
|
|
213
|
-
def run_import_path(source_path, path, prune
|
219
|
+
def run_import_path(source_path, path, prune, force)
|
214
220
|
raise(ArgumentError, "Missing required option --path") unless path
|
215
221
|
|
216
222
|
config = fetch_config(source_path, filtered: false)
|
217
|
-
import_config(config, path, prune)
|
223
|
+
import_config(config, path, prune, force)
|
218
224
|
|
219
225
|
puts("Imported #{source_path} to #{path} on provider: #{provider}")
|
220
226
|
end
|
@@ -236,10 +242,10 @@ module SecretConfig
|
|
236
242
|
raise(ArgumentError, "Missing required option --path") unless path
|
237
243
|
|
238
244
|
source_config = fetch_config(source_path, filtered: false)
|
239
|
-
source = Utils.flatten(source_config
|
245
|
+
source = Utils.flatten(source_config)
|
240
246
|
|
241
247
|
target_config = fetch_config(path, filtered: false)
|
242
|
-
target = Utils.flatten(target_config
|
248
|
+
target = Utils.flatten(target_config)
|
243
249
|
|
244
250
|
puts("Comparing #{source_path} to #{path} on provider: #{provider}")
|
245
251
|
diff_config(source, target)
|
@@ -253,6 +259,15 @@ module SecretConfig
|
|
253
259
|
provider_instance.delete(key)
|
254
260
|
end
|
255
261
|
|
262
|
+
def run_delete_path(path)
|
263
|
+
source_config = fetch_config(path)
|
264
|
+
source = Utils.flatten(source_config, path)
|
265
|
+
source.each_key do |key|
|
266
|
+
puts("Deleting #{key}")
|
267
|
+
provider_instance.delete(key)
|
268
|
+
end
|
269
|
+
end
|
270
|
+
|
256
271
|
def run_fetch(key)
|
257
272
|
value = provider_instance.fetch(key)
|
258
273
|
puts value if value
|
@@ -319,7 +334,7 @@ module SecretConfig
|
|
319
334
|
end
|
320
335
|
end
|
321
336
|
|
322
|
-
def import_config(config, path, prune
|
337
|
+
def import_config(config, path, prune, force)
|
323
338
|
raise(ArgumentError, "Missing required option --path") unless path
|
324
339
|
|
325
340
|
delete_keys = prune ? current_values.keys - Utils.flatten(config, path).keys : []
|
@@ -330,7 +345,7 @@ module SecretConfig
|
|
330
345
|
sleep(5)
|
331
346
|
end
|
332
347
|
|
333
|
-
set_config(config, path, current_values)
|
348
|
+
set_config(config, path, force ? {} : current_values)
|
334
349
|
|
335
350
|
delete_keys.each do |key|
|
336
351
|
puts "Deleting: #{key}"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: secret_config
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Reid Morrison
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-03-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|