natives 0.4.1 → 0.5.0

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.
Files changed (84) hide show
  1. checksums.yaml +8 -8
  2. data/Gemfile +2 -3
  3. data/Gemfile.lock +12 -53
  4. data/README.md +126 -29
  5. data/Rakefile +4 -5
  6. data/VERSION +1 -1
  7. data/bin/natives +1 -0
  8. data/catalogs/rubygems.yaml +50 -0
  9. data/lib/natives/apps/detect.rb +21 -0
  10. data/lib/natives/apps/list.rb +39 -0
  11. data/lib/natives/apps.rb +2 -0
  12. data/lib/natives/catalog/loader.rb +30 -0
  13. data/lib/natives/catalog/merger.rb +26 -0
  14. data/lib/natives/catalog/selector.rb +79 -0
  15. data/lib/natives/catalog/validator.rb +18 -0
  16. data/lib/natives/catalog.rb +56 -0
  17. data/lib/natives/cli.rb +27 -42
  18. data/lib/natives/gemfile_viewer.rb +19 -16
  19. data/lib/natives/host_detection/package_provider.rb +83 -0
  20. data/lib/natives/host_detection/platform.rb +34 -0
  21. data/lib/natives/host_detection.rb +25 -0
  22. data/lib/natives.rb +1 -0
  23. data/spec/fixtures/dir_with_matching_files/invalid1.yml +9 -0
  24. data/spec/fixtures/dir_with_matching_files/not_matching.json +0 -0
  25. data/spec/fixtures/dir_with_matching_files/valid1.yaml +21 -0
  26. data/spec/fixtures/dir_with_matching_files/valid2.yml +9 -0
  27. data/spec/fixtures/dir_without_matching_file/not_matching.json +0 -0
  28. data/spec/natives/apps/detect_spec.rb +26 -0
  29. data/spec/natives/apps/list_spec.rb +58 -0
  30. data/spec/natives/catalog/loader_spec.rb +101 -0
  31. data/spec/natives/catalog/merger_spec.rb +60 -0
  32. data/spec/natives/catalog/selector_spec.rb +124 -0
  33. data/spec/natives/catalog/validator_spec.rb +44 -0
  34. data/spec/natives/catalog_spec.rb +133 -0
  35. data/spec/natives/gemfile_viewer_spec.rb +3 -3
  36. data/spec/natives/host_detection/package_provider_spec.rb +33 -0
  37. data/spec/natives/host_detection/platform_spec.rb +21 -0
  38. data/spec/natives/host_detection_spec.rb +45 -0
  39. data/spec/spec_helper.rb +17 -2
  40. metadata +44 -66
  41. data/chef/.kitchen.yml +0 -27
  42. data/chef/Berksfile +0 -4
  43. data/chef/Berksfile.lock +0 -10
  44. data/chef/cookbooks/natives/Berksfile +0 -3
  45. data/chef/cookbooks/natives/Gemfile +0 -5
  46. data/chef/cookbooks/natives/LICENSE +0 -3
  47. data/chef/cookbooks/natives/README.md +0 -13
  48. data/chef/cookbooks/natives/chefignore +0 -96
  49. data/chef/cookbooks/natives/libraries/natives_recipe_helper.rb +0 -37
  50. data/chef/cookbooks/natives/metadata.rb +0 -9
  51. data/chef/cookbooks/natives/recipes/default.rb +0 -31
  52. data/chef/solo.rb +0 -17
  53. data/chef/vendored-cookbooks/apt/CHANGELOG.md +0 -144
  54. data/chef/vendored-cookbooks/apt/README.md +0 -247
  55. data/chef/vendored-cookbooks/apt/attributes/default.rb +0 -27
  56. data/chef/vendored-cookbooks/apt/files/default/apt-proxy-v2.conf +0 -50
  57. data/chef/vendored-cookbooks/apt/libraries/helpers.rb +0 -47
  58. data/chef/vendored-cookbooks/apt/libraries/network.rb +0 -33
  59. data/chef/vendored-cookbooks/apt/metadata.json +0 -54
  60. data/chef/vendored-cookbooks/apt/metadata.rb +0 -34
  61. data/chef/vendored-cookbooks/apt/providers/preference.rb +0 -61
  62. data/chef/vendored-cookbooks/apt/providers/repository.rb +0 -141
  63. data/chef/vendored-cookbooks/apt/recipes/cacher-client.rb +0 -81
  64. data/chef/vendored-cookbooks/apt/recipes/cacher-ng.rb +0 -43
  65. data/chef/vendored-cookbooks/apt/recipes/default.rb +0 -83
  66. data/chef/vendored-cookbooks/apt/resources/preference.rb +0 -30
  67. data/chef/vendored-cookbooks/apt/resources/repository.rb +0 -41
  68. data/chef/vendored-cookbooks/apt/templates/debian-6.0/acng.conf.erb +0 -173
  69. data/chef/vendored-cookbooks/apt/templates/default/01proxy.erb +0 -5
  70. data/chef/vendored-cookbooks/apt/templates/default/acng.conf.erb +0 -275
  71. data/chef/vendored-cookbooks/apt/templates/ubuntu-10.04/acng.conf.erb +0 -269
  72. data/chef/vendored-cookbooks/homebrew/CHANGELOG.md +0 -36
  73. data/chef/vendored-cookbooks/homebrew/README.md +0 -110
  74. data/chef/vendored-cookbooks/homebrew/attributes/default.rb +0 -22
  75. data/chef/vendored-cookbooks/homebrew/libraries/homebrew_mixin.rb +0 -53
  76. data/chef/vendored-cookbooks/homebrew/libraries/homebrew_package.rb +0 -104
  77. data/chef/vendored-cookbooks/homebrew/metadata.json +0 -32
  78. data/chef/vendored-cookbooks/homebrew/metadata.rb +0 -10
  79. data/chef/vendored-cookbooks/homebrew/providers/tap.rb +0 -48
  80. data/chef/vendored-cookbooks/homebrew/recipes/default.rb +0 -46
  81. data/chef/vendored-cookbooks/homebrew/resources/tap.rb +0 -35
  82. data/lib/natives/app.rb +0 -71
  83. data/natives.gemspec +0 -125
  84. data/spec/natives/app_spec.rb +0 -153
