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.
@@ -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: