spiceweasel 0.8.1 → 0.8.2

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/README.md CHANGED
@@ -4,17 +4,20 @@ Spiceweasel is a command-line tool for batch loading Chef infrastructure. It pro
4
4
 
5
5
  The `examples` directory provides examples based on the Quick Starts provided at [http://help.opscode.com/kb/otherhelp](http://help.opscode.com/kb/otherhelp).
6
6
 
7
- CHANGELOG.md covers current, previous and future development milestones and contains the features backlog.
7
+ The [https://github.com/mattray/ravel-repo](https://github.com/mattray/ravel-repo) provides a working example for bootstrapping a Chef repository with Spiceweasel.
8
+
9
+ The [CHANGELOG.md](https://github.com/mattray/spiceweasel/blob/master/CHANGELOG.md) covers current, previous and future development milestones and contains the features backlog.
10
+
8
11
 
9
12
  Requirements
10
13
  ============
11
14
  Spiceweasel currently depends on `knife` to run commands for it. Infrastructure files must either end in .json or .yml to be processed.
12
15
 
13
- Written with Chef 0.9.12 and 0.10.0 and supports cookbooks, environments, roles, data bags and nodes.
16
+ Written initially with Chef 0.9.12 (should still work) and continuing to develop with support for 0.10.
14
17
 
15
18
  Testing
16
19
  -------
17
- Tested with Ubuntu 10.04 and Chef 0.9.16 and 0.10.2.
20
+ Tested with Ubuntu 10.04 and Chef 0.9.16 and 0.10.4.
18
21
 
19
22
  File Syntax
20
23
  ===========
@@ -164,7 +167,7 @@ produces the knife commands
164
167
 
165
168
  ```
166
169
  knife cookbook upload apache2
167
- knife cookbook site download apt 1.1.0 --file cookbooks/apt.tgz
170
+ knife cookbook site download apt 1.1.0 --file cookbooks/apt.tgz
168
171
  tar -C cookbooks/ -xf cookbooks/apt.tgz
169
172
  knife cookbook upload apt
170
173
  knife cookbook upload mysql
@@ -172,7 +175,7 @@ knife cookbook upload mysql
172
175
 
173
176
  Environments
174
177
  ------------
175
- The `environments` section of the JSON or YAML file currently supports `knife environment from file FOO` where `FOO` is the name of the environment file ending in `.rb` in the `environments` directory. The YAML snippet
178
+ The `environments` section of the JSON or YAML file currently supports `knife environment from file FOO` where `FOO` is the name of the environment file ending in `.rb` in the `environments` directory. The YAML snippet
176
179
 
177
180
  ``` yaml
178
181
  environments:
@@ -181,7 +184,7 @@ environments:
181
184
  - production:
182
185
  ```
183
186
 
184
- produces the knife commands
187
+ produces the knife commands
185
188
 
186
189
  ```
187
190
  knife environment from file development.rb
@@ -191,7 +194,7 @@ knife environment from file production.rb
191
194
 
192
195
  Roles
193
196
  -----
194
- The `roles` section of the JSON or YAML file currently supports `knife role from file FOO` where `FOO` is the name of the role file ending in `.rb` in the `roles` directory. The YAML snippet
197
+ The `roles` section of the JSON or YAML file currently supports `knife role from file FOO` where `FOO` is the name of the role file ending in `.rb` in the `roles` directory. The YAML snippet
195
198
 
196
199
  ``` yaml
197
200
  roles:
@@ -200,7 +203,7 @@ roles:
200
203
  - webserver:
201
204
  ```
202
205
 
203
- produces the knife commands
206
+ produces the knife commands
204
207
 
205
208
  ```
206
209
  knife role from file base.rb
@@ -210,7 +213,7 @@ knife role from file webserver.rb
210
213
 
211
214
  Data Bags
212
215
  ---------
213
- The `data bags` section of the JSON or YAML file currently creates the data bags listed with `knife data bag create FOO` where `FOO` is the name of the data bag. Individual items may be added to the data bag as part of a JSON or YAML sequence, the assumption is made that they `.json` files and in the `data_bags/FOO` directory. You may also pass a wildcard as an entry to load all matching data bags (ie. `*`). Encrypted data bags are supported by listing `secret filename` as the first item (where `filename` is the secret key to be used). Assuming the presence of `dataA.json` and `dataB.json` in the `data_bags/data` directory, the YAML snippet
216
+ The `data bags` section of the JSON or YAML file currently creates the data bags listed with `knife data bag create FOO` where `FOO` is the name of the data bag. Individual items may be added to the data bag as part of a JSON or YAML sequence, the assumption is made that they `.json` files and in the `data_bags/FOO` directory. You may also pass a wildcard as an entry to load all matching data bags (ie. `*`). Encrypted data bags are supported by listing `secret filename` as the first item (where `filename` is the secret key to be used). Assuming the presence of `dataA.json` and `dataB.json` in the `data_bags/data` directory, the YAML snippet
214
217
 
215
218
  ``` yaml
216
219
  data bags:
@@ -226,7 +229,7 @@ data bags:
226
229
  - rabbitmq
227
230
  ```
228
231
 
229
- produces the knife commands
232
+ produces the knife commands
230
233
 
231
234
  ```
232
235
  knife data bag create users
@@ -243,7 +246,7 @@ knife data bag from file passwords data_bags/passwords/rabbitmq.json --secret-fi
243
246
 
244
247
  Nodes
245
248
  -----
246
- The `nodes` section of the JSON or YAML file bootstraps a node for each entry where the entry is a hostname or provider and count. Each node requires 2 items after it in a sequence. The first item is the run_list and the second the CLI options used. The run_list may be space or comma-delimited. Validation is performed on the run_list components to ensure that only recipes and roles listed in the file are used. A shortcut syntax for bulk-creating nodes with various providers where the line starts with the provider and ends with the number of nodes to be provisioned. The YAML snippet
249
+ The `nodes` section of the JSON or YAML file bootstraps a node for each entry where the entry is a hostname or provider and count. Each node requires 2 items after it in a sequence. The first item is the run_list and the second the CLI options used. The run_list may be space or comma-delimited. Validation is performed on the run_list components to ensure that only recipes and roles listed in the file are used. A shortcut syntax for bulk-creating nodes with various providers where the line starts with the provider and ends with the number of nodes to be provisioned. The YAML snippet
247
250
 
248
251
  ``` yaml
249
252
  nodes:
@@ -261,7 +264,7 @@ nodes:
261
264
  - --image 49 --flavor 2
262
265
  ```
263
266
 
264
- produces the knife commands
267
+ produces the knife commands
265
268
 
266
269
  ```
267
270
  knife bootstrap serverA 'role[base]' -i ~/.ssh/mray.pem -x user --sudo -d ubuntu10.04-gems
@@ -5,6 +5,8 @@ require 'yaml'
5
5
 
6
6
  require 'spiceweasel'
7
7
 
8
+ options={'knife_options' => ''}
9
+
8
10
  #process command line options
9
11
  begin
10
12
  ARGV << "-h" if ARGV.empty?
@@ -17,6 +19,10 @@ rescue OptionParser::InvalidOption => e
17
19
  exit(-1)
18
20
  end
19
21
 
22
+ if cli.config[:knifeconfig]
23
+ options['knife_options']=" -c "+cli.config[:knifeconfig]
24
+ end
25
+
20
26
  begin
21
27
  file = ARGV.last
22
28
  STDOUT.puts "DEBUG: file: #{file}" if cli.config[:debug]
@@ -41,12 +47,12 @@ end
41
47
  create = String.new()
42
48
  delete = String.new()
43
49
 
44
- cookbook_list = Spiceweasel::CookbookList.new(input['cookbooks'])
45
- environment_list = Spiceweasel::EnvironmentList.new(input['environments'])
46
- role_list = Spiceweasel::RoleList.new(input['roles'])
47
- data_bag_list = Spiceweasel::DataBagList.new(input['data bags'])
50
+ cookbook_list = Spiceweasel::CookbookList.new(input['cookbooks'], options)
51
+ environment_list = Spiceweasel::EnvironmentList.new(input['environments'], options)
52
+ role_list = Spiceweasel::RoleList.new(input['roles'], options)
53
+ data_bag_list = Spiceweasel::DataBagList.new(input['data bags'], options)
48
54
 
49
- node_list = Spiceweasel::NodeList.new(input['nodes'], cookbook_list, environment_list, role_list)
55
+ node_list = Spiceweasel::NodeList.new(input['nodes'], cookbook_list, environment_list, role_list, options)
50
56
 
51
57
  create += cookbook_list.create
52
58
  create += environment_list.create
@@ -44,4 +44,10 @@ class Spiceweasel::CLI
44
44
  :boolean => true,
45
45
  :proc => lambda {|v| puts "Spiceweasel: #{Spiceweasel::VERSION}" },
46
46
  :exit => 0
47
+
48
+ option :knifeconfig,
49
+ :short => "-c CONFIG",
50
+ :long => "--knifeconfig CONFIG",
51
+ :description => "The knife.rb configuration file to use."
52
+
47
53
  end
@@ -1,33 +1,35 @@
1
1
  class Spiceweasel::CookbookList
2
- def initialize(cookbooks = [])
2
+ def initialize(cookbooks = [], options = {})
3
3
  @create = @delete = ''
4
4
  @cookbooks = []
5
- cookbooks.each do |cookbook|
6
- cb = cookbook.keys.first
7
- if cookbook[cb] and cookbook[cb].length > 0
8
- version = cookbook[cb][0].to_s || ""
9
- args = cookbook[cb][1] || ""
10
- end
11
- STDOUT.puts "DEBUG: cookbook: #{cb} #{version}" if DEBUG
12
- @delete += "knife cookbook delete #{cb} #{version} -y\n"
13
- if File.directory?("cookbooks")
14
- if version and File.directory?("cookbooks/#{cb}")
15
- #check metadata.rb for requested version
16
- metadata = File.open("cookbooks/#{cb}/metadata.rb").grep(/^version/)[0].split()[1].gsub(/"/,'').to_s
17
- if (metadata != version)
18
- raise "Invalid version #{version} of '#{cb}' requested, #{metadata} is already in the cookbooks directory."
19
- exit(-1)
5
+ if cookbooks
6
+ cookbooks.each do |cookbook|
7
+ cb = cookbook.keys.first
8
+ if cookbook[cb] and cookbook[cb].length > 0
9
+ version = cookbook[cb][0].to_s || ""
10
+ args = cookbook[cb][1] || ""
11
+ end
12
+ STDOUT.puts "DEBUG: cookbook: #{cb} #{version}" if DEBUG
13
+ @delete += "knife cookbook#{options['knife_options']} delete #{cb} #{version} -y\n"
14
+ if File.directory?("cookbooks")
15
+ if version and File.directory?("cookbooks/#{cb}")
16
+ #check metadata.rb for requested version
17
+ metadata = File.open("cookbooks/#{cb}/metadata.rb").grep(/^version/)[0].split()[1].gsub(/"/,'').to_s
18
+ if (metadata != version)
19
+ raise "Invalid version #{version} of '#{cb}' requested, #{metadata} is already in the cookbooks directory."
20
+ exit(-1)
21
+ end
22
+ elsif !File.directory?("cookbooks/#{cb}")
23
+ @create += "knife cookbook#{options['knife_options']} site download #{cb} #{version} --file cookbooks/#{cb}.tgz #{args}\n"
24
+ @create += "tar -C cookbooks/ -xf cookbooks/#{cb}.tgz\n"
20
25
  end
21
- elsif !File.directory?("cookbooks/#{cb}")
22
- @create += "knife cookbook site download #{cb} #{version} --file cookbooks/#{cb}.tgz #{args}\n"
23
- @create += "tar -C cookbooks/ -xf cookbooks/#{cb}.tgz\n"
26
+ else
27
+ STDERR.puts "cookbooks directory not found, validation and downloading skipped"
24
28
  end
25
- else
26
- STDERR.puts "cookbooks directory not found, validation and downloading skipped"
27
- end
28
- @create += "knife cookbook upload #{cb}\n"
29
+ @create += "knife cookbook#{options['knife_options']} upload #{cb}\n"
29
30
 
30
- @cookbooks << cb
31
+ @cookbooks << cb
32
+ end
31
33
  end
32
34
  end
33
35
 
@@ -1,28 +1,30 @@
1
1
  class Spiceweasel::DataBagList
2
- def initialize(data_bags = [])
2
+ def initialize(data_bags = [], options = {})
3
3
  @create = @delete = ''
4
- data_bags.each do |data_bag|
5
- STDOUT.puts "DEBUG: data bag: #{data_bag.keys[0]}" if DEBUG
6
- @delete += "knife data bag delete #{data_bag.keys[0]} -y\n"
7
- @create += "knife data bag create #{data_bag.keys[0]}\n"
8
- items = data_bag[data_bag.keys[0]] || []
9
- secret = nil
10
- while item = items.shift
11
- STDOUT.puts "DEBUG: data bag #{data_bag.keys[0]} item: #{item}" if DEBUG
12
- if item.start_with?("secret")
13
- secret = item.split()[1]
14
- next
15
- end
16
- if item =~ /\*/ #wildcard support
17
- files = Dir.glob("data_bags/#{data_bag.keys[0]}/#{item}.json")
18
- items += files.collect {|x| x[x.rindex('/')+1..-6]}
19
- puts items
20
- next
21
- end
22
- if secret
23
- @create += "knife data bag from file #{data_bag.keys[0]} data_bags/#{data_bag.keys[0]}/#{item}.json --secret-file #{secret}\n"
24
- else
25
- @create += "knife data bag from file #{data_bag.keys[0]} data_bags/#{data_bag.keys[0]}/#{item}.json\n"
4
+ if data_bags
5
+ data_bags.each do |data_bag|
6
+ STDOUT.puts "DEBUG: data bag: #{data_bag.keys[0]}" if DEBUG
7
+ @delete += "knife data bag#{options['knife_options']} delete #{data_bag.keys[0]} -y\n"
8
+ @create += "knife data bag#{options['knife_options']} create #{data_bag.keys[0]}\n"
9
+ items = data_bag[data_bag.keys[0]] || []
10
+ secret = nil
11
+ while item = items.shift
12
+ STDOUT.puts "DEBUG: data bag #{data_bag.keys[0]} item: #{item}" if DEBUG
13
+ if item.start_with?("secret")
14
+ secret = item.split()[1]
15
+ next
16
+ end
17
+ if item =~ /\*/ #wildcard support
18
+ files = Dir.glob("data_bags/#{data_bag.keys[0]}/#{item}.json")
19
+ items += files.collect {|x| x[x.rindex('/')+1..-6]}
20
+ puts items
21
+ next
22
+ end
23
+ if secret
24
+ @create += "knife data bag#{options['knife_options']} from file #{data_bag.keys[0]} data_bags/#{data_bag.keys[0]}/#{item}.json --secret-file #{secret}\n"
25
+ else
26
+ @create += "knife data bag#{options['knife_options']} from file #{data_bag.keys[0]} data_bags/#{data_bag.keys[0]}/#{item}.json\n"
27
+ end
26
28
  end
27
29
  end
28
30
  end
@@ -1,12 +1,14 @@
1
1
  class Spiceweasel::EnvironmentList
2
- def initialize(environments = [])
2
+ def initialize(environments = [], options = {})
3
3
  @create = @delete = ''
4
4
  @environments = []
5
- environments.each do |environment|
6
- STDOUT.puts "DEBUG: environment: #{environment.keys[0]}" if DEBUG
7
- @delete += "knife environment delete #{environment.keys[0]} -y\n"
8
- @create += "knife environment from file #{environment.keys[0]}.rb\n"
9
- @environments << environment.keys[0]
5
+ if environments
6
+ environments.each do |environment|
7
+ STDOUT.puts "DEBUG: environment: #{environment.keys[0]}" if DEBUG
8
+ @delete += "knife environment#{options['knife_options']} delete #{environment.keys[0]} -y\n"
9
+ @create += "knife environment#{options['knife_options']} from file #{environment.keys[0]}.rb\n"
10
+ @environments << environment.keys[0]
11
+ end
10
12
  end
11
13
  end
12
14
 
@@ -1,33 +1,35 @@
1
1
  class Spiceweasel::NodeList
2
- def initialize(nodes, cookbook_list, environment_list, role_list)
2
+ def initialize(nodes, cookbook_list, environment_list, role_list, options = {})
3
3
  nodes ||= []
4
4
  @create = @delete = ''
5
5
 
6
- @delete += "knife node bulk_delete .* -y\n"
7
- nodes.each do |node|
8
- STDOUT.puts "DEBUG: node: #{node.keys[0]}" if DEBUG
9
- run_list = node[node.keys[0]][0].gsub(/ /,',').split(',')
10
- STDOUT.puts "DEBUG: node run_list: #{run_list}" if DEBUG
11
- Spiceweasel::RunList.new(run_list).validate(cookbook_list, environment_list, role_list)
12
- #provider support
13
- if node.keys[0].start_with?("bluebox","ec2","openstack","rackspace","slicehost","terremark")
14
- provider = node.keys[0].split()
15
- count = 1
16
- if (provider.length == 2)
17
- count = provider[1]
18
- end
19
- #create the instances
20
- count.to_i.times do
21
- @create += "knife #{provider[0]} server create #{node[node.keys[0]][1]}"
22
- if run_list.length > 0
23
- @create += " -r '#{node[node.keys[0]][0].gsub(/ /,',')}'\n"
6
+ @delete += "knife node#{options['knife_options']} bulk_delete .* -y\n"
7
+ if nodes
8
+ nodes.each do |node|
9
+ STDOUT.puts "DEBUG: node: #{node.keys[0]}" if DEBUG
10
+ run_list = node[node.keys[0]][0].gsub(/ /,',').split(',')
11
+ STDOUT.puts "DEBUG: node run_list: #{run_list}" if DEBUG
12
+ Spiceweasel::RunList.new(run_list).validate(cookbook_list, environment_list, role_list)
13
+ #provider support
14
+ if node.keys[0].start_with?("bluebox","ec2","openstack","rackspace","slicehost","terremark")
15
+ provider = node.keys[0].split()
16
+ count = 1
17
+ if (provider.length == 2)
18
+ count = provider[1]
24
19
  end
25
- end
26
- else #multinode support
27
- node.keys[0].split.each do |server|
28
- @create += "knife bootstrap #{server} #{node[node.keys[0]][1]}"
29
- if run_list.length > 0
30
- @create += " -r '#{node[node.keys[0]][0].gsub(/ /,',')}'\n"
20
+ #create the instances
21
+ count.to_i.times do
22
+ @create += "knife #{provider[0]}#{options['knife_options']} server create #{node[node.keys[0]][1]}"
23
+ if run_list.length > 0
24
+ @create += " -r '#{node[node.keys[0]][0].gsub(/ /,',')}'\n"
25
+ end
26
+ end
27
+ else #multinode support
28
+ node.keys[0].split.each do |server|
29
+ @create += "knife bootstrap#{options['knife_options']} #{server} #{node[node.keys[0]][1]}"
30
+ if run_list.length > 0
31
+ @create += " -r '#{node[node.keys[0]][0].gsub(/ /,',')}'\n"
32
+ end
31
33
  end
32
34
  end
33
35
  end
@@ -1,12 +1,14 @@
1
1
  class Spiceweasel::RoleList
2
- def initialize(roles = [])
2
+ def initialize(roles = [], options = {})
3
3
  @create = @delete = ''
4
4
  @roles = []
5
- roles.each do |role|
6
- STDOUT.puts "DEBUG: role: #{role.keys[0]}" if DEBUG
7
- @delete += "knife role delete #{role.keys[0]} -y\n"
8
- @create += "knife role from file #{role.keys[0]}.rb\n"
9
- @roles << role.keys[0]
5
+ if roles
6
+ roles.each do |role|
7
+ STDOUT.puts "DEBUG: role: #{role.keys[0]}" if DEBUG
8
+ @delete += "knife role#{options['knife_options']} delete #{role.keys[0]} -y\n"
9
+ @create += "knife role#{options['knife_options']} from file #{role.keys[0]}.rb\n"
10
+ @roles << role.keys[0]
11
+ end
10
12
  end
11
13
  end
12
14
 
@@ -1,3 +1,3 @@
1
1
  module Spiceweasel
2
- VERSION = "0.8.1"
2
+ VERSION = "0.8.2"
3
3
  end
metadata CHANGED
@@ -1,91 +1,72 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: spiceweasel
3
- version: !ruby/object:Gem::Version
4
- hash: 61
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 8
9
- - 1
10
- version: 0.8.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.8.2
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Matt Ray
14
9
  - Elliot Crosby-McCullough
15
10
  autorequire:
16
11
  bindir: bin
17
12
  cert_chain: []
18
-
19
- date: 2011-08-11 00:00:00 -05:00
13
+ date: 2011-10-28 00:00:00.000000000 -05:00
20
14
  default_executable:
21
- dependencies:
22
- - !ruby/object:Gem::Dependency
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
23
17
  name: chef
24
- prerelease: false
25
- requirement: &id001 !ruby/object:Gem::Requirement
18
+ requirement: &2160839960 !ruby/object:Gem::Requirement
26
19
  none: false
27
- requirements:
28
- - - ">="
29
- - !ruby/object:Gem::Version
30
- hash: 3
31
- segments:
32
- - 0
33
- version: "0"
20
+ requirements:
21
+ - - ! '>='
22
+ - !ruby/object:Gem::Version
23
+ version: '0'
34
24
  type: :runtime
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: json
38
25
  prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
26
+ version_requirements: *2160839960
27
+ - !ruby/object:Gem::Dependency
28
+ name: json
29
+ requirement: &2160839480 !ruby/object:Gem::Requirement
40
30
  none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 3
45
- segments:
46
- - 0
47
- version: "0"
31
+ requirements:
32
+ - - ! '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
48
35
  type: :runtime
49
- version_requirements: *id002
50
- - !ruby/object:Gem::Dependency
51
- name: mixlib-cli
52
36
  prerelease: false
53
- requirement: &id003 !ruby/object:Gem::Requirement
37
+ version_requirements: *2160839480
38
+ - !ruby/object:Gem::Dependency
39
+ name: mixlib-cli
40
+ requirement: &2160839000 !ruby/object:Gem::Requirement
54
41
  none: false
55
- requirements:
56
- - - ">="
57
- - !ruby/object:Gem::Version
58
- hash: 3
59
- segments:
60
- - 0
61
- version: "0"
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
62
46
  type: :runtime
63
- version_requirements: *id003
64
- - !ruby/object:Gem::Dependency
65
- name: rspec
66
47
  prerelease: false
67
- requirement: &id004 !ruby/object:Gem::Requirement
48
+ version_requirements: *2160839000
49
+ - !ruby/object:Gem::Dependency
50
+ name: rspec
51
+ requirement: &2160838480 !ruby/object:Gem::Requirement
68
52
  none: false
69
- requirements:
70
- - - ">="
71
- - !ruby/object:Gem::Version
72
- hash: 3
73
- segments:
74
- - 0
75
- version: "0"
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
76
57
  type: :development
77
- version_requirements: *id004
78
- description: This provides a CLI for generating knife commands to build Chef-managed infrastructure from a simple YAML file.
79
- email:
58
+ prerelease: false
59
+ version_requirements: *2160838480
60
+ description: This provides a CLI for generating knife commands to build Chef-managed
61
+ infrastructure from a simple YAML file.
62
+ email:
80
63
  - matt@opscode.com
81
64
  - elliot.cm@gmail.com
82
- executables:
65
+ executables:
83
66
  - spiceweasel
84
67
  extensions: []
85
-
86
68
  extra_rdoc_files: []
87
-
88
- files:
69
+ files:
89
70
  - bin/spiceweasel
90
71
  - lib/spiceweasel/cli.rb
91
72
  - lib/spiceweasel/cookbook_list.rb
@@ -101,36 +82,27 @@ files:
101
82
  has_rdoc: true
102
83
  homepage: http://github.com/mattray/spiceweasel
103
84
  licenses: []
104
-
105
85
  post_install_message:
106
86
  rdoc_options: []
107
-
108
- require_paths:
87
+ require_paths:
109
88
  - lib
110
- required_ruby_version: !ruby/object:Gem::Requirement
89
+ required_ruby_version: !ruby/object:Gem::Requirement
111
90
  none: false
112
- requirements:
113
- - - ">="
114
- - !ruby/object:Gem::Version
115
- hash: 3
116
- segments:
117
- - 0
118
- version: "0"
119
- required_rubygems_version: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ required_rubygems_version: !ruby/object:Gem::Requirement
120
96
  none: false
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- hash: 3
125
- segments:
126
- - 0
127
- version: "0"
97
+ requirements:
98
+ - - ! '>='
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
128
101
  requirements: []
129
-
130
102
  rubyforge_project: spiceweasel
131
- rubygems_version: 1.3.7
103
+ rubygems_version: 1.6.2
132
104
  signing_key:
133
105
  specification_version: 3
134
106
  summary: CLI for generating Chef knife commands from a simple YAML file.
135
- test_files:
107
+ test_files:
136
108
  - spec/bin/spiceweasel_spec.rb