cfncli 1.0.0 → 1.0.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: cdcbeae02f9fc79a5eb1e51a2dfcc6385420d78d8574e57079771b2f1a8809e5
4
- data.tar.gz: 2aaa24f25d5f82955dee3ea38c53d2ed5b466bb538f727de9908b339073f9cdb
3
+ metadata.gz: 0ca8cd69cab57255028fe13c61cf07be2af98b9a7e90daa098703da18a37c0c7
4
+ data.tar.gz: 6f76676d81fc30fbc176155cc8a0a4ecadaaa4080a02e25ed58674c5f4085039
5
5
  SHA512:
6
- metadata.gz: 5147469f524a3a134a71670e251a5e75b9dfa3eaa1d1f7234804cb34a86a8b594cfa2ad6bbc59c6b984f15e971dbf833770f95affc228ccccbb105685aa75356
7
- data.tar.gz: 74b20182ca8c7b44d971ec8bfac5bb890c40552a2fa2bd8b2d8eb0b2234519f31363506bda24382bca01e719aadd67525b77360cdee4ff3d99eaed242db7ac7c
6
+ metadata.gz: 5314d09ce9efa1bdc909d753042f7078a4fe23ded88012ae234b8536118b12114f2a63101e9d2753ad7ef9aa7d3b35398ae7bdc98e0278d7d38cf01d8f60b0cc
7
+ data.tar.gz: d74553025f0554aed5309246cc603fdb2eb46663d87ec716efaa68e9511085c2c945f9883fd90a7ba738f268371696d10646e23f36c397f7ca549300b2920ebf
@@ -58,8 +58,8 @@ module CfnCli
58
58
  'the stack that you are updating.'
59
59
 
60
60
  method_option 'parameters',
61
- type: :hash,
62
- desc: 'Stack parameters. Pass each parameter in the form --parameters key1:value1 key2:value2 or use the @filename syntax to provide a JSON file'
61
+ type: :array,
62
+ desc: 'Stack parameters. Pass each parameter in the form --parameters ParameterValue=key1,ParameterValue=value1 ParameterKey=key2,ParameterValue2=value2 or use the @filename syntax to provide a JSON file'
63
63
 
64
64
  method_option 'parameters_file',
65
65
  type: :string,
@@ -354,12 +354,7 @@ module CfnCli
354
354
  return file_or_content(parameters) if file_param? parameters
355
355
 
356
356
  # Otherwise convert each param to the cfn structure
357
- parameters.map do |param|
358
- {
359
- parameter_key: param['ParameterKey'],
360
- parameter_value: param['ParameterValue']
361
- }
362
- end
357
+ parse_cli_params(parameters)
363
358
  end
364
359
 
365
360
  def process_stack_tags(tags)
@@ -372,6 +367,29 @@ module CfnCli
372
367
  real_tags
373
368
  end
374
369
 
370
+ def parse_cli_params(params)
371
+ validation_failures = []
372
+ parsed_params = params.map.with_index do |param, i|
373
+ key, value = param.split(',', 2)
374
+ if key.to_s.empty? || value.to_s.empty?
375
+ validation_failures << "- Parameter[#{i}] format invalid: #{param}"
376
+ next
377
+ end
378
+ param_key_key, param_key_value = key.split('=', 2)
379
+ param_value_key, param_value_value = value.split('=', 2)
380
+ validation_failures << "- Parameter[#{i}] missing ParameterKey key: #{param}" unless param_key_key.downcase == 'parameterkey'
381
+ validation_failures << "- Parameter[#{i}] missing ParameterKey value: #{param}" if param_key_value.to_s.empty?
382
+ validation_failures << "- Parameter[#{i}] missing ParameterValue key: #{param}" unless param_value_key.downcase == 'parametervalue'
383
+ validation_failures << "- Parameter[#{i}] missing ParameterValue value: #{param}" if param_value_value.to_s.empty?
384
+ {
385
+ parameter_key: param_key_value,
386
+ parameter_value: param_value_value
387
+ }
388
+ end
389
+ raise "Parameter validation failed:\n#{validation_failures.join("\n")}" unless validation_failures.empty?
390
+ parsed_params
391
+ end
392
+
375
393
  # Cloudformation utility object
376
394
  def cfn
377
395
  @cfn ||= CfnCli::CloudFormation.new
@@ -1,3 +1,3 @@
1
1
  module CfnCli
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cfncli
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - lethalpaga