vagrant-berkshelf 3.0.1 → 4.0.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.
- checksums.yaml +4 -4
- data/.gitignore +36 -17
- data/.travis.yml +6 -4
- data/CONTRIBUTING.md +4 -4
- data/Gemfile +2 -2
- data/{LICENSE.txt → LICENSE} +1 -1
- data/README.md +67 -24
- data/Rakefile +14 -0
- data/lib/vagrant-berkshelf.rb +17 -1
- data/lib/vagrant-berkshelf/action/base.rb +48 -0
- data/lib/vagrant-berkshelf/action/check.rb +44 -0
- data/lib/vagrant-berkshelf/action/clean.rb +29 -0
- data/lib/vagrant-berkshelf/action/install.rb +35 -0
- data/lib/vagrant-berkshelf/action/load.rb +59 -0
- data/lib/vagrant-berkshelf/action/share.rb +38 -0
- data/lib/vagrant-berkshelf/action/upload.rb +99 -0
- data/lib/vagrant-berkshelf/config.rb +87 -0
- data/lib/vagrant-berkshelf/env.rb +14 -0
- data/lib/vagrant-berkshelf/errors.rb +79 -0
- data/lib/vagrant-berkshelf/helpers.rb +180 -0
- data/lib/vagrant-berkshelf/plugin.rb +40 -0
- data/lib/vagrant-berkshelf/version.rb +5 -0
- data/spec/spec_helper.rb +1 -4
- data/spec/unit/vagrant-berkshelf/config_spec.rb +119 -0
- data/vagrant-berkshelf.gemspec +26 -14
- metadata +35 -52
- data/Thorfile +0 -59
- data/integration/Berksfile +0 -3
- data/integration/Gemfile +0 -10
- data/integration/Vagrantfile +0 -19
- data/lib/berkshelf/vagrant.rb +0 -68
- data/lib/berkshelf/vagrant/action.rb +0 -64
- data/lib/berkshelf/vagrant/action/clean.rb +0 -27
- data/lib/berkshelf/vagrant/action/configure_chef.rb +0 -27
- data/lib/berkshelf/vagrant/action/install.rb +0 -69
- data/lib/berkshelf/vagrant/action/load_shelf.rb +0 -52
- data/lib/berkshelf/vagrant/action/upload.rb +0 -53
- data/lib/berkshelf/vagrant/berks_config.rb +0 -48
- data/lib/berkshelf/vagrant/chef_config.rb +0 -88
- data/lib/berkshelf/vagrant/config.rb +0 -113
- data/lib/berkshelf/vagrant/env.rb +0 -16
- data/lib/berkshelf/vagrant/env_helpers.rb +0 -160
- data/lib/berkshelf/vagrant/errors.rb +0 -71
- data/lib/berkshelf/vagrant/plugin.rb +0 -41
- data/lib/berkshelf/vagrant/version.rb +0 -5
- data/spec/unit/berkshelf/vagrant/config_spec.rb +0 -97
- data/spec/unit/berkshelf/vagrant/errors_spec.rb +0 -12
- data/spec/unit/berkshelf/vagrant_spec.rb +0 -31
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'vagrant/action'
|
2
|
+
|
3
|
+
require_relative 'action/check'
|
4
|
+
require_relative 'action/clean'
|
5
|
+
require_relative 'action/install'
|
6
|
+
require_relative 'action/load'
|
7
|
+
require_relative 'action/share'
|
8
|
+
require_relative 'action/upload'
|
9
|
+
require_relative 'env'
|
10
|
+
|
11
|
+
module VagrantPlugins
|
12
|
+
module Berkshelf
|
13
|
+
class Plugin < Vagrant.plugin("2")
|
14
|
+
# Require a particular version of Vagrant
|
15
|
+
Vagrant.require_version("~> 1.5")
|
16
|
+
|
17
|
+
name "berkshelf"
|
18
|
+
description <<-DESC
|
19
|
+
Automatically synchronize cookbooks in the Berksfile to virtual machines
|
20
|
+
provisioned by Chef using Berkshelf.
|
21
|
+
DESC
|
22
|
+
|
23
|
+
[:machine_action_up, :machine_action_reload, :machine_action_provision].each do |action|
|
24
|
+
action_hook(:berkshelf_provision, action) do |hook|
|
25
|
+
hook.before(Vagrant::Action::Builtin::ConfigValidate, Action::Base.setup)
|
26
|
+
hook.before(Vagrant::Action::Builtin::Provision, Action::Base.provision)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
action_hook(:berkshelf_cleanup, :machine_action_destroy) do |hook|
|
31
|
+
hook.before(Vagrant::Action::Builtin::DestroyConfirm, Action::Base.clean)
|
32
|
+
end
|
33
|
+
|
34
|
+
config(:berkshelf) do
|
35
|
+
require_relative "config"
|
36
|
+
Config
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -3,9 +3,6 @@ require 'bundler/setup'
|
|
3
3
|
require 'spork'
|
4
4
|
|
5
5
|
Spork.prefork do
|
6
|
-
APP_ROOT = File.expand_path('../../', __FILE__)
|
7
|
-
ENV["BERKSHELF_PATH"] = File.join(APP_ROOT, 'spec', 'tmp', 'berkshelf')
|
8
|
-
|
9
6
|
require 'rspec'
|
10
7
|
|
11
8
|
RSpec.configure do |config|
|
@@ -18,5 +15,5 @@ Spork.prefork do
|
|
18
15
|
end
|
19
16
|
|
20
17
|
Spork.each_run do
|
21
|
-
require 'berkshelf
|
18
|
+
require 'vagrant-berkshelf'
|
22
19
|
end
|
@@ -0,0 +1,119 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe VagrantPlugins::Berkshelf::Config do
|
4
|
+
subject { described_class.new }
|
5
|
+
|
6
|
+
let(:machine) { double("machine") }
|
7
|
+
|
8
|
+
describe "#berksfile_path" do
|
9
|
+
it "defaults to nil" do
|
10
|
+
subject.finalize!
|
11
|
+
expect(subject.berksfile_path).to be(nil)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "sets the value if it exists" do
|
15
|
+
allow(File).to receive(:exist?)
|
16
|
+
.with("Berksfile")
|
17
|
+
.and_return(true)
|
18
|
+
subject.finalize!
|
19
|
+
expect(subject.berksfile_path).to eq("Berksfile")
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "#enabled" do
|
24
|
+
it "is true when there is a Berksfile present" do
|
25
|
+
allow(File).to receive(:exist?)
|
26
|
+
.with("Berksfile")
|
27
|
+
.and_return(true)
|
28
|
+
subject.finalize!
|
29
|
+
expect(subject.enabled).to be(true)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "is false when there is a Berksfile present but it is disabled" do
|
33
|
+
allow(File).to receive(:exist?)
|
34
|
+
.with("Berksfile")
|
35
|
+
.and_return(true)
|
36
|
+
subject.enabled = false
|
37
|
+
subject.finalize!
|
38
|
+
expect(subject.enabled).to be(false)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "is true when a berksfile_path is given" do
|
42
|
+
subject.berksfile_path = "Berksfile"
|
43
|
+
subject.finalize!
|
44
|
+
expect(subject.enabled).to be(true)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "is false when the berksfile_path is given but it is disabled" do
|
48
|
+
subject.berksfile_path = "Berksfile"
|
49
|
+
subject.enabled = false
|
50
|
+
subject.finalize!
|
51
|
+
expect(subject.enabled).to be(false)
|
52
|
+
end
|
53
|
+
|
54
|
+
it "defaults to false" do
|
55
|
+
allow(File).to receive(:exist?)
|
56
|
+
.with("Berksfile")
|
57
|
+
.and_return(false)
|
58
|
+
subject.finalize!
|
59
|
+
expect(subject.enabled).to be(false)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe "#only" do
|
64
|
+
it "defaults to an empty array" do
|
65
|
+
subject.finalize!
|
66
|
+
expect(subject.only).to be_a(Array)
|
67
|
+
expect(subject.only).to be_empty
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe "#except" do
|
72
|
+
it "defaults to an empty array" do
|
73
|
+
subject.finalize!
|
74
|
+
expect(subject.except).to be_a(Array)
|
75
|
+
expect(subject.except).to be_empty
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe "#args" do
|
80
|
+
it "defaults to an empty array" do
|
81
|
+
subject.finalize!
|
82
|
+
expect(subject.args).to be_a(Array)
|
83
|
+
expect(subject.args).to be_empty
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
describe "#validate" do
|
88
|
+
before do
|
89
|
+
allow(machine).to receive(:env)
|
90
|
+
.and_return(double("env",
|
91
|
+
root_path: "",
|
92
|
+
))
|
93
|
+
|
94
|
+
subject.berksfile_path = "Berksfile"
|
95
|
+
subject.enabled = true
|
96
|
+
subject.only = []
|
97
|
+
subject.except = []
|
98
|
+
subject.args = []
|
99
|
+
end
|
100
|
+
|
101
|
+
let(:result) { subject.validate(machine) }
|
102
|
+
let(:errors) { result["Berkshelf"] }
|
103
|
+
|
104
|
+
context "when the berksfile_path is nil" do
|
105
|
+
it "returns an error if enabled" do
|
106
|
+
subject.berksfile_path = ""
|
107
|
+
subject.finalize!
|
108
|
+
expect(errors).to include("berksfile_path must be set")
|
109
|
+
end
|
110
|
+
|
111
|
+
it "does not returns an error if disabled" do
|
112
|
+
subject.berksfile_path = ""
|
113
|
+
subject.enabled = false
|
114
|
+
subject.finalize!
|
115
|
+
expect(errors).to eq([])
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
data/vagrant-berkshelf.gemspec
CHANGED
@@ -1,30 +1,42 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
lib = File.expand_path('../lib', __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'berkshelf/
|
4
|
+
require 'vagrant-berkshelf/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name
|
8
|
-
spec.version
|
9
|
-
spec.authors
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
spec.
|
7
|
+
spec.name = 'vagrant-berkshelf'
|
8
|
+
spec.version = VagrantPlugins::Berkshelf::VERSION
|
9
|
+
spec.authors = [
|
10
|
+
'Jamie Winsor',
|
11
|
+
'Michael Ivey',
|
12
|
+
'Seth Vargo',
|
13
|
+
]
|
14
|
+
spec.email = [
|
15
|
+
'jamie@vialstudios.com',
|
16
|
+
'michael.ivey@riotgames.com',
|
17
|
+
'sethvargo@gmail.com',
|
18
|
+
]
|
19
|
+
spec.description = %q{A Vagrant plugin to add Berkshelf integration to the Chef provisioners}
|
20
|
+
spec.summary = spec.description
|
21
|
+
spec.homepage = 'https://berkshelf.com'
|
22
|
+
spec.license = 'Apache 2.0'
|
15
23
|
|
16
24
|
spec.files = `git ls-files`.split($/)
|
17
25
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
26
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
27
|
spec.require_paths = ['lib']
|
20
|
-
spec.required_ruby_version = '>= 1.9.
|
28
|
+
spec.required_ruby_version = '>= 1.9.3'
|
21
29
|
|
22
|
-
spec.post_install_message =
|
23
|
-
|
30
|
+
spec.post_install_message = <<-EOH
|
31
|
+
The Vagrant Berkshelf plugin requires Berkshelf from the Chef Development Kit.
|
32
|
+
You can download the latest version of the Chef Development Kit from:
|
24
33
|
|
25
|
-
|
34
|
+
https://downloads.getchef.com/chef-dk
|
35
|
+
|
36
|
+
Installing Berkshelf via other methods is not officially supported.
|
37
|
+
EOH
|
26
38
|
|
27
39
|
spec.add_development_dependency 'spork', '~> 0.9'
|
28
40
|
spec.add_development_dependency 'rspec', '~> 2.13'
|
29
|
-
spec.add_development_dependency '
|
41
|
+
spec.add_development_dependency 'rake'
|
30
42
|
end
|
metadata
CHANGED
@@ -1,30 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-berkshelf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jamie Winsor
|
8
8
|
- Michael Ivey
|
9
|
+
- Seth Vargo
|
9
10
|
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain: []
|
12
|
-
date: 2014-
|
13
|
+
date: 2014-11-13 00:00:00.000000000 Z
|
13
14
|
dependencies:
|
14
|
-
- !ruby/object:Gem::Dependency
|
15
|
-
name: buff-shell_out
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
requirements:
|
18
|
-
- - ">="
|
19
|
-
- !ruby/object:Gem::Version
|
20
|
-
version: '0'
|
21
|
-
type: :runtime
|
22
|
-
prerelease: false
|
23
|
-
version_requirements: !ruby/object:Gem::Requirement
|
24
|
-
requirements:
|
25
|
-
- - ">="
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
version: '0'
|
28
15
|
- !ruby/object:Gem::Dependency
|
29
16
|
name: spork
|
30
17
|
requirement: !ruby/object:Gem::Requirement
|
@@ -54,23 +41,24 @@ dependencies:
|
|
54
41
|
- !ruby/object:Gem::Version
|
55
42
|
version: '2.13'
|
56
43
|
- !ruby/object:Gem::Dependency
|
57
|
-
name:
|
44
|
+
name: rake
|
58
45
|
requirement: !ruby/object:Gem::Requirement
|
59
46
|
requirements:
|
60
|
-
- - "
|
47
|
+
- - ">="
|
61
48
|
- !ruby/object:Gem::Version
|
62
|
-
version: '0
|
49
|
+
version: '0'
|
63
50
|
type: :development
|
64
51
|
prerelease: false
|
65
52
|
version_requirements: !ruby/object:Gem::Requirement
|
66
53
|
requirements:
|
67
|
-
- - "
|
54
|
+
- - ">="
|
68
55
|
- !ruby/object:Gem::Version
|
69
|
-
version: '0
|
56
|
+
version: '0'
|
70
57
|
description: A Vagrant plugin to add Berkshelf integration to the Chef provisioners
|
71
58
|
email:
|
72
59
|
- jamie@vialstudios.com
|
73
60
|
- michael.ivey@riotgames.com
|
61
|
+
- sethvargo@gmail.com
|
74
62
|
executables: []
|
75
63
|
extensions: []
|
76
64
|
extra_rdoc_files: []
|
@@ -81,40 +69,37 @@ files:
|
|
81
69
|
- CONTRIBUTING.md
|
82
70
|
- Gemfile
|
83
71
|
- Guardfile
|
84
|
-
- LICENSE
|
72
|
+
- LICENSE
|
85
73
|
- README.md
|
86
|
-
-
|
87
|
-
- integration/Berksfile
|
88
|
-
- integration/Gemfile
|
89
|
-
- integration/Vagrantfile
|
90
|
-
- lib/berkshelf/vagrant.rb
|
91
|
-
- lib/berkshelf/vagrant/action.rb
|
92
|
-
- lib/berkshelf/vagrant/action/clean.rb
|
93
|
-
- lib/berkshelf/vagrant/action/configure_chef.rb
|
94
|
-
- lib/berkshelf/vagrant/action/install.rb
|
95
|
-
- lib/berkshelf/vagrant/action/load_shelf.rb
|
96
|
-
- lib/berkshelf/vagrant/action/upload.rb
|
97
|
-
- lib/berkshelf/vagrant/berks_config.rb
|
98
|
-
- lib/berkshelf/vagrant/chef_config.rb
|
99
|
-
- lib/berkshelf/vagrant/config.rb
|
100
|
-
- lib/berkshelf/vagrant/env.rb
|
101
|
-
- lib/berkshelf/vagrant/env_helpers.rb
|
102
|
-
- lib/berkshelf/vagrant/errors.rb
|
103
|
-
- lib/berkshelf/vagrant/plugin.rb
|
104
|
-
- lib/berkshelf/vagrant/version.rb
|
74
|
+
- Rakefile
|
105
75
|
- lib/vagrant-berkshelf.rb
|
76
|
+
- lib/vagrant-berkshelf/action/base.rb
|
77
|
+
- lib/vagrant-berkshelf/action/check.rb
|
78
|
+
- lib/vagrant-berkshelf/action/clean.rb
|
79
|
+
- lib/vagrant-berkshelf/action/install.rb
|
80
|
+
- lib/vagrant-berkshelf/action/load.rb
|
81
|
+
- lib/vagrant-berkshelf/action/share.rb
|
82
|
+
- lib/vagrant-berkshelf/action/upload.rb
|
83
|
+
- lib/vagrant-berkshelf/config.rb
|
84
|
+
- lib/vagrant-berkshelf/env.rb
|
85
|
+
- lib/vagrant-berkshelf/errors.rb
|
86
|
+
- lib/vagrant-berkshelf/helpers.rb
|
87
|
+
- lib/vagrant-berkshelf/plugin.rb
|
88
|
+
- lib/vagrant-berkshelf/version.rb
|
106
89
|
- spec/spec_helper.rb
|
107
|
-
- spec/unit/berkshelf/
|
108
|
-
- spec/unit/berkshelf/vagrant/errors_spec.rb
|
109
|
-
- spec/unit/berkshelf/vagrant_spec.rb
|
90
|
+
- spec/unit/vagrant-berkshelf/config_spec.rb
|
110
91
|
- vagrant-berkshelf.gemspec
|
111
|
-
homepage:
|
92
|
+
homepage: https://berkshelf.com
|
112
93
|
licenses:
|
113
94
|
- Apache 2.0
|
114
95
|
metadata: {}
|
115
|
-
post_install_message:
|
116
|
-
|
117
|
-
|
96
|
+
post_install_message: |
|
97
|
+
The Vagrant Berkshelf plugin requires Berkshelf from the Chef Development Kit.
|
98
|
+
You can download the latest version of the Chef Development Kit from:
|
99
|
+
|
100
|
+
https://downloads.getchef.com/chef-dk
|
101
|
+
|
102
|
+
Installing Berkshelf via other methods is not officially supported.
|
118
103
|
rdoc_options: []
|
119
104
|
require_paths:
|
120
105
|
- lib
|
@@ -122,7 +107,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
122
107
|
requirements:
|
123
108
|
- - ">="
|
124
109
|
- !ruby/object:Gem::Version
|
125
|
-
version: 1.9.
|
110
|
+
version: 1.9.3
|
126
111
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
112
|
requirements:
|
128
113
|
- - ">="
|
@@ -136,7 +121,5 @@ specification_version: 4
|
|
136
121
|
summary: A Vagrant plugin to add Berkshelf integration to the Chef provisioners
|
137
122
|
test_files:
|
138
123
|
- spec/spec_helper.rb
|
139
|
-
- spec/unit/berkshelf/
|
140
|
-
- spec/unit/berkshelf/vagrant/errors_spec.rb
|
141
|
-
- spec/unit/berkshelf/vagrant_spec.rb
|
124
|
+
- spec/unit/vagrant-berkshelf/config_spec.rb
|
142
125
|
has_rdoc:
|
data/Thorfile
DELETED
@@ -1,59 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
$:.push File.expand_path("../lib", __FILE__)
|
3
|
-
|
4
|
-
require 'bundler'
|
5
|
-
require 'bundler/setup'
|
6
|
-
require 'thor/rake_compat'
|
7
|
-
require 'berkshelf/vagrant'
|
8
|
-
|
9
|
-
GEM_PKG = "vagrant-berkshelf-#{Berkshelf::Vagrant::VERSION}.gem".freeze
|
10
|
-
|
11
|
-
class Gem < Thor
|
12
|
-
include Thor::RakeCompat
|
13
|
-
Bundler::GemHelper.install_tasks
|
14
|
-
|
15
|
-
desc "build", "Build #{GEM_PKG} into the pkg directory"
|
16
|
-
def build
|
17
|
-
Rake::Task["build"].execute
|
18
|
-
end
|
19
|
-
|
20
|
-
desc "release", "Create tag v#{Berkshelf::Vagrant::VERSION} and build and push #{GEM_PKG} to Rubygems"
|
21
|
-
def release
|
22
|
-
Rake::Task["release"].execute
|
23
|
-
end
|
24
|
-
|
25
|
-
desc "install", "Build and install #{GEM_PKG} into system gems"
|
26
|
-
def install
|
27
|
-
Rake::Task["install"].execute
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
class Spec < Thor
|
32
|
-
include Thor::Actions
|
33
|
-
default_task :unit
|
34
|
-
|
35
|
-
desc "plug", "Install #{GEM_PKG} into vagrant"
|
36
|
-
def plug
|
37
|
-
build
|
38
|
-
run "vagrant plugin install pkg/#{GEM_PKG}"
|
39
|
-
end
|
40
|
-
|
41
|
-
desc "ci", "Run all possible tests on Travis-CI"
|
42
|
-
def ci
|
43
|
-
ENV['CI'] = 'true' # Travis-CI also sets this, but set it here for local testing
|
44
|
-
invoke(:unit)
|
45
|
-
end
|
46
|
-
|
47
|
-
desc "unit", "Run unit tests"
|
48
|
-
def unit
|
49
|
-
unless run_unit
|
50
|
-
exit 1
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
no_tasks do
|
55
|
-
def run_unit(*flags)
|
56
|
-
run "rspec --color --format=documentation #{flags.join(' ')} spec"
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|