@@ -1,48 +0,0 @@
1
- #
2
- # Author:: Joshua Timberman (<jtimberman@opscode.com>)
3
- # Author:: Graeme Mathieson (<mathie@woss.name>)
4
- # Cookbook Name:: homebrew
5
- # Providers:: tap
6
- #
7
- # Copyright 2011-2013, Opscode, Inc.
8
- #
9
- # Licensed under the Apache License, Version 2.0 (the "License");
10
- # you may not use this file except in compliance with the License.
11
- # You may obtain a copy of the License at
12
- #
13
- # http://www.apache.org/licenses/LICENSE-2.0
14
- #
15
- # Unless required by applicable law or agreed to in writing, software
16
- # distributed under the License is distributed on an "AS IS" BASIS,
17
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
- # See the License for the specific language governing permissions and
19
- # limitations under the License.
20
- #
21
-
22
- def load_current_resource
23
- @tap = Chef::Resource::HomebrewTap.new(new_resource.name)
24
- tap_dir = @tap.name.gsub('/', '-')
25
-
26
- Chef::Log.debug("Checking whether we've already tapped #{new_resource.name}")
27
- if ::File.directory?("/usr/local/Library/Taps/#{tap_dir}")
28
- @tap.tapped true
29
- else
30
- @tap.tapped false
31
- end
32
- end
33
-
34
- action :tap do
35
- unless @tap.tapped
36
- execute "tapping #{new_resource.name}" do
37
- command "/usr/local/bin/brew tap #{new_resource.name}"
38
- end
39
- end
40
- end
41
-
42
- action :untap do
43
- if @tap.tapped
44
- execute "untapping #{new_resource.name}" do
45
- command "/usr/local/bin/brew untap #{new_resource.name}"
46
- end
47
- end
48
- end
@@ -1,46 +0,0 @@
1
- #
2
- # Author:: Joshua Timberman (<jtimberman@opscode.com>)
3
- # Author:: Graeme Mathieson (<mathie@woss.name>)
4
- # Cookbook Name:: homebrew
5
- # Recipes:: default
6
- #
7
- # Copyright 2011-2013, Opscode, Inc.
8
- #
9
- # Licensed under the Apache License, Version 2.0 (the "License");
10
- # you may not use this file except in compliance with the License.
11
- # You may obtain a copy of the License at
12
- #
13
- # http://www.apache.org/licenses/LICENSE-2.0
14
- #
15
- # Unless required by applicable law or agreed to in writing, software
16
- # distributed under the License is distributed on an "AS IS" BASIS,
17
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
- # See the License for the specific language governing permissions and
19
- # limitations under the License.
20
- #
21
-
22
- self.extend(Homebrew::Mixin)
23
-
24
- homebrew_go = "#{Chef::Config[:file_cache_path]}/homebrew_go"
25
- owner = homebrew_owner
26
-
27
- Chef::Log.debug("Homebrew owner is '#{homebrew_owner}'")
28
-
29
- remote_file homebrew_go do
30
- source "https://raw.github.com/mxcl/homebrew/go"
31
- mode 00755
32
- end
33
-
34
- execute homebrew_go do
35
- user owner
36
- not_if { ::File.exist? '/usr/local/bin/brew' }
37
- end
38
-
39
- package 'git' do
40
- not_if "which git"
41
- end
42
-
43
- execute "update homebrew from github" do
44
- user owner
45
- command "/usr/local/bin/brew update || true"
46
- end
@@ -1,35 +0,0 @@
1
- #
2
- # Author:: Joshua Timberman (<jtimberman@opscode.com>)
3
- # Author:: Graeme Mathieson (<mathie@woss.name>)
4
- # Cookbook Name:: homebrew
5
- # Resources:: tap
6
- #
7
- # Copyright 2011-2013, Opscode, Inc.
8
- #
9
- # Licensed under the Apache License, Version 2.0 (the "License");
10
- # you may not use this file except in compliance with the License.
11
- # You may obtain a copy of the License at
12
- #
13
- # http://www.apache.org/licenses/LICENSE-2.0
14
- #
15
- # Unless required by applicable law or agreed to in writing, software
16
- # distributed under the License is distributed on an "AS IS" BASIS,
17
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
- # See the License for the specific language governing permissions and
19
- # limitations under the License.
20
- #
21
-
22
- actions :tap, :untap
23
- attribute :name,
24
- :name_attribute => true,
25
- :kind_of => String,
26
- :regex => /\w+(?:\/\w+)+/
27
-
28
- attribute :tapped,
29
- :kind_of => [TrueClass, FalseClass]
30
-
31
- ### hax for default action
32
- def initialize( *args )
33
- super
34
- @action = :tap
35
- end
data/lib/natives/app.rb DELETED
@@ -1,71 +0,0 @@
1
- require 'tempfile'
2
- require 'json'
3
- require 'chef/application/solo'
4
-
5
- module Natives
6
- class App
7
- def install(catalog_name, packages, configs={})
8
- configs = default_configs.merge(configs || {})
9
- why_run = configs.delete(:test_run){ false }
10
-
11
- create_solo_json_tempfile(
12
- catalog_name.to_s, Array(packages), configs
13
- ) do |attrs_file|
14
- run_chef_solo(attrs_file, why_run)
15
- end
16
- end
17
-
18
- def run_chef_solo(json_attrs_file, why_run=false)
19
- ARGV.clear
20
- [
21
- '-c', File.join(gem_base_path, 'chef', 'solo.rb'),
22
- '-o', 'natives',
23
- '-j', json_attrs_file.to_path
24
- ].each do |token|
25
- ARGV << token
26
- end
27
-
28
- ARGV << '-W' if why_run
29
-
30
- Chef::Application::Solo.new.run
31
- end
32
-
33
- def create_solo_json_tempfile(catalog_name, packages, configs, &block)
34
- file = Tempfile.new('natives.temp_attrs_file')
35
- file.write(json_attrs(catalog_name, packages, configs))
36
- file.flush
37
- file.rewind
38
- begin
39
- block.call(file)
40
- ensure
41
- file.close!
42
- end
43
- end
44
-
45
- def default_configs
46
- {
47
- working_dir: current_working_dir
48
- }
49
- end
50
- protected
51
-
52
- def current_working_dir
53
- Dir.pwd
54
- end
55
-
56
- def gem_base_path
57
- File.absolute_path(File.join(File.dirname(__FILE__), '..', '..'))
58
- end
59
-
60
- def json_attrs(catalog_name, packages, configs)
61
- {
62
- "natives" => {
63
- "install_list" => {
64
- catalog_name => packages
65
- },
66
- "configs" => configs
67
- }
68
- }.to_json
69
- end
70
- end
71
- end
data/natives.gemspec DELETED
@@ -1,125 +0,0 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
- # stub: natives 0.4.1 ruby lib
6
-
7
- Gem::Specification.new do |s|
8
- s.name = "natives"
9
- s.version = "0.4.1"
10
-
11
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
- s.authors = ["Huiming Teo"]
13
- s.date = "2013-11-06"
14
- s.description = "Installs native library packages required by Ruby gems on different platforms, based on the catalog maintained by natives-catalog project."
15
- s.email = "teohuiming@gmail.com"
16
- s.executables = ["natives"]
17
- s.extra_rdoc_files = [
18
- "LICENSE.txt",
19
- "README.md"
20
- ]
21
- s.files = [
22
- ".document",
23
- ".rspec",
24
- "Gemfile",
25
- "Gemfile.lock",
26
- "LICENSE.txt",
27
- "README.md",
28
- "Rakefile",
29
- "VERSION",
30
- "bin/natives",
31
- "chef/.kitchen.yml",
32
- "chef/Berksfile",
33
- "chef/Berksfile.lock",
34
- "chef/cookbooks/natives/Berksfile",
35
- "chef/cookbooks/natives/Gemfile",
36
- "chef/cookbooks/natives/LICENSE",
37
- "chef/cookbooks/natives/README.md",
38
- "chef/cookbooks/natives/chefignore",
39
- "chef/cookbooks/natives/libraries/natives_recipe_helper.rb",
40
- "chef/cookbooks/natives/metadata.rb",
41
- "chef/cookbooks/natives/recipes/default.rb",
42
- "chef/solo.rb",
43
- "chef/vendored-cookbooks/apt/CHANGELOG.md",
44
- "chef/vendored-cookbooks/apt/README.md",
45
- "chef/vendored-cookbooks/apt/attributes/default.rb",
46
- "chef/vendored-cookbooks/apt/files/default/apt-proxy-v2.conf",
47
- "chef/vendored-cookbooks/apt/libraries/helpers.rb",
48
- "chef/vendored-cookbooks/apt/libraries/network.rb",
49
- "chef/vendored-cookbooks/apt/metadata.json",
50
- "chef/vendored-cookbooks/apt/metadata.rb",
51
- "chef/vendored-cookbooks/apt/providers/preference.rb",
52
- "chef/vendored-cookbooks/apt/providers/repository.rb",
53
- "chef/vendored-cookbooks/apt/recipes/cacher-client.rb",
54
- "chef/vendored-cookbooks/apt/recipes/cacher-ng.rb",
55
- "chef/vendored-cookbooks/apt/recipes/default.rb",
56
- "chef/vendored-cookbooks/apt/resources/preference.rb",
57
- "chef/vendored-cookbooks/apt/resources/repository.rb",
58
- "chef/vendored-cookbooks/apt/templates/debian-6.0/acng.conf.erb",
59
- "chef/vendored-cookbooks/apt/templates/default/01proxy.erb",
60
- "chef/vendored-cookbooks/apt/templates/default/acng.conf.erb",
61
- "chef/vendored-cookbooks/apt/templates/ubuntu-10.04/acng.conf.erb",
62
- "chef/vendored-cookbooks/homebrew/CHANGELOG.md",
63
- "chef/vendored-cookbooks/homebrew/README.md",
64
- "chef/vendored-cookbooks/homebrew/attributes/default.rb",
65
- "chef/vendored-cookbooks/homebrew/libraries/homebrew_mixin.rb",
66
- "chef/vendored-cookbooks/homebrew/libraries/homebrew_package.rb",
67
- "chef/vendored-cookbooks/homebrew/metadata.json",
68
- "chef/vendored-cookbooks/homebrew/metadata.rb",
69
- "chef/vendored-cookbooks/homebrew/providers/tap.rb",
70
- "chef/vendored-cookbooks/homebrew/recipes/default.rb",
71
- "chef/vendored-cookbooks/homebrew/resources/tap.rb",
72
- "lib/natives.rb",
73
- "lib/natives/app.rb",
74
- "lib/natives/cli.rb",
75
- "lib/natives/gemfile_viewer.rb",
76
- "natives.gemspec",
77
- "spec/fixtures/Gemfile.empty",
78
- "spec/fixtures/Gemfile.empty.lock",
79
- "spec/natives/app_spec.rb",
80
- "spec/natives/gemfile_viewer_spec.rb",
81
- "spec/spec_helper.rb"
82
- ]
83
- s.homepage = "http://github.com/teohm/natives"
84
- s.licenses = ["MIT"]
85
- s.require_paths = ["lib"]
86
- s.rubygems_version = "2.1.10"
87
- s.summary = "Installs native library packages required by Ruby gems on your machine."
88
-
89
- if s.respond_to? :specification_version then
90
- s.specification_version = 4
91
-
92
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
93
- s.add_runtime_dependency(%q<chef>, [">= 11.6.2"])
94
- s.add_runtime_dependency(%q<natives-catalog>, [">= 0.3.4"])
95
- s.add_runtime_dependency(%q<thor>, [">= 0"])
96
- s.add_development_dependency(%q<rspec>, [">= 0"])
97
- s.add_development_dependency(%q<yard>, [">= 0"])
98
- s.add_development_dependency(%q<rdoc>, [">= 0"])
99
- s.add_development_dependency(%q<bundler>, [">= 0"])
100
- s.add_development_dependency(%q<jeweler>, [">= 0"])
101
- s.add_development_dependency(%q<simplecov>, [">= 0"])
102
- else
103
- s.add_dependency(%q<chef>, [">= 11.6.2"])
104
- s.add_dependency(%q<natives-catalog>, [">= 0.3.4"])
105
- s.add_dependency(%q<thor>, [">= 0"])
106
- s.add_dependency(%q<rspec>, [">= 0"])
107
- s.add_dependency(%q<yard>, [">= 0"])
108
- s.add_dependency(%q<rdoc>, [">= 0"])
109
- s.add_dependency(%q<bundler>, [">= 0"])
110
- s.add_dependency(%q<jeweler>, [">= 0"])
111
- s.add_dependency(%q<simplecov>, [">= 0"])
112
- end
113
- else
114
- s.add_dependency(%q<chef>, [">= 11.6.2"])
115
- s.add_dependency(%q<natives-catalog>, [">= 0.3.4"])
116
- s.add_dependency(%q<thor>, [">= 0"])
117
- s.add_dependency(%q<rspec>, [">= 0"])
118
- s.add_dependency(%q<yard>, [">= 0"])
119
- s.add_dependency(%q<rdoc>, [">= 0"])
120
- s.add_dependency(%q<bundler>, [">= 0"])
121
- s.add_dependency(%q<jeweler>, [">= 0"])
122
- s.add_dependency(%q<simplecov>, [">= 0"])
123
- end
124
- end
125
-
@@ -1,153 +0,0 @@
1
- require 'spec_helper'
2
- require 'natives/app'
3
-
4
- describe Natives::App do
5
- describe "#install" do
6
- let(:app) { Natives::App.new }
7
-
8
- it "forces packages argument to be an Array" do
9
- app.should_receive(:run_chef_solo)
10
- app.should_receive(:create_solo_json_tempfile).
11
- with("foo", [], app.default_configs).
12
- and_call_original
13
-
14
- app.install("foo", nil)
15
- end
16
-
17
- it "forces catalog_name to be a String" do
18
- app.should_receive(:run_chef_solo)
19
- app.should_receive(:create_solo_json_tempfile).
20
- with("", ['foo', 'bar'], app.default_configs).
21
- and_call_original
22
-
23
- app.install(nil, ['foo', 'bar'])
24
- end
25
-
26
- it "merges configs with default configs" do
27
- app.should_receive(:run_chef_solo)
28
- app.should_receive(:create_solo_json_tempfile).
29
- with("foobar", ['foo', 'bar'], app.default_configs.merge({foo: false})).
30
- and_call_original
31
-
32
- app.install('foobar', ['foo', 'bar'], {foo: false})
33
- end
34
-
35
- it "treats nil configs as empty hash" do
36
- app.should_receive(:run_chef_solo)
37
- app.should_receive(:create_solo_json_tempfile).
38
- with("foobar", ['foo', 'bar'], app.default_configs).
39
- and_call_original
40
-
41
- app.install('foobar', ['foo', 'bar'], nil)
42
- end
43
-
44
- it "removes test_run flag from configs and use it when run Chef Solo" do
45
- app.should_receive(:run_chef_solo).
46
- with(anything, true)
47
- app.should_receive(:create_solo_json_tempfile).
48
- with("foobar", ['foo', 'bar'], app.default_configs).
49
- and_call_original
50
-
51
- app.install('foobar', ['foo', 'bar'], {test_run: true})
52
- end
53
- end
54
-
55
- describe "#create_solo_json_tempfile" do
56
- let(:app) { Natives::App.new }
57
-
58
- it "generates a valid solo.json file" do
59
- json = nil
60
- app.create_solo_json_tempfile(
61
- 'rubygems',
62
- ['foo', 'bar'],
63
- {working_dir: '/path/to/working_dir'}) do |file|
64
- json = JSON.parse(file.read)
65
- end
66
- expect(json).to eq({
67
- "natives" => {
68
- "install_list" => {
69
- "rubygems" => ["foo", "bar"]
70
- },
71
- "configs" => {
72
- "working_dir" => '/path/to/working_dir'
73
- }
74
- }
75
- })
76
- end
77
-
78
- it "generates solo.json file based on the given catalog name" do
79
- json = nil
80
- app.create_solo_json_tempfile(
81
- 'npm', ['foo', 'bar'],
82
- {working_dir: '/path/to/foo'}) do |file|
83
- json = JSON.parse(file.read)
84
- end
85
- expect(json).to eq({
86
- "natives" => {
87
- "install_list" => {
88
- "npm" => ["foo", "bar"]
89
- },
90
- "configs" => {
91
- "working_dir" => '/path/to/foo'
92
- }
93
- }
94
- })
95
- end
96
-
97
- it "handles empty package list" do
98
- json = nil
99
- app.create_solo_json_tempfile('rubygems', [], {}) do |file|
100
- json = JSON.parse(file.read)
101
- end
102
- expect(json).to eq({
103
- "natives" => {
104
- "install_list" => {
105
- "rubygems" => []
106
- },
107
- "configs" => {
108
- }
109
-
110
- }
111
- })
112
- end
113
- end
114
-
115
- describe "#run_chef_solo" do
116
- let(:app) { Natives::App.new }
117
-
118
- it "rewrites ARGV with Chef Solo options and run Chef Solo Application" do
119
- attrs_file = double()
120
- attrs_file.stub(:to_path) { '/path/to/attrs_file' }
121
- Chef::Application::Solo.any_instance.should_receive(:run)
122
-
123
- app.run_chef_solo(attrs_file)
124
-
125
- expect(ARGV).to eq([
126
- '-c',
127
- File.absolute_path(File.join(
128
- File.dirname(__FILE__), '..', '..', 'chef', 'solo.rb')),
129
- '-o', 'natives',
130
- '-j', '/path/to/attrs_file'
131
- ])
132
- end
133
-
134
- it "can turn on Chef's --why-run flag" do
135
- attrs_file = double()
136
- attrs_file.stub(:to_path) { '/path/to/attrs_file' }
137
- Chef::Application::Solo.any_instance.should_receive(:run)
138
-
139
- test_run = true
140
- app.run_chef_solo(attrs_file, test_run)
141
-
142
- expect(ARGV).to eq([
143
- '-c',
144
- File.absolute_path(File.join(
145
- File.dirname(__FILE__), '..', '..', 'chef', 'solo.rb')),
146
- '-o', 'natives',
147
- '-j', '/path/to/attrs_file',
148
- '-W'
149
- ])
150
-
151
- end
152
- end
153
- end