halite 1.0.0.rc.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +3 -0
  3. data/.travis.yml +10 -0
  4. data/Gemfile +15 -0
  5. data/LICENSE +202 -0
  6. data/README.md +75 -0
  7. data/Rakefile +22 -0
  8. data/halite.gemspec +33 -0
  9. data/lib/berkshelf/halite.rb +2 -0
  10. data/lib/halite.rb +12 -0
  11. data/lib/halite/berkshelf/helper.rb +69 -0
  12. data/lib/halite/berkshelf/source.rb +56 -0
  13. data/lib/halite/converter.rb +17 -0
  14. data/lib/halite/converter/libraries.rb +40 -0
  15. data/lib/halite/converter/metadata.rb +21 -0
  16. data/lib/halite/converter/other.rb +19 -0
  17. data/lib/halite/converter/readme.rb +20 -0
  18. data/lib/halite/dependencies.rb +72 -0
  19. data/lib/halite/error.rb +4 -0
  20. data/lib/halite/gem.rb +82 -0
  21. data/lib/halite/rake_helper.rb +151 -0
  22. data/lib/halite/rake_tasks.rb +2 -0
  23. data/lib/halite/spec_helper.rb +134 -0
  24. data/lib/halite/spec_helper/empty/README.md +1 -0
  25. data/lib/halite/spec_helper/runner.rb +43 -0
  26. data/lib/halite/version.rb +3 -0
  27. data/spec/converter/libraries_spec.rb +152 -0
  28. data/spec/converter/metadata_spec.rb +60 -0
  29. data/spec/converter/other_spec.rb +56 -0
  30. data/spec/converter/readme_spec.rb +55 -0
  31. data/spec/converter_spec.rb +14 -0
  32. data/spec/data/gems/test1/Rakefile +1 -0
  33. data/spec/data/gems/test1/lib/test1.rb +2 -0
  34. data/spec/data/gems/test1/lib/test1/version.rb +3 -0
  35. data/spec/data/gems/test1/test1.gemspec +25 -0
  36. data/spec/data/gems/test2/Rakefile +1 -0
  37. data/spec/data/gems/test2/chef/attributes.rb +0 -0
  38. data/spec/data/gems/test2/chef/recipes/default.rb +0 -0
  39. data/spec/data/gems/test2/chef/templates/default/conf.erb +0 -0
  40. data/spec/data/gems/test2/lib/test2.rb +4 -0
  41. data/spec/data/gems/test2/lib/test2/resource.rb +6 -0
  42. data/spec/data/gems/test2/lib/test2/version.rb +3 -0
  43. data/spec/data/gems/test2/test2.gemspec +24 -0
  44. data/spec/data/gems/test3/Rakefile +1 -0
  45. data/spec/data/gems/test3/chef/recipes/default.rb +1 -0
  46. data/spec/data/gems/test3/lib/test3.rb +4 -0
  47. data/spec/data/gems/test3/lib/test3/dsl.rb +15 -0
  48. data/spec/data/gems/test3/lib/test3/version.rb +3 -0
  49. data/spec/data/gems/test3/test3.gemspec +24 -0
  50. data/spec/data/integration_cookbooks/test1/libraries/test1.rb +3 -0
  51. data/spec/data/integration_cookbooks/test1/libraries/test1__version.rb +4 -0
  52. data/spec/data/integration_cookbooks/test1/metadata.rb +4 -0
  53. data/spec/data/integration_cookbooks/test2/attributes.rb +0 -0
  54. data/spec/data/integration_cookbooks/test2/libraries/test2.rb +5 -0
  55. data/spec/data/integration_cookbooks/test2/libraries/test2__resource.rb +7 -0
  56. data/spec/data/integration_cookbooks/test2/libraries/test2__version.rb +4 -0
  57. data/spec/data/integration_cookbooks/test2/metadata.rb +4 -0
  58. data/spec/data/integration_cookbooks/test2/recipes/default.rb +0 -0
  59. data/spec/data/integration_cookbooks/test2/templates/default/conf.erb +0 -0
  60. data/spec/data/integration_cookbooks/test3/libraries/test3.rb +5 -0
  61. data/spec/data/integration_cookbooks/test3/libraries/test3__dsl.rb +16 -0
  62. data/spec/data/integration_cookbooks/test3/libraries/test3__version.rb +4 -0
  63. data/spec/data/integration_cookbooks/test3/metadata.rb +4 -0
  64. data/spec/data/integration_cookbooks/test3/recipes/default.rb +1 -0
  65. data/spec/dependencies_spec.rb +167 -0
  66. data/spec/gem_spec.rb +164 -0
  67. data/spec/integration_spec.rb +104 -0
  68. data/spec/spec_helper.rb +28 -0
  69. metadata +307 -0
