stack_master 0.10.2 → 0.11.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dac9ea54e5fb5f551c15e0d077816eb62b79cb7a
4
- data.tar.gz: f9e58ade11de8c75902ffc8ed83a03d623b02a83
3
+ metadata.gz: dfd66f0ae759e197674b37f60c86753379a27b3d
4
+ data.tar.gz: 6ef5f772326ac2128d0d21667b1aa88cc4f066af
5
5
  SHA512:
6
- metadata.gz: 18f4ad8e75146c81a63b33aade1e97ac14d133863def43e62f78e969120122eeba7ec33f90253d7582904443d9cedcab444d54c57e43637e5800981ff0a4000d
7
- data.tar.gz: 311a35d9e1976033c4ab45a588199596b8be674af0669abd0dc27c77ec7f17f9a28b09d050ab0586b72fc578c02afab99aec9acf5112f6ac57fdbe9df988e574
6
+ metadata.gz: fd853147d8aa925242872f9fcc24fa3e79572c6b23a3009a721303126afb0a34b411d18d41b90d2377371155bc61a93557b0367a29d1537a1a7bb30d2f905590
7
+ data.tar.gz: 39f780912d2be5c8176b2ae36d185fcd2736ebb3f3448ea89d1629299e2cfc7a9141dd8d4f78e6d45be1b0874c8bf1c53c43b223b34975fd354c73eddeac7cf5
data/README.md CHANGED
@@ -329,6 +329,19 @@ my_parameter:
329
329
  - value2
330
330
  ```
331
331
 
332
+ Array parameter values can include nested parameter resolvers.
333
+
334
+ For example, given the following parameter definition:
335
+ ```
336
+ my_parameter:
337
+ - stack_output: my-stack/output # value resolves to 'value1'
338
+ - value2
339
+ ```
340
+ The parameter value will resolve to:
341
+ ```
342
+ my_parameter: 'value1,value2'
343
+ ```
344
+
332
345
  ## ERB Template Files in SparkleFormation templates
333
346
 
334
347
  An extension to SparkleFormation is the `user_data_file!` method, which evaluates templates in `templates/user_data/[file_name]`. Most of the usual SparkleFormation methods are available in user data templates. Example:
@@ -47,7 +47,7 @@ module StackMaster
47
47
 
48
48
  def resolve_parameter_value(key, parameter_value)
49
49
  return parameter_value.to_s if Numeric === parameter_value || parameter_value == true || parameter_value == false
50
- return parameter_value.join(',') if Array === parameter_value
50
+ return resolve_array_parameter_values(key, parameter_value).join(',') if Array === parameter_value
51
51
  return parameter_value unless Hash === parameter_value
52
52
  validate_parameter_value!(key, parameter_value)
53
53
 
@@ -61,6 +61,12 @@ module StackMaster
61
61
  raise InvalidParameter, $!.message
62
62
  end
63
63
 
64
+ def resolve_array_parameter_values(key, parameter_values)
65
+ parameter_values.reduce([]) do |values, parameter_value|
66
+ values << resolve_parameter_value(key, parameter_value)
67
+ end
68
+ end
69
+
64
70
  def call_resolver(class_name, value)
65
71
  resolver_class(class_name).resolve(value)
66
72
  end
@@ -1,3 +1,3 @@
1
1
  module StackMaster
2
- VERSION = "0.10.2"
2
+ VERSION = "0.11.0"
3
3
  end
@@ -66,6 +66,16 @@ RSpec.describe StackMaster::ParameterResolver do
66
66
  }.to_not raise_error
67
67
  end
68
68
 
69
+ context 'when array values contain resolver hashes' do
70
+ it 'returns the comma separated string values returned by the resolvers' do
71
+ expect(resolve(param: [1, { my_resolver: 2 }])).to eq(param: '1,10')
72
+ end
73
+
74
+ it 'returns nested array values' do
75
+ expect(resolve(param: [[1, { my_resolver: 3 }], { my_resolver: 2 }])).to eq(param: '1,15,10')
76
+ end
77
+ end
78
+
69
79
  context 'when given a proper resolve hash' do
70
80
  it 'returns the value returned by the resolver as the parameter value' do
71
81
  expect(resolve(param: { my_resolver: 2 })).to eq(param: 10)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stack_master
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.2
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Hodgkiss
@@ -450,7 +450,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
450
450
  version: '0'
451
451
  requirements: []
452
452
  rubyforge_project:
453
- rubygems_version: 2.4.5.1
453
+ rubygems_version: 2.5.1
454
454
  signing_key:
455
455
  specification_version: 4
456
456
  summary: StackMaster is a sure-footed way of creating, updating and keeping track