soloist 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -4,3 +4,4 @@ pkg/*
4
4
  /.vagrant
5
5
  /examples/cookbooks
6
6
  /examples/tmp
7
+ Gemfile.lock
data/.rvmrc CHANGED
@@ -1 +1 @@
1
- rvm --create use ruby-1.9.3-p327@soloist
1
+ rvm --create use ruby-1.9.3-p392@soloist
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Soloist
2
2
 
3
- [![Build Status](https://secure.travis-ci.org/mkocher/soloist.png)](http://travis-ci.org/mkocher/soloist)
3
+ [![Build Status](https://secure.travis-ci.org/mkocher/soloist.png)](http://travis-ci.org/mkocher/soloist) [![Code Climate](https://codeclimate.com/github/mkocher/soloist.png)](https://codeclimate.com/github/mkocher/soloist)
4
4
 
5
5
  Soloist lets you quickly and easily converge [Chef](http://opscode.com/chef) recipes using [chef-solo](http://wiki.opscode.com/display/chef/Chef+Solo). It does not require a Chef server, but can exploit [community cookbooks](http://community.opscode.com/cookbooks), github-hosted cookbooks and locally-sourced cookbooks through [Librarian](https://github.com/applicationsonline/librarian).
6
6
 
@@ -41,7 +41,7 @@ module Soloist
41
41
 
42
42
  def self.read_config(yaml_file)
43
43
  content = File.read(yaml_file)
44
- YAML.load(content).tap do |hash|
44
+ YAML.load(ERB.new(content).result).tap do |hash|
45
45
  nilable_properties.each do |key|
46
46
  hash.delete(key) if hash[key].nil?
47
47
  end if hash
@@ -1,3 +1,3 @@
1
1
  module Soloist
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
data/soloist.gemspec CHANGED
@@ -20,9 +20,9 @@ Gem::Specification.new do |s|
20
20
  s.require_paths = ["lib"]
21
21
 
22
22
  s.add_dependency "chef"
23
- s.add_dependency "librarian"
23
+ s.add_dependency "librarian-chef"
24
24
  s.add_dependency "thor"
25
- s.add_dependency "hashie"
25
+ s.add_dependency "hashie", "~> 1.2"
26
26
  s.add_dependency "net-ssh"
27
27
  s.add_dependency "awesome_print"
28
28
 
@@ -151,20 +151,20 @@ describe Soloist::Config do
151
151
  end
152
152
 
153
153
  describe "#merge!" do
154
- let(:soloist_rc) { Soloist::RoyalCrown.new(:recipes => ["guts"], :node_attributes => {:reliable => "maybe"}) }
155
- let(:other_rc) { Soloist::RoyalCrown.new(:recipes => ["chum"], :node_attributes => {:tasty => "maybe"}) }
154
+ let(:soloist_rc) { Soloist::RoyalCrown.new('recipes' => ["guts"], "node_attributes" => {"reliable" => "maybe"}) }
155
+ let(:other_rc) { Soloist::RoyalCrown.new('recipes' => ["chum"], "node_attributes" => {"tasty" => "maybe"}) }
156
156
  let(:other_config) { Soloist::Config.new(other_rc) }
157
157
 
158
158
  it "merges another config into the current one" do
159
159
  config.merge!(other_config)
160
160
  config.royal_crown.recipes.should =~ ["guts", "chum"]
161
- config.royal_crown.node_attributes.keys.should =~ [:reliable, :tasty]
161
+ config.royal_crown.node_attributes.keys.should =~ ["reliable", "tasty"]
162
162
  end
163
163
 
164
164
  it "does not trample the other config" do
165
165
  config.merge!(other_config)
166
166
  other_config.royal_crown.recipes.should =~ ["chum"]
167
- other_config.royal_crown.node_attributes.should == {:tasty => "maybe"}
167
+ other_config.royal_crown.node_attributes.should == {"tasty" => "maybe"}
168
168
  end
169
169
  end
170
170
 
@@ -31,6 +31,28 @@ describe Soloist::RoyalCrown do
31
31
  it "defaults nil fields to an empty primitive" do
32
32
  royal_crown.node_attributes.should == {}
33
33
  end
34
+
35
+ context "when the rc file has ERB tags" do
36
+ let(:tempfile) do
37
+ Tempfile.new("soloist-royalcrown").tap do |file|
38
+ file.write(<<-YAML
39
+ recipes:
40
+ - broken_vim
41
+ node_attributes:
42
+ evaluated: <%= "From ERB" %>
43
+ YAML
44
+ )
45
+ file.close
46
+ end
47
+ end
48
+
49
+ it "evaluates the ERB and parses the resulting YAML" do
50
+ royal_crown.node_attributes.should == {
51
+ "evaluated" => "From ERB"
52
+ }
53
+ royal_crown.recipes.should =~ ["broken_vim"]
54
+ end
55
+ end
34
56
  end
35
57
 
36
58
  describe "#save" do
metadata CHANGED
@@ -1,241 +1,197 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: soloist
3
- version: !ruby/object:Gem::Version
4
- version: 1.0.0
5
- prerelease:
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 0
8
+ - 1
9
+ version: 1.0.1
6
10
  platform: ruby
7
- authors:
11
+ authors:
8
12
  - Matthew Kocher
9
13
  - Doc Ritezel
10
14
  autorequire:
11
15
  bindir: bin
12
16
  cert_chain: []
13
- date: 2013-02-26 00:00:00.000000000 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2013-04-05 00:00:00 -06:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
16
22
  name: chef
17
- requirement: !ruby/object:Gem::Requirement
18
- none: false
19
- requirements:
20
- - - ! '>='
21
- - !ruby/object:Gem::Version
22
- version: '0'
23
- type: :runtime
24
23
  prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
- requirements:
28
- - - ! '>='
29
- - !ruby/object:Gem::Version
30
- version: '0'
31
- - !ruby/object:Gem::Dependency
32
- name: librarian
33
- requirement: !ruby/object:Gem::Requirement
34
- none: false
35
- requirements:
36
- - - ! '>='
37
- - !ruby/object:Gem::Version
38
- version: '0'
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ version: "0"
39
31
  type: :runtime
32
+ version_requirements: *id001
33
+ - !ruby/object:Gem::Dependency
34
+ name: librarian-chef
40
35
  prerelease: false
41
- version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
- requirements:
44
- - - ! '>='
45
- - !ruby/object:Gem::Version
46
- version: '0'
47
- - !ruby/object:Gem::Dependency
48
- name: thor
49
- requirement: !ruby/object:Gem::Requirement
50
- none: false
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
36
+ requirement: &id002 !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ segments:
41
+ - 0
42
+ version: "0"
55
43
  type: :runtime
44
+ version_requirements: *id002
45
+ - !ruby/object:Gem::Dependency
46
+ name: thor
56
47
  prerelease: false
57
- version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
- requirements:
60
- - - ! '>='
61
- - !ruby/object:Gem::Version
62
- version: '0'
63
- - !ruby/object:Gem::Dependency
64
- name: hashie
65
- requirement: !ruby/object:Gem::Requirement
66
- none: false
67
- requirements:
68
- - - ! '>='
69
- - !ruby/object:Gem::Version
70
- version: '0'
48
+ requirement: &id003 !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ segments:
53
+ - 0
54
+ version: "0"
71
55
  type: :runtime
56
+ version_requirements: *id003
57
+ - !ruby/object:Gem::Dependency
58
+ name: hashie
72
59
  prerelease: false
73
- version_requirements: !ruby/object:Gem::Requirement
74
- none: false
75
- requirements:
76
- - - ! '>='
77
- - !ruby/object:Gem::Version
78
- version: '0'
79
- - !ruby/object:Gem::Dependency
80
- name: net-ssh
81
- requirement: !ruby/object:Gem::Requirement
82
- none: false
83
- requirements:
84
- - - ! '>='
85
- - !ruby/object:Gem::Version
86
- version: '0'
60
+ requirement: &id004 !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ~>
63
+ - !ruby/object:Gem::Version
64
+ segments:
65
+ - 1
66
+ - 2
67
+ version: "1.2"
87
68
  type: :runtime
69
+ version_requirements: *id004
70
+ - !ruby/object:Gem::Dependency
71
+ name: net-ssh
88
72
  prerelease: false
89
- version_requirements: !ruby/object:Gem::Requirement
90
- none: false
91
- requirements:
92
- - - ! '>='
93
- - !ruby/object:Gem::Version
94
- version: '0'
95
- - !ruby/object:Gem::Dependency
96
- name: awesome_print
97
- requirement: !ruby/object:Gem::Requirement
98
- none: false
99
- requirements:
100
- - - ! '>='
101
- - !ruby/object:Gem::Version
102
- version: '0'
73
+ requirement: &id005 !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ segments:
78
+ - 0
79
+ version: "0"
103
80
  type: :runtime
81
+ version_requirements: *id005
82
+ - !ruby/object:Gem::Dependency
83
+ name: awesome_print
104
84
  prerelease: false
105
- version_requirements: !ruby/object:Gem::Requirement
106
- none: false
107
- requirements:
108
- - - ! '>='
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
85
+ requirement: &id006 !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ segments:
90
+ - 0
91
+ version: "0"
92
+ type: :runtime
93
+ version_requirements: *id006
94
+ - !ruby/object:Gem::Dependency
112
95
  name: rspec
113
- requirement: !ruby/object:Gem::Requirement
114
- none: false
115
- requirements:
116
- - - ! '>='
117
- - !ruby/object:Gem::Version
118
- version: '0'
119
- type: :development
120
96
  prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
122
- none: false
123
- requirements:
124
- - - ! '>='
125
- - !ruby/object:Gem::Version
126
- version: '0'
127
- - !ruby/object:Gem::Dependency
128
- name: guard-rspec
129
- requirement: !ruby/object:Gem::Requirement
130
- none: false
131
- requirements:
132
- - - ! '>='
133
- - !ruby/object:Gem::Version
134
- version: '0'
97
+ requirement: &id007 !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ segments:
102
+ - 0
103
+ version: "0"
135
104
  type: :development
105
+ version_requirements: *id007
106
+ - !ruby/object:Gem::Dependency
107
+ name: guard-rspec
136
108
  prerelease: false
137
- version_requirements: !ruby/object:Gem::Requirement
138
- none: false
139
- requirements:
140
- - - ! '>='
141
- - !ruby/object:Gem::Version
142
- version: '0'
143
- - !ruby/object:Gem::Dependency
144
- name: guard-bundler
145
- requirement: !ruby/object:Gem::Requirement
146
- none: false
147
- requirements:
148
- - - ! '>='
149
- - !ruby/object:Gem::Version
150
- version: '0'
109
+ requirement: &id008 !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ segments:
114
+ - 0
115
+ version: "0"
151
116
  type: :development
117
+ version_requirements: *id008
118
+ - !ruby/object:Gem::Dependency
119
+ name: guard-bundler
152
120
  prerelease: false
153
- version_requirements: !ruby/object:Gem::Requirement
154
- none: false
155
- requirements:
156
- - - ! '>='
157
- - !ruby/object:Gem::Version
158
- version: '0'
159
- - !ruby/object:Gem::Dependency
160
- name: guard-shell
161
- requirement: !ruby/object:Gem::Requirement
162
- none: false
163
- requirements:
164
- - - ! '>='
165
- - !ruby/object:Gem::Version
166
- version: '0'
121
+ requirement: &id009 !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ segments:
126
+ - 0
127
+ version: "0"
167
128
  type: :development
129
+ version_requirements: *id009
130
+ - !ruby/object:Gem::Dependency
131
+ name: guard-shell
168
132
  prerelease: false
169
- version_requirements: !ruby/object:Gem::Requirement
170
- none: false
171
- requirements:
172
- - - ! '>='
173
- - !ruby/object:Gem::Version
174
- version: '0'
175
- - !ruby/object:Gem::Dependency
176
- name: rb-fsevent
177
- requirement: !ruby/object:Gem::Requirement
178
- none: false
179
- requirements:
180
- - - ! '>='
181
- - !ruby/object:Gem::Version
182
- version: '0'
133
+ requirement: &id010 !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ segments:
138
+ - 0
139
+ version: "0"
183
140
  type: :development
141
+ version_requirements: *id010
142
+ - !ruby/object:Gem::Dependency
143
+ name: rb-fsevent
184
144
  prerelease: false
185
- version_requirements: !ruby/object:Gem::Requirement
186
- none: false
187
- requirements:
188
- - - ! '>='
189
- - !ruby/object:Gem::Version
190
- version: '0'
191
- - !ruby/object:Gem::Dependency
192
- name: terminal-notifier-guard
193
- requirement: !ruby/object:Gem::Requirement
194
- none: false
195
- requirements:
196
- - - ! '>='
197
- - !ruby/object:Gem::Version
198
- version: '0'
145
+ requirement: &id011 !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ segments:
150
+ - 0
151
+ version: "0"
199
152
  type: :development
153
+ version_requirements: *id011
154
+ - !ruby/object:Gem::Dependency
155
+ name: terminal-notifier-guard
200
156
  prerelease: false
201
- version_requirements: !ruby/object:Gem::Requirement
202
- none: false
203
- requirements:
204
- - - ! '>='
205
- - !ruby/object:Gem::Version
206
- version: '0'
207
- - !ruby/object:Gem::Dependency
208
- name: gem-release
209
- requirement: !ruby/object:Gem::Requirement
210
- none: false
211
- requirements:
212
- - - ! '>='
213
- - !ruby/object:Gem::Version
214
- version: '0'
157
+ requirement: &id012 !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - ">="
160
+ - !ruby/object:Gem::Version
161
+ segments:
162
+ - 0
163
+ version: "0"
215
164
  type: :development
165
+ version_requirements: *id012
166
+ - !ruby/object:Gem::Dependency
167
+ name: gem-release
216
168
  prerelease: false
217
- version_requirements: !ruby/object:Gem::Requirement
218
- none: false
219
- requirements:
220
- - - ! '>='
221
- - !ruby/object:Gem::Version
222
- version: '0'
169
+ requirement: &id013 !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ segments:
174
+ - 0
175
+ version: "0"
176
+ type: :development
177
+ version_requirements: *id013
223
178
  description: Makes running chef-solo easy.
224
- email:
179
+ email:
225
180
  - kocher@gmail.com
226
181
  - ritezel@gmail.com
227
- executables:
182
+ executables:
228
183
  - soloist
229
184
  extensions: []
185
+
230
186
  extra_rdoc_files: []
231
- files:
187
+
188
+ files:
232
189
  - .gitignore
233
190
  - .pairs
234
191
  - .rspec
235
192
  - .rvmrc
236
193
  - .travis.yml
237
194
  - Gemfile
238
- - Gemfile.lock
239
195
  - Guardfile
240
196
  - LICENSE
241
197
  - README.md
@@ -263,31 +219,37 @@ files:
263
219
  - spec/lib/soloist/royal_crown_spec.rb
264
220
  - spec/lib/soloist/spotlight_spec.rb
265
221
  - spec/spec_helper.rb
222
+ has_rdoc: true
266
223
  homepage: http://github.com/mkocher/soloist
267
224
  licenses: []
225
+
268
226
  post_install_message:
269
227
  rdoc_options: []
270
- require_paths:
228
+
229
+ require_paths:
271
230
  - lib
272
- required_ruby_version: !ruby/object:Gem::Requirement
273
- none: false
274
- requirements:
275
- - - ! '>='
276
- - !ruby/object:Gem::Version
277
- version: '0'
278
- required_rubygems_version: !ruby/object:Gem::Requirement
279
- none: false
280
- requirements:
281
- - - ! '>='
282
- - !ruby/object:Gem::Version
283
- version: '0'
231
+ required_ruby_version: !ruby/object:Gem::Requirement
232
+ requirements:
233
+ - - ">="
234
+ - !ruby/object:Gem::Version
235
+ segments:
236
+ - 0
237
+ version: "0"
238
+ required_rubygems_version: !ruby/object:Gem::Requirement
239
+ requirements:
240
+ - - ">="
241
+ - !ruby/object:Gem::Version
242
+ segments:
243
+ - 0
244
+ version: "0"
284
245
  requirements: []
246
+
285
247
  rubyforge_project: soloist
286
- rubygems_version: 1.8.24
248
+ rubygems_version: 1.3.6
287
249
  signing_key:
288
250
  specification_version: 3
289
251
  summary: Soloist is a simple way of running chef-solo
290
- test_files:
252
+ test_files:
291
253
  - spec/helpers/net_ssh_test_helper.rb
292
254
  - spec/helpers/net_ssh_test_patch.rb
293
255
  - spec/lib/soloist/cli_spec.rb
data/Gemfile.lock DELETED
@@ -1,131 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- soloist (1.0.0.pre)
5
- awesome_print
6
- chef
7
- hashie
8
- librarian
9
- net-ssh
10
- thor
11
-
12
- GEM
13
- remote: http://rubygems.org/
14
- specs:
15
- archive-tar-minitar (0.5.2)
16
- awesome_print (1.1.0)
17
- bunny (0.7.9)
18
- chef (10.16.2)
19
- bunny (>= 0.6.0, < 0.8.0)
20
- erubis
21
- highline (>= 1.6.9)
22
- json (>= 1.4.4, <= 1.6.1)
23
- mixlib-authentication (>= 1.3.0)
24
- mixlib-cli (>= 1.1.0)
25
- mixlib-config (>= 1.1.2)
26
- mixlib-log (>= 1.3.0)
27
- mixlib-shellout
28
- moneta
29
- net-ssh (~> 2.2.2)
30
- net-ssh-multi (~> 1.1.0)
31
- ohai (>= 0.6.0)
32
- rest-client (>= 1.0.4, < 1.7.0)
33
- treetop (~> 1.4.9)
34
- uuidtools
35
- yajl-ruby (~> 1.1)
36
- coderay (1.0.8)
37
- diff-lcs (1.1.3)
38
- erubis (2.7.0)
39
- gem-release (0.4.1)
40
- guard (1.5.4)
41
- listen (>= 0.4.2)
42
- lumberjack (>= 1.0.2)
43
- pry (>= 0.9.10)
44
- thor (>= 0.14.6)
45
- guard-bundler (1.0.0)
46
- bundler (~> 1.0)
47
- guard (~> 1.1)
48
- guard-rspec (2.2.0)
49
- guard (>= 1.1)
50
- rspec (~> 2.11)
51
- guard-shell (0.5.1)
52
- guard (>= 1.1.0)
53
- hashie (1.2.0)
54
- highline (1.6.15)
55
- ipaddress (0.8.0)
56
- json (1.6.1)
57
- json (1.6.1-java)
58
- librarian (0.0.25)
59
- archive-tar-minitar (>= 0.5.2)
60
- chef (>= 0.10)
61
- highline
62
- thor (~> 0.15)
63
- listen (0.6.0)
64
- lumberjack (1.0.2)
65
- method_source (0.8.1)
66
- mime-types (1.19)
67
- mixlib-authentication (1.3.0)
68
- mixlib-log
69
- mixlib-cli (1.2.2)
70
- mixlib-config (1.1.2)
71
- mixlib-log (1.4.1)
72
- mixlib-shellout (1.1.0)
73
- moneta (0.6.0)
74
- net-ssh (2.2.2)
75
- net-ssh-gateway (1.1.0)
76
- net-ssh (>= 1.99.1)
77
- net-ssh-multi (1.1)
78
- net-ssh (>= 2.1.4)
79
- net-ssh-gateway (>= 0.99.0)
80
- ohai (6.14.0)
81
- ipaddress
82
- mixlib-cli
83
- mixlib-config
84
- mixlib-log
85
- systemu
86
- yajl-ruby
87
- polyglot (0.3.3)
88
- pry (0.9.10)
89
- coderay (~> 1.0.5)
90
- method_source (~> 0.8)
91
- slop (~> 3.3.1)
92
- pry (0.9.10-java)
93
- coderay (~> 1.0.5)
94
- method_source (~> 0.8)
95
- slop (~> 3.3.1)
96
- spoon (~> 0.0)
97
- rb-fsevent (0.9.2)
98
- rest-client (1.6.7)
99
- mime-types (>= 1.16)
100
- rspec (2.12.0)
101
- rspec-core (~> 2.12.0)
102
- rspec-expectations (~> 2.12.0)
103
- rspec-mocks (~> 2.12.0)
104
- rspec-core (2.12.0)
105
- rspec-expectations (2.12.0)
106
- diff-lcs (~> 1.1.3)
107
- rspec-mocks (2.12.0)
108
- slop (3.3.3)
109
- spoon (0.0.1)
110
- systemu (2.5.2)
111
- terminal-notifier-guard (1.5.3)
112
- thor (0.16.0)
113
- treetop (1.4.12)
114
- polyglot
115
- polyglot (>= 0.3.1)
116
- uuidtools (2.1.3)
117
- yajl-ruby (1.1.0)
118
-
119
- PLATFORMS
120
- java
121
- ruby
122
-
123
- DEPENDENCIES
124
- gem-release
125
- guard-bundler
126
- guard-rspec
127
- guard-shell
128
- rb-fsevent
129
- rspec
130
- soloist!
131
- terminal-notifier-guard