data/spec/gem_spec.rb ADDED
@@ -0,0 +1,164 @@
1
+ require 'spec_helper'
2
+ require 'halite/gem'
3
+ require 'halite/version'
4
+
5
+ describe Halite::Gem do
6
+ subject { described_class.new(gem_name, gem_version) }
7
+ let(:gem_name) { 'halite' }
8
+ let(:gem_version) { nil }
9
+
10
+ context 'when loading halite' do
11
+ its(:name) { is_expected.to eq 'halite' }
12
+ its(:version) { is_expected.to eq Halite::VERSION }
13
+ its(:description) { is_expected.to be_a String }
14
+ its(:files) { is_expected.to include 'halite.gemspec' }
15
+ its(:files) { is_expected.to include 'lib/halite/gem.rb' }
16
+ end
17
+
18
+ context 'when loading halite with a version' do
19
+ let(:gem_version) { Halite::VERSION }
20
+ its(:name) { is_expected.to eq 'halite' }
21
+ its(:version) { is_expected.to eq Halite::VERSION }
22
+ its(:description) { is_expected.to be_a String }
23
+ end
24
+
25
+ context 'when loading rspec' do
26
+ let(:gem_name) { 'rspec' }
27
+ its(:name) { is_expected.to eq 'rspec' }
28
+ its(:description) { is_expected.to be_a String }
29
+ its(:is_halite_cookbook?) { is_expected.to be_falsey }
30
+ end
31
+
32
+ context 'when loading test1' do
33
+ let(:gem_name) { 'test1' }
34
+ its(:name) { is_expected.to eq 'test1' }
35
+ its(:version) { is_expected.to eq '1.2.3' }
36
+ its(:cookbook_name) { is_expected.to eq 'test1' }
37
+ its(:files) { is_expected.to include 'test1.gemspec' }
38
+ its(:files) { is_expected.to include 'lib/test1.rb' }
39
+ its(:license_header) { is_expected.to eq "# coding: utf-8\n# Awesome license\n" }
40
+ its(:each_library_file) { is_expected.to eq [
41
+ [File.expand_path('../data/gems/test1/lib/test1.rb', __FILE__), 'test1.rb'],
42
+ [File.expand_path('../data/gems/test1/lib/test1/version.rb', __FILE__), 'test1/version.rb'],
43
+ ] }
44
+ its(:cookbook_dependencies) { is_expected.to eq [] }
45
+ its(:is_halite_cookbook?) { is_expected.to be_truthy }
46
+
47
+ describe '#each_file' do
48
+ context 'with no prefixes' do
49
+ it 'returns all files' do
50
+ expect(subject.each_file).to eq [
51
+ [File.expand_path('../data/gems/test1/Rakefile', __FILE__), 'Rakefile'],
52
+ [File.expand_path('../data/gems/test1/lib/test1.rb', __FILE__), 'lib/test1.rb'],
53
+ [File.expand_path('../data/gems/test1/lib/test1/version.rb', __FILE__), 'lib/test1/version.rb'],
54
+ [File.expand_path('../data/gems/test1/test1.gemspec', __FILE__), 'test1.gemspec'],
55
+ ]
56
+ end
57
+ end
58
+
59
+ context 'with a prefix that overlaps a filename' do
60
+ it 'returns only files in that folder' do
61
+ expect(subject.each_file('lib/test1')).to eq [
62
+ [File.expand_path('../data/gems/test1/lib/test1/version.rb', __FILE__), 'version.rb'],
63
+ ]
64
+ end
65
+ end
66
+ end
67
+ end # /context when loading test1
68
+
69
+ context 'when loading test2' do
70
+ let(:gem_name) { 'test2' }
71
+ its(:name) { is_expected.to eq 'test2' }
72
+ its(:version) { is_expected.to eq '4.5.6' }
73
+ its(:cookbook_name) { is_expected.to eq 'test2' }
74
+ its(:files) { is_expected.to include 'test2.gemspec' }
75
+ its(:files) { is_expected.to include 'lib/test2.rb' }
76
+ its(:license_header) { is_expected.to eq "# coding: utf-8\n" }
77
+ its(:each_library_file) { is_expected.to eq [
78
+ [File.expand_path('../data/gems/test2/lib/test2.rb', __FILE__), 'test2.rb'],
79
+ [File.expand_path('../data/gems/test2/lib/test2/resource.rb', __FILE__), 'test2/resource.rb'],
80
+ [File.expand_path('../data/gems/test2/lib/test2/version.rb', __FILE__), 'test2/version.rb'],
81
+ ] }
82
+ its(:cookbook_dependencies) { is_expected.to eq [Halite::Dependencies::Dependency.new('testdep', '>= 0.0', :requirements)] }
83
+ its(:is_halite_cookbook?) { is_expected.to be_truthy }
84
+
85
+ describe '#each_file' do
86
+ context 'with no prefixes' do
87
+ it 'returns all files' do
88
+ expect(subject.each_file).to eq [
89
+ [File.expand_path('../data/gems/test2/Rakefile', __FILE__), 'Rakefile'],
90
+ [File.expand_path('../data/gems/test2/chef/attributes.rb', __FILE__), 'chef/attributes.rb'],
91
+ [File.expand_path('../data/gems/test2/chef/recipes/default.rb', __FILE__), 'chef/recipes/default.rb'],
92
+ [File.expand_path('../data/gems/test2/chef/templates/default/conf.erb', __FILE__), 'chef/templates/default/conf.erb'],
93
+ [File.expand_path('../data/gems/test2/lib/test2.rb', __FILE__), 'lib/test2.rb'],
94
+ [File.expand_path('../data/gems/test2/lib/test2/resource.rb', __FILE__), 'lib/test2/resource.rb'],
95
+ [File.expand_path('../data/gems/test2/lib/test2/version.rb', __FILE__), 'lib/test2/version.rb'],
96
+ [File.expand_path('../data/gems/test2/test2.gemspec', __FILE__), 'test2.gemspec'],
97
+ ]
98
+ end
99
+ end
100
+
101
+ context 'with a prefix of chef' do
102
+ it 'returns only files in that folder' do
103
+ expect(subject.each_file('chef')).to eq [
104
+ [File.expand_path('../data/gems/test2/chef/attributes.rb', __FILE__), 'attributes.rb'],
105
+ [File.expand_path('../data/gems/test2/chef/recipes/default.rb', __FILE__), 'recipes/default.rb'],
106
+ [File.expand_path('../data/gems/test2/chef/templates/default/conf.erb', __FILE__), 'templates/default/conf.erb'],
107
+ ]
108
+ end
109
+ end
110
+ end
111
+ end # /context when loading test2
112
+
113
+ context 'when loading test3' do
114
+ let(:gem_name) { 'test3' }
115
+ its(:cookbook_name) { is_expected.to eq 'test3' }
116
+ its(:cookbook_dependencies) { is_expected.to eq [Halite::Dependencies::Dependency.new('test2', '~> 4.5.6', :dependencies)] }
117
+ its(:is_halite_cookbook?) { is_expected.to be_truthy }
118
+ end # /context when loading test3
119
+
120
+ describe '#cookbook_name' do
121
+ let(:metadata) { {} }
122
+ subject { described_class.new(Gem::Specification.new {|s| s.name = gem_name; s.metadata.update(metadata) }).cookbook_name }
123
+
124
+ context 'with a gem named mygem' do
125
+ let(:gem_name) { 'mygem' }
126
+ it { is_expected.to eq 'mygem' }
127
+ end
128
+
129
+ context 'with a gem with an override' do
130
+ let(:metadata) { {'halite_name' => 'other' } }
131
+ it { is_expected.to eq 'other' }
132
+ end
133
+
134
+ context 'with a gem named chef-mygem' do
135
+ let(:gem_name) { 'chef-mygem' }
136
+ it { is_expected.to eq 'mygem' }
137
+ end
138
+
139
+ context 'with a gem named cookbook-mygem' do
140
+ let(:gem_name) { 'cookbook-mygem' }
141
+ it { is_expected.to eq 'mygem' }
142
+ end
143
+
144
+ context 'with a gem named mygem-chef' do
145
+ let(:gem_name) { 'mygem-chef' }
146
+ it { is_expected.to eq 'mygem' }
147
+ end
148
+
149
+ context 'with a gem named mygem-cookbook' do
150
+ let(:gem_name) { 'mygem-cookbook' }
151
+ it { is_expected.to eq 'mygem' }
152
+ end
153
+
154
+ context 'with a gem named chef-mygem-cookbook' do
155
+ let(:gem_name) { 'chef-mygem-cookbook' }
156
+ it { is_expected.to eq 'mygem' }
157
+ end
158
+
159
+ context 'with a gem named mycompany-mygem' do
160
+ let(:gem_name) { 'mycompany-mygem' }
161
+ it { is_expected.to eq 'mycompany-mygem' }
162
+ end
163
+ end
164
+ end
@@ -0,0 +1,104 @@
1
+ require 'spec_helper'
2
+ require 'tmpdir'
3
+ require 'mixlib/shellout'
4
+ require 'halite/converter'
5
+
6
+ describe 'integration tests' do
7
+ around do |example|
8
+ Dir.mktmpdir('halite_test') do |path|
9
+ example.metadata[:halite_temp_path] = path
10
+ example.run
11
+ end
12
+ end
13
+ let(:temp_path) do |example|
14
+ example.metadata[:halite_temp_path]
15
+ end
16
+ let(:gem_name) { '' }
17
+ let(:stub_cookbooks) { [] }
18
+ let(:extra_gems) { [] }
19
+ let(:recipes) { [] }
20
+ let(:fixture_path) { File.expand_path("../data/integration_cookbooks/#{gem_name}", __FILE__) }
21
+ let(:expect_output) { nil }
22
+
23
+ shared_examples 'an integration test' do
24
+ def directories_match(temp_path, fixture_path)
25
+ temp_files = Dir[File.join(temp_path, '**', '*')].sort
26
+ fixture_files = Dir[File.join(fixture_path, '**', '*')].sort
27
+ expect(temp_files.map {|path| path[temp_path.length..-1] }).to eq fixture_files.map {|path| path[fixture_path.length..-1] }
28
+ temp_files.zip(fixture_files).each do |temp_file, fixture_file|
29
+ next unless File.file?(temp_file)
30
+ expect(IO.read(temp_file)).to eq IO.read(fixture_file)
31
+ end
32
+ end
33
+
34
+ it 'matches the fixture' do
35
+ # Convert gem
36
+ Halite.convert(gem_name, temp_path)
37
+ # Check that conversion matches the fixture
38
+ directories_match(temp_path, fixture_path)
39
+ end
40
+
41
+ it 'is a valid cookbook', slow: true do
42
+ # Write out a solo config with the path
43
+ solo_rb = File.join(temp_path, 'solo.rb')
44
+ IO.write(solo_rb, "cookbook_path '#{temp_path}'")
45
+ # Write out a cookbook that depends on our gem cookbook
46
+ runner_path = File.join(temp_path, 'runner')
47
+ Dir.mkdir(runner_path)
48
+ IO.write(File.join(runner_path, 'metadata.rb'), "name 'runner'\ndepends '#{gem_name}'")
49
+ Dir.mkdir(File.join(runner_path, 'recipes'))
50
+ IO.write(File.join(runner_path, 'recipes', 'default.rb'), '')
51
+ # Write out a stub cookbooks for dependency testing
52
+ stub_cookbooks.each do |(stub_name, stub_version)|
53
+ stub_path = File.join(temp_path, stub_name)
54
+ Dir.mkdir(stub_path)
55
+ IO.write(File.join(stub_path, 'metadata.rb'), "name '#{stub_name}'\nversion '#{stub_version}'")
56
+ end
57
+ # Convert gems
58
+ ([gem_name] + extra_gems).each do |name|
59
+ cookbook_path = File.join(temp_path, name)
60
+ Dir.mkdir(cookbook_path)
61
+ Halite.convert(name, cookbook_path)
62
+ end
63
+ # Run solo
64
+ cmd = Mixlib::ShellOut.new("bundle exec chef-solo -l debug -c #{solo_rb} -o #{(['runner']+recipes).map{|r| "recipe[#{r}]"}.join(',')}", cwd: temp_path)
65
+ cmd.run_command
66
+ expect(cmd.error?).to be_falsey, "Running #{cmd.command} failed (#{cmd.exitstatus} #{cmd.error?}):\n#{cmd.stderr.empty? ? cmd.stdout : cmd.stderr}"
67
+ Array(expect_output).each do |output|
68
+ expect(cmd.stdout).to include(output), "'#{output}' not found in the output of #{cmd.command}:\n#{cmd.stdout}"
69
+ end
70
+ end
71
+
72
+ it 'can run rake chef:build', slow: true do
73
+ # Copy the test gem to the temp path
74
+ FileUtils.cp_r(File.join(File.expand_path(File.join('..', 'data', 'gems', gem_name), __FILE__), '.'), temp_path)
75
+ # Run rake build
76
+ cmd = Mixlib::ShellOut.new("bundle exec rake chef:build", cwd: temp_path)
77
+ cmd.run_command
78
+ expect(cmd.error?).to be_falsey, "Running #{cmd.command} failed (#{cmd.exitstatus} #{cmd.error?}):\n#{cmd.stderr.empty? ? cmd.stdout : cmd.stderr}"
79
+ # Check that conversion matches the fixture
80
+ directories_match(Dir[File.join(temp_path, 'pkg', '*')].first, fixture_path)
81
+ end
82
+ end
83
+
84
+ context 'with test1 gem', integration: true do
85
+ let(:gem_name) { 'test1' }
86
+ it_should_behave_like 'an integration test'
87
+ end
88
+
89
+ context 'with test2 gem', integration: true do
90
+ let(:gem_name) { 'test2' }
91
+ let(:stub_cookbooks) { [['testdep', '1.0.0']] }
92
+ it_should_behave_like 'an integration test'
93
+ end
94
+
95
+ context 'with test3 gem', integration: true do
96
+ let(:gem_name) { 'test3' }
97
+ let(:extra_gems) { ['test2'] }
98
+ let(:stub_cookbooks) { [['testdep', '1.0.0']] }
99
+ let(:recipes) { ['test3'] }
100
+ let(:expect_output) { '!!!!!!!!!!test34.5.6' }
101
+ it_should_behave_like 'an integration test'
102
+ end
103
+
104
+ end
@@ -0,0 +1,28 @@
1
+ require 'rspec'
2
+ require 'rspec/its'
3
+ require 'simplecov'
4
+
5
+ # If we have a token, use codeclimate
6
+ if ENV['CODECLIMATE_REPO_TOKEN']
7
+ require 'codeclimate-test-reporter'
8
+ SimpleCov.formatter = CodeClimate::TestReporter::Formatter
9
+ end
10
+
11
+ SimpleCov.start do
12
+ # Don't get coverage on the test cases themselves
13
+ add_filter '/test/'
14
+ end
15
+
16
+ require 'halite'
17
+
18
+ RSpec.configure do |config|
19
+ # Basic configuraiton
20
+ config.run_all_when_everything_filtered = true
21
+ config.filter_run(:focus)
22
+
23
+ # Run specs in random order to surface order dependencies. If you find an
24
+ # order dependency and want to debug it, you can fix the order by providing
25
+ # the seed, which is printed after each run.
26
+ # --seed 1234
27
+ config.order = 'random'
28
+ end
metadata ADDED
@@ -0,0 +1,307 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: halite
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0.rc.1
5
+ platform: ruby
6
+ authors:
7
+ - Noah Kantrowitz
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-01-24 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: stove
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 3.2.3
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 3.2.3
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: thor
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 10.4.2
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 10.4.2
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 3.1.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 3.1.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec-its
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 1.1.0
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 1.1.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: fuubar
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 2.0.0
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 2.0.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: pry
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: simplecov
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 0.9.1
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 0.9.1
139
+ - !ruby/object:Gem::Dependency
140
+ name: mixlib-shellout
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: 2.0.0
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: 2.0.0
153
+ - !ruby/object:Gem::Dependency
154
+ name: chef
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: 12.0.0
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: 12.0.0
167
+ description: A set of helpers to write Chef cookbooks as Ruby gems.
168
+ email:
169
+ - noah@coderanger.net
170
+ executables: []
171
+ extensions: []
172
+ extra_rdoc_files: []
173
+ files:
174
+ - ".gitignore"
175
+ - ".travis.yml"
176
+ - Gemfile
177
+ - LICENSE
178
+ - README.md
179
+ - Rakefile
180
+ - halite.gemspec
181
+ - lib/berkshelf/halite.rb
182
+ - lib/halite.rb
183
+ - lib/halite/berkshelf/helper.rb
184
+ - lib/halite/berkshelf/source.rb
185
+ - lib/halite/converter.rb
186
+ - lib/halite/converter/libraries.rb
187
+ - lib/halite/converter/metadata.rb
188
+ - lib/halite/converter/other.rb
189
+ - lib/halite/converter/readme.rb
190
+ - lib/halite/dependencies.rb
191
+ - lib/halite/error.rb
192
+ - lib/halite/gem.rb
193
+ - lib/halite/rake_helper.rb
194
+ - lib/halite/rake_tasks.rb
195
+ - lib/halite/spec_helper.rb
196
+ - lib/halite/spec_helper/empty/README.md
197
+ - lib/halite/spec_helper/runner.rb
198
+ - lib/halite/version.rb
199
+ - spec/converter/libraries_spec.rb
200
+ - spec/converter/metadata_spec.rb
201
+ - spec/converter/other_spec.rb
202
+ - spec/converter/readme_spec.rb
203
+ - spec/converter_spec.rb
204
+ - spec/data/gems/test1/Rakefile
205
+ - spec/data/gems/test1/lib/test1.rb
206
+ - spec/data/gems/test1/lib/test1/version.rb
207
+ - spec/data/gems/test1/test1.gemspec
208
+ - spec/data/gems/test2/Rakefile
209
+ - spec/data/gems/test2/chef/attributes.rb
210
+ - spec/data/gems/test2/chef/recipes/default.rb
211
+ - spec/data/gems/test2/chef/templates/default/conf.erb
212
+ - spec/data/gems/test2/lib/test2.rb
213
+ - spec/data/gems/test2/lib/test2/resource.rb
214
+ - spec/data/gems/test2/lib/test2/version.rb
215
+ - spec/data/gems/test2/test2.gemspec
216
+ - spec/data/gems/test3/Rakefile
217
+ - spec/data/gems/test3/chef/recipes/default.rb
218
+ - spec/data/gems/test3/lib/test3.rb
219
+ - spec/data/gems/test3/lib/test3/dsl.rb
220
+ - spec/data/gems/test3/lib/test3/version.rb
221
+ - spec/data/gems/test3/test3.gemspec
222
+ - spec/data/integration_cookbooks/test1/libraries/test1.rb
223
+ - spec/data/integration_cookbooks/test1/libraries/test1__version.rb
224
+ - spec/data/integration_cookbooks/test1/metadata.rb
225
+ - spec/data/integration_cookbooks/test2/attributes.rb
226
+ - spec/data/integration_cookbooks/test2/libraries/test2.rb
227
+ - spec/data/integration_cookbooks/test2/libraries/test2__resource.rb
228
+ - spec/data/integration_cookbooks/test2/libraries/test2__version.rb
229
+ - spec/data/integration_cookbooks/test2/metadata.rb
230
+ - spec/data/integration_cookbooks/test2/recipes/default.rb
231
+ - spec/data/integration_cookbooks/test2/templates/default/conf.erb
232
+ - spec/data/integration_cookbooks/test3/libraries/test3.rb
233
+ - spec/data/integration_cookbooks/test3/libraries/test3__dsl.rb
234
+ - spec/data/integration_cookbooks/test3/libraries/test3__version.rb
235
+ - spec/data/integration_cookbooks/test3/metadata.rb
236
+ - spec/data/integration_cookbooks/test3/recipes/default.rb
237
+ - spec/dependencies_spec.rb
238
+ - spec/gem_spec.rb
239
+ - spec/integration_spec.rb
240
+ - spec/spec_helper.rb
241
+ homepage: https://github.com/coderanger/halite
242
+ licenses:
243
+ - Apache 2.0
244
+ metadata: {}
245
+ post_install_message:
246
+ rdoc_options: []
247
+ require_paths:
248
+ - lib
249
+ required_ruby_version: !ruby/object:Gem::Requirement
250
+ requirements:
251
+ - - ">="
252
+ - !ruby/object:Gem::Version
253
+ version: '0'
254
+ required_rubygems_version: !ruby/object:Gem::Requirement
255
+ requirements:
256
+ - - ">"
257
+ - !ruby/object:Gem::Version
258
+ version: 1.3.1
259
+ requirements: []
260
+ rubyforge_project:
261
+ rubygems_version: 2.2.2
262
+ signing_key:
263
+ specification_version: 4
264
+ summary: A set of helpers to write Chef cookbooks as Ruby gems.
265
+ test_files:
266
+ - spec/converter/libraries_spec.rb
267
+ - spec/converter/metadata_spec.rb
268
+ - spec/converter/other_spec.rb
269
+ - spec/converter/readme_spec.rb
270
+ - spec/converter_spec.rb
271
+ - spec/data/gems/test1/Rakefile
272
+ - spec/data/gems/test1/lib/test1.rb
273
+ - spec/data/gems/test1/lib/test1/version.rb
274
+ - spec/data/gems/test1/test1.gemspec
275
+ - spec/data/gems/test2/Rakefile
276
+ - spec/data/gems/test2/chef/attributes.rb
277
+ - spec/data/gems/test2/chef/recipes/default.rb
278
+ - spec/data/gems/test2/chef/templates/default/conf.erb
279
+ - spec/data/gems/test2/lib/test2.rb
280
+ - spec/data/gems/test2/lib/test2/resource.rb
281
+ - spec/data/gems/test2/lib/test2/version.rb
282
+ - spec/data/gems/test2/test2.gemspec
283
+ - spec/data/gems/test3/Rakefile
284
+ - spec/data/gems/test3/chef/recipes/default.rb
285
+ - spec/data/gems/test3/lib/test3.rb
286
+ - spec/data/gems/test3/lib/test3/dsl.rb
287
+ - spec/data/gems/test3/lib/test3/version.rb
288
+ - spec/data/gems/test3/test3.gemspec
289
+ - spec/data/integration_cookbooks/test1/libraries/test1.rb
290
+ - spec/data/integration_cookbooks/test1/libraries/test1__version.rb
291
+ - spec/data/integration_cookbooks/test1/metadata.rb
292
+ - spec/data/integration_cookbooks/test2/attributes.rb
293
+ - spec/data/integration_cookbooks/test2/libraries/test2.rb
294
+ - spec/data/integration_cookbooks/test2/libraries/test2__resource.rb
295
+ - spec/data/integration_cookbooks/test2/libraries/test2__version.rb
296
+ - spec/data/integration_cookbooks/test2/metadata.rb
297
+ - spec/data/integration_cookbooks/test2/recipes/default.rb
298
+ - spec/data/integration_cookbooks/test2/templates/default/conf.erb
299
+ - spec/data/integration_cookbooks/test3/libraries/test3.rb
300
+ - spec/data/integration_cookbooks/test3/libraries/test3__dsl.rb
301
+ - spec/data/integration_cookbooks/test3/libraries/test3__version.rb
302
+ - spec/data/integration_cookbooks/test3/metadata.rb
303
+ - spec/data/integration_cookbooks/test3/recipes/default.rb
304
+ - spec/dependencies_spec.rb
305
+ - spec/gem_spec.rb
306
+ - spec/integration_spec.rb
307
+ - spec/spec_helper.rb