cfncli 1.0.0 → 1.0.1

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
  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