soloist 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -74,11 +74,11 @@ module Soloist
74
74
  end
75
75
 
76
76
  def compiled
77
- @compiled ||= royal_crown.dup.tap do |rc|
78
- while rc["env_variable_switches"]
79
- rc.delete("env_variable_switches").each do |variable, switch|
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
- rc.merge!(inner) if ENV[variable] == value
81
+ working_royal_crown.merge!(inner) if ENV[variable] == value
82
82
  end
83
83
  end
84
84
  end
@@ -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"] = Hashie::Mash.new(hash)
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
@@ -1,3 +1,3 @@
1
1
  module Soloist
2
- VERSION = "1.0.2"
2
+ VERSION = "1.0.3"
3
3
  end
@@ -19,6 +19,8 @@ Gem::Specification.new do |s|
19
19
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
20
  s.require_paths = ["lib"]
21
21
 
22
+ s.license = 'MIT'
23
+
22
24
  s.add_dependency "chef"
23
25
  s.add_dependency "librarian-chef"
24
26
  s.add_dependency "thor"
@@ -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.2
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-04 00:00:00.000000000 Z
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: