stack_master 0.10.2 → 0.11.0

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