soloist 1.0.2 → 1.0.3
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.
- data/lib/soloist/config.rb +4 -4
- data/lib/soloist/royal_crown.rb +24 -1
- data/lib/soloist/version.rb +1 -1
- data/soloist.gemspec +2 -0
- data/spec/lib/soloist/config_spec.rb +15 -2
- metadata +4 -3
data/lib/soloist/config.rb
CHANGED
@@ -74,11 +74,11 @@ module Soloist
|
|
74
74
|
end
|
75
75
|
|
76
76
|
def compiled
|
77
|
-
@compiled ||= royal_crown.dup.tap do |
|
78
|
-
while
|
79
|
-
|
77
|
+
@compiled ||= royal_crown.dup.tap do |working_royal_crown|
|
78
|
+
while working_royal_crown["env_variable_switches"]
|
79
|
+
working_royal_crown.delete("env_variable_switches").each do |variable, switch|
|
80
80
|
switch.each do |value, inner|
|
81
|
-
|
81
|
+
working_royal_crown.merge!(inner) if ENV[variable] == value
|
82
82
|
end
|
83
83
|
end
|
84
84
|
end
|
data/lib/soloist/royal_crown.rb
CHANGED
@@ -14,8 +14,25 @@ module Soloist
|
|
14
14
|
self["node_attributes"] = Hashie::Mash.new(hash)
|
15
15
|
end
|
16
16
|
|
17
|
+
def merge!(other_royal_crown)
|
18
|
+
merge_recipes(other_royal_crown["recipes"])
|
19
|
+
merge_cookbook_paths(other_royal_crown["cookbook_paths"])
|
20
|
+
self.node_attributes.deep_merge!(other_royal_crown["node_attributes"])
|
21
|
+
self.env_variable_switches = other_royal_crown["env_variable_switches"]
|
22
|
+
self
|
23
|
+
end
|
24
|
+
|
25
|
+
def merge_recipes(new_recipes = [])
|
26
|
+
merge_array_property("recipes", new_recipes)
|
27
|
+
end
|
28
|
+
|
29
|
+
def merge_cookbook_paths(new_cookbook_paths = [])
|
30
|
+
merge_array_property("cookbook_paths", new_cookbook_paths)
|
31
|
+
end
|
32
|
+
|
17
33
|
def env_variable_switches=(hash)
|
18
|
-
self["env_variable_switches"]
|
34
|
+
self["env_variable_switches"] ||= Hashie::Mash.new
|
35
|
+
self["env_variable_switches"].merge!(Hashie::Mash.new(hash))
|
19
36
|
end
|
20
37
|
|
21
38
|
def to_yaml
|
@@ -52,5 +69,11 @@ module Soloist
|
|
52
69
|
def self.nilable_properties
|
53
70
|
(properties - [:path]).map(&:to_s)
|
54
71
|
end
|
72
|
+
|
73
|
+
def merge_array_property(property_name, values)
|
74
|
+
self[property_name] ||= []
|
75
|
+
self[property_name] += values
|
76
|
+
self[property_name].uniq!
|
77
|
+
end
|
55
78
|
end
|
56
79
|
end
|
data/lib/soloist/version.rb
CHANGED
data/soloist.gemspec
CHANGED
@@ -109,6 +109,10 @@ describe Soloist::Config do
|
|
109
109
|
"TONGUES" => {
|
110
110
|
"FINE" => {
|
111
111
|
"recipes" => ["hobo_fist"],
|
112
|
+
"cookbook_paths" => ["shell_in"],
|
113
|
+
"node_attributes" => {
|
114
|
+
"doc" => "absent"
|
115
|
+
},
|
112
116
|
"env_variable_switches" => nested
|
113
117
|
}
|
114
118
|
}
|
@@ -132,6 +136,10 @@ describe Soloist::Config do
|
|
132
136
|
config.compiled.recipes.should =~ ["hobo_fist"]
|
133
137
|
end
|
134
138
|
|
139
|
+
it "merges the node attributes" do
|
140
|
+
config.compiled.node_attributes.should == {"doc" => "absent"}
|
141
|
+
end
|
142
|
+
|
135
143
|
context "when an inactive switch is nested" do
|
136
144
|
let(:nested) { {"BEANS" => {"EW" => {"recipes" => ["slammin"]}}} }
|
137
145
|
|
@@ -141,10 +149,15 @@ describe Soloist::Config do
|
|
141
149
|
end
|
142
150
|
|
143
151
|
context "when an active switch is nested" do
|
144
|
-
let(:nested) { {"BEANS" => {"FINE" => {"recipes" => ["slammin"]}}} }
|
152
|
+
let(:nested) { {"BEANS" => {"FINE" => {"cookbook_paths" => ["shell_out"], "recipes" => ["slammin"], "node_attributes" => {"kocher" => "present"}}}} }
|
145
153
|
|
146
154
|
it "merges the attributes" do
|
147
|
-
config.compiled.recipes.should =~ ["slammin"]
|
155
|
+
config.compiled.recipes.should =~ ["slammin", "hobo_fist"]
|
156
|
+
config.compiled.cookbook_paths.should =~ ["shell_in", "shell_out"]
|
157
|
+
end
|
158
|
+
|
159
|
+
it "merges the node attributes" do
|
160
|
+
config.compiled.node_attributes.should == {"doc" => "absent", "kocher" => "present"}
|
148
161
|
end
|
149
162
|
end
|
150
163
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: soloist
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-11-
|
13
|
+
date: 2013-11-15 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: chef
|
@@ -263,7 +263,8 @@ files:
|
|
263
263
|
- spec/lib/soloist/spotlight_spec.rb
|
264
264
|
- spec/spec_helper.rb
|
265
265
|
homepage: http://github.com/mkocher/soloist
|
266
|
-
licenses:
|
266
|
+
licenses:
|
267
|
+
- MIT
|
267
268
|
post_install_message:
|
268
269
|
rdoc_options: []
|
269
270
|
require_paths:
|