halite 1.0.0.rc.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +3 -0
- data/.travis.yml +10 -0
- data/Gemfile +15 -0
- data/LICENSE +202 -0
- data/README.md +75 -0
- data/Rakefile +22 -0
- data/halite.gemspec +33 -0
- data/lib/berkshelf/halite.rb +2 -0
- data/lib/halite.rb +12 -0
- data/lib/halite/berkshelf/helper.rb +69 -0
- data/lib/halite/berkshelf/source.rb +56 -0
- data/lib/halite/converter.rb +17 -0
- data/lib/halite/converter/libraries.rb +40 -0
- data/lib/halite/converter/metadata.rb +21 -0
- data/lib/halite/converter/other.rb +19 -0
- data/lib/halite/converter/readme.rb +20 -0
- data/lib/halite/dependencies.rb +72 -0
- data/lib/halite/error.rb +4 -0
- data/lib/halite/gem.rb +82 -0
- data/lib/halite/rake_helper.rb +151 -0
- data/lib/halite/rake_tasks.rb +2 -0
- data/lib/halite/spec_helper.rb +134 -0
- data/lib/halite/spec_helper/empty/README.md +1 -0
- data/lib/halite/spec_helper/runner.rb +43 -0
- data/lib/halite/version.rb +3 -0
- data/spec/converter/libraries_spec.rb +152 -0
- data/spec/converter/metadata_spec.rb +60 -0
- data/spec/converter/other_spec.rb +56 -0
- data/spec/converter/readme_spec.rb +55 -0
- data/spec/converter_spec.rb +14 -0
- data/spec/data/gems/test1/Rakefile +1 -0
- data/spec/data/gems/test1/lib/test1.rb +2 -0
- data/spec/data/gems/test1/lib/test1/version.rb +3 -0
- data/spec/data/gems/test1/test1.gemspec +25 -0
- data/spec/data/gems/test2/Rakefile +1 -0
- data/spec/data/gems/test2/chef/attributes.rb +0 -0
- data/spec/data/gems/test2/chef/recipes/default.rb +0 -0
- data/spec/data/gems/test2/chef/templates/default/conf.erb +0 -0
- data/spec/data/gems/test2/lib/test2.rb +4 -0
- data/spec/data/gems/test2/lib/test2/resource.rb +6 -0
- data/spec/data/gems/test2/lib/test2/version.rb +3 -0
- data/spec/data/gems/test2/test2.gemspec +24 -0
- data/spec/data/gems/test3/Rakefile +1 -0
- data/spec/data/gems/test3/chef/recipes/default.rb +1 -0
- data/spec/data/gems/test3/lib/test3.rb +4 -0
- data/spec/data/gems/test3/lib/test3/dsl.rb +15 -0
- data/spec/data/gems/test3/lib/test3/version.rb +3 -0
- data/spec/data/gems/test3/test3.gemspec +24 -0
- data/spec/data/integration_cookbooks/test1/libraries/test1.rb +3 -0
- data/spec/data/integration_cookbooks/test1/libraries/test1__version.rb +4 -0
- data/spec/data/integration_cookbooks/test1/metadata.rb +4 -0
- data/spec/data/integration_cookbooks/test2/attributes.rb +0 -0
- data/spec/data/integration_cookbooks/test2/libraries/test2.rb +5 -0
- data/spec/data/integration_cookbooks/test2/libraries/test2__resource.rb +7 -0
- data/spec/data/integration_cookbooks/test2/libraries/test2__version.rb +4 -0
- data/spec/data/integration_cookbooks/test2/metadata.rb +4 -0
- data/spec/data/integration_cookbooks/test2/recipes/default.rb +0 -0
- data/spec/data/integration_cookbooks/test2/templates/default/conf.erb +0 -0
- data/spec/data/integration_cookbooks/test3/libraries/test3.rb +5 -0
- data/spec/data/integration_cookbooks/test3/libraries/test3__dsl.rb +16 -0
- data/spec/data/integration_cookbooks/test3/libraries/test3__version.rb +4 -0
- data/spec/data/integration_cookbooks/test3/metadata.rb +4 -0
- data/spec/data/integration_cookbooks/test3/recipes/default.rb +1 -0
- data/spec/dependencies_spec.rb +167 -0
- data/spec/gem_spec.rb +164 -0
- data/spec/integration_spec.rb +104 -0
- data/spec/spec_helper.rb +28 -0
- 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
|
data/spec/spec_helper.rb
ADDED
@@ -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
|