guard-strainer 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/.travis.yml +3 -0
- data/CONTRIBUTING.md +29 -0
- data/Gemfile +12 -0
- data/Guardfile +6 -0
- data/LICENSE.txt +22 -0
- data/README.md +51 -0
- data/Rakefile +34 -0
- data/guard-strainer.gemspec +25 -0
- data/lib/guard/strainer.rb +112 -0
- data/lib/guard/strainer/runner.rb +48 -0
- data/lib/guard/strainer/templates/Guardfile +7 -0
- data/lib/guard/strainer/version.rb +5 -0
- data/spec/fixtures/cookbooks/git/.gitignore +14 -0
- data/spec/fixtures/cookbooks/git/.kitchen.yml +46 -0
- data/spec/fixtures/cookbooks/git/Berksfile +8 -0
- data/spec/fixtures/cookbooks/git/CHANGELOG.md +76 -0
- data/spec/fixtures/cookbooks/git/CONTRIBUTING +29 -0
- data/spec/fixtures/cookbooks/git/Gemfile +3 -0
- data/spec/fixtures/cookbooks/git/LICENSE +201 -0
- data/spec/fixtures/cookbooks/git/README.md +115 -0
- data/spec/fixtures/cookbooks/git/TESTING.md +25 -0
- data/spec/fixtures/cookbooks/git/attributes/default.rb +40 -0
- data/spec/fixtures/cookbooks/git/metadata.rb +35 -0
- data/spec/fixtures/cookbooks/git/recipes/default.rb +46 -0
- data/spec/fixtures/cookbooks/git/recipes/server.rb +57 -0
- data/spec/fixtures/cookbooks/git/recipes/source.rb +49 -0
- data/spec/fixtures/cookbooks/git/recipes/windows.rb +32 -0
- data/spec/fixtures/cookbooks/git/templates/default/git-xinetd.d.erb +10 -0
- data/spec/fixtures/cookbooks/git/templates/default/sv-git-daemon-log-run.erb +2 -0
- data/spec/fixtures/cookbooks/git/templates/default/sv-git-daemon-run.erb +3 -0
- data/spec/fixtures/cookbooks/sudo/.chef/knife.rb +1 -0
- data/spec/fixtures/cookbooks/sudo/.gitignore +14 -0
- data/spec/fixtures/cookbooks/sudo/.kitchen.yml +35 -0
- data/spec/fixtures/cookbooks/sudo/.rspec +2 -0
- data/spec/fixtures/cookbooks/sudo/Berksfile +8 -0
- data/spec/fixtures/cookbooks/sudo/CHANGELOG.md +63 -0
- data/spec/fixtures/cookbooks/sudo/CONTRIBUTING.md +257 -0
- data/spec/fixtures/cookbooks/sudo/Gemfile +12 -0
- data/spec/fixtures/cookbooks/sudo/LICENSE +201 -0
- data/spec/fixtures/cookbooks/sudo/README.md +229 -0
- data/spec/fixtures/cookbooks/sudo/TESTING.md +25 -0
- data/spec/fixtures/cookbooks/sudo/attributes/default.rb +25 -0
- data/spec/fixtures/cookbooks/sudo/files/default/README +17 -0
- data/spec/fixtures/cookbooks/sudo/metadata.rb +46 -0
- data/spec/fixtures/cookbooks/sudo/providers/default.rb +135 -0
- data/spec/fixtures/cookbooks/sudo/recipes/default.rb +54 -0
- data/spec/fixtures/cookbooks/sudo/resources/default.rb +38 -0
- data/spec/fixtures/cookbooks/sudo/templates/default/sudoer.erb +6 -0
- data/spec/fixtures/cookbooks/sudo/templates/default/sudoers.erb +26 -0
- data/spec/fixtures/cookbooks/tmux/.chef/knife.rb +2 -0
- data/spec/fixtures/cookbooks/tmux/.gitignore +1 -0
- data/spec/fixtures/cookbooks/tmux/.travis.yml +7 -0
- data/spec/fixtures/cookbooks/tmux/CHANGELOG.md +39 -0
- data/spec/fixtures/cookbooks/tmux/CONTRIBUTING.md +257 -0
- data/spec/fixtures/cookbooks/tmux/Gemfile +6 -0
- data/spec/fixtures/cookbooks/tmux/LICENSE +201 -0
- data/spec/fixtures/cookbooks/tmux/README.md +52 -0
- data/spec/fixtures/cookbooks/tmux/Rakefile +34 -0
- data/spec/fixtures/cookbooks/tmux/attributes/default.rb +15 -0
- data/spec/fixtures/cookbooks/tmux/metadata.rb +7 -0
- data/spec/fixtures/cookbooks/tmux/recipes/default.rb +33 -0
- data/spec/fixtures/cookbooks/tmux/recipes/package.rb +5 -0
- data/spec/fixtures/cookbooks/tmux/recipes/source.rb +45 -0
- data/spec/fixtures/cookbooks/tmux/templates/default/tmux.conf.erb +35 -0
- data/spec/fixtures/cookbooks/tmux/test/kitchen/Kitchenfile +6 -0
- data/spec/guard/strainer/runner_spec.rb +66 -0
- data/spec/guard/strainer_spec.rb +114 -0
- data/spec/spec_helper.rb +24 -0
- metadata +213 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 2e578a855d122750882a758fd89ba735f6cfa401
|
4
|
+
data.tar.gz: 2449a8028b72e23a9e967f812a52171514ceea4c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 45b53d473f97c9c2979ee3726f9ad18cff7028dfe697d9eace2db738ffd0aba0157d98b1b14d8d6f68f7869ce502c88bb8372a8808da5f6648420bc9a889491e
|
7
|
+
data.tar.gz: cc94868fc238f746e876beebe1e7bee8b89a2832ea700a68a9b5914de6f936c371a9538d76a8589e2f22fbff8845d116b63bbffdfcd8fc0feb5d99c33cdd1d95
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# Contributing to Guard::Strainer
|
2
|
+
|
3
|
+
## File an issue
|
4
|
+
|
5
|
+
You can report bugs and feature requests to [GitHub Issues](https://github.com/wingrunr21/guard-strainer/issues).
|
6
|
+
|
7
|
+
Try to figure out where the issue belongs to: Is it an issue with Guard::Strainer itself or with Guard?
|
8
|
+
|
9
|
+
When you file a bug, please try to follow these simple rules if applicable:
|
10
|
+
|
11
|
+
* Make sure you've read the README carefully.
|
12
|
+
* Make sure you run Guard with `bundle exec` first.
|
13
|
+
* Add debug information to the issue by running Guard with the `--debug` option.
|
14
|
+
* Add your `Guardfile` and `Gemfile` to the issue.
|
15
|
+
* Make sure that the issue is reproducible with your description.
|
16
|
+
|
17
|
+
**It's most likely that your bug gets resolved faster if you provide as much information as possible!**
|
18
|
+
|
19
|
+
Development
|
20
|
+
-----------
|
21
|
+
|
22
|
+
* Source hosted at [GitHub](https://github.com/wingrunr21/guard-strainer).
|
23
|
+
|
24
|
+
Pull requests are welcome! Please try to follow these rules for contributions:
|
25
|
+
|
26
|
+
* Please create a topic branch for every unique change
|
27
|
+
* Please make sure you create tests for your new features
|
28
|
+
* Please update the README as applicable
|
29
|
+
* Please **do not change** the version number
|
data/Gemfile
ADDED
data/Guardfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Stafford Brunk
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
# Guard::Strainer
|
2
|
+
[![Build Status](https://travis-ci.org/wingrunr21/guard-strainer.png)](https://travis-ci.org/wingrunr21/guard-strainer) [![Gem Version](https://badge.fury.io/rb/guard-strainer.png)](http://badge.fury.io/rb/guard-strainer)
|
3
|
+
|
4
|
+
```guard-strainer``` will automatically execute a Strainerfile for a watched chef-repo or cookbook when it detects changes
|
5
|
+
|
6
|
+
## Requirements
|
7
|
+
* [strainer](https://github.com/customink/strainer) v3.2.1 or later
|
8
|
+
|
9
|
+
## Installation
|
10
|
+
|
11
|
+
Add to your chef-repo or cookbook's Gemfile:
|
12
|
+
|
13
|
+
gem 'guard-strainer'
|
14
|
+
|
15
|
+
Or install the gem (make sure you also have [Guard](https://github.com/guard/guard):
|
16
|
+
|
17
|
+
$ gem install guard-strainer
|
18
|
+
|
19
|
+
Finally add the guard-strainer definition to your Guardfile:
|
20
|
+
|
21
|
+
guard init strainer
|
22
|
+
|
23
|
+
## Usage
|
24
|
+
Please read the [Guard usage doc](http://github.com/guard/guard#readme)
|
25
|
+
|
26
|
+
## Options
|
27
|
+
|
28
|
+
```ruby
|
29
|
+
:standalone => true # set to true for cookbook operation. Default false.
|
30
|
+
:all_on_pass => false # set to true to run all Strainerfiles on pass. Default true.
|
31
|
+
:all_on_start => false # set to true to run all Strainerfiles on start. Default true.
|
32
|
+
:fail_fast => false # set to true to fail immediately upon any non-zero exit code. Default true.
|
33
|
+
:except => ['foodcritic'] # labels to ignore in the Strainerfiles
|
34
|
+
:only => ['foodcritic'] # labels to include in the Strainerfiles
|
35
|
+
:cookbooks_path => '/path/to/cookbooks' # path to the cookbook store
|
36
|
+
:config => "/path/to/client.rb" # path to the knife.rb/client.rb config
|
37
|
+
:debug => true # set to true to enable debugging log output. Default false.
|
38
|
+
:color => false # set to false to disable colored output. Default is true
|
39
|
+
```
|
40
|
+
|
41
|
+
## Development
|
42
|
+
|
43
|
+
Pull requests are welcome! Please try to follow these rules for contributions:
|
44
|
+
|
45
|
+
* Please create a topic branch for every unique change
|
46
|
+
* Please make sure you create tests for your new features
|
47
|
+
* Please update the README as applicable
|
48
|
+
* Please **do not change** the version number
|
49
|
+
|
50
|
+
## Author
|
51
|
+
[Stafford Brunk](https://github.com/wingrunr21)
|
data/Rakefile
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
Bundler::GemHelper.install_tasks
|
4
|
+
require 'rspec/core/rake_task'
|
5
|
+
|
6
|
+
# Rake tasks from https://github.com/mojombo/rakegem/blob/master/Rakefile
|
7
|
+
|
8
|
+
# Helper Functions
|
9
|
+
def name
|
10
|
+
@name ||= Dir['*.gemspec'].first.split('.').first.gsub('-', '/')
|
11
|
+
end
|
12
|
+
|
13
|
+
def version
|
14
|
+
line = File.read("lib/#{name}/version.rb")[/^\s*VERSION\s*=\s*.*/]
|
15
|
+
line.match(/.*VERSION\s*=\s*['"](.*)['"]/)[1]
|
16
|
+
end
|
17
|
+
|
18
|
+
# Standard tasks
|
19
|
+
RSpec::Core::RakeTask.new(:spec)
|
20
|
+
task :test => :spec
|
21
|
+
task :default => :spec
|
22
|
+
|
23
|
+
require 'rdoc/task'
|
24
|
+
Rake::RDocTask.new do |rdoc|
|
25
|
+
rdoc.rdoc_dir = 'rdoc'
|
26
|
+
rdoc.title = "#{name} #{version}"
|
27
|
+
rdoc.rdoc_files.include('README*')
|
28
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
29
|
+
end
|
30
|
+
|
31
|
+
desc "Open an pry session preloaded with this library"
|
32
|
+
task :console do
|
33
|
+
sh "pry -Ilib -r #{name}.rb"
|
34
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'guard/strainer/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'guard-strainer'
|
8
|
+
spec.version = Guard::StrainerVersion::VERSION
|
9
|
+
spec.authors = ['Stafford Brunk']
|
10
|
+
spec.email = ['stafford.brunk@gmail.com']
|
11
|
+
spec.description = %q{Watch for changes in your chef-repo or cookbook and automatically run Strainer}
|
12
|
+
spec.summary = %q{guard-strainer will automatically execute a Strainerfile for a watched chef-repo or cookbook when it detects changes}
|
13
|
+
spec.homepage = 'https://github.com/wingrunr21/guard-strainer'
|
14
|
+
spec.license = 'MIT'
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ['lib']
|
20
|
+
|
21
|
+
spec.add_dependency 'guard', '>= 1.8.0'
|
22
|
+
spec.add_dependency 'strainer', '>= 3.2.1'
|
23
|
+
|
24
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
25
|
+
end
|
@@ -0,0 +1,112 @@
|
|
1
|
+
require 'guard'
|
2
|
+
require 'guard/guard'
|
3
|
+
|
4
|
+
module Guard
|
5
|
+
class Strainer < Guard
|
6
|
+
require 'strainer'
|
7
|
+
require 'guard/strainer/runner'
|
8
|
+
|
9
|
+
# Initialize guard-strainer.
|
10
|
+
#
|
11
|
+
# @param [Array<Guard::Watcher>] watchers the Guard plugin file watchers
|
12
|
+
# @param [Hash] options the custom Guard plugin options
|
13
|
+
# @option options [Boolean] :standalone set to true for cookbook operation. Default false.
|
14
|
+
# @option options [Boolean] :all_on_pass set to true to run all Strainerfiles on pass. Default true.
|
15
|
+
# @option options [Boolean] :all_on_start set to true to run all Strainerfiles on start. Default true.
|
16
|
+
# @option options [Boolean] :fail_fast set to true to fail immediately upon any non-zero exit code. Default true.
|
17
|
+
# @option options [Array<String>] :except labels to ignore in the Strainerfiles
|
18
|
+
# @option options [Array<String>] :only labels to include in the Strainerfiles
|
19
|
+
# @option options [String] :cookbooks_path path to the cookbook store
|
20
|
+
# @option options [String] :config path to the knife.rb/client.rb config
|
21
|
+
# @option options [Boolean] :debug set to true to enable debugging log output. Default false.
|
22
|
+
# @option options [Boolean] :color set to false to disable colored output. Default is true
|
23
|
+
#
|
24
|
+
def initialize(watchers = [], options = {})
|
25
|
+
# Override the config file if it's specified
|
26
|
+
::Berkshelf::Chef::Config.path = options.delete(:config) if options[:config]
|
27
|
+
|
28
|
+
# Set the Strainer path if it's specified
|
29
|
+
::Strainer.sandbox_path = options.delete(:sandbox) if options[:sandbox]
|
30
|
+
|
31
|
+
# Use Strainer::Shell as the primary output shell
|
32
|
+
::Thor::Base.shell = ::Strainer::Shell
|
33
|
+
|
34
|
+
# Set whether color output is enabled
|
35
|
+
::Thor::Base.shell.enable_colors = false unless options.delete(:color)
|
36
|
+
|
37
|
+
# Use debugging output if asked
|
38
|
+
$DEBUG = true if options.delete(:debug)
|
39
|
+
|
40
|
+
super
|
41
|
+
|
42
|
+
@options = {
|
43
|
+
:standalone => false,
|
44
|
+
:all_on_start => true,
|
45
|
+
:all_on_pass => true,
|
46
|
+
:fail_fast => true
|
47
|
+
}.merge(options)
|
48
|
+
|
49
|
+
@runner = Runner.new(@options)
|
50
|
+
end
|
51
|
+
|
52
|
+
def start
|
53
|
+
UI.info "Guard::Strainer is running"
|
54
|
+
run_all if @options[:all_on_start]
|
55
|
+
end
|
56
|
+
|
57
|
+
# Called when just `enter` is pressed
|
58
|
+
# This method should be principally used for long action like running all specs/tests/...
|
59
|
+
#
|
60
|
+
# @raise [:task_has_failed] when run_all has failed
|
61
|
+
# @return [Object] the task result
|
62
|
+
#
|
63
|
+
def run_all
|
64
|
+
passed = @runner.run_all!
|
65
|
+
|
66
|
+
throw :task_has_failed unless passed
|
67
|
+
end
|
68
|
+
|
69
|
+
# Common run definition used in run_on_additions,
|
70
|
+
# run_on_modifications, and run_on_removals
|
71
|
+
#
|
72
|
+
# @param [Array<String>] paths to Strain
|
73
|
+
# @raise [:task_has_failed] when run has failed
|
74
|
+
# @return [Object] the task result
|
75
|
+
def run(paths)
|
76
|
+
passed = @runner.run!(paths)
|
77
|
+
|
78
|
+
throw :task_has_failed unless passed
|
79
|
+
@runner.run_all! if @options[:all_on_pass]
|
80
|
+
end
|
81
|
+
|
82
|
+
# Called on file(s) additions that the Guard plugin watches.
|
83
|
+
#
|
84
|
+
# @param [Array<String>] paths the changes files or paths
|
85
|
+
# @raise [:task_has_failed] when run_on_additions has failed
|
86
|
+
# @return [Object] the task result
|
87
|
+
#
|
88
|
+
def run_on_additions(paths)
|
89
|
+
run(paths)
|
90
|
+
end
|
91
|
+
|
92
|
+
# Called on file(s) modifications that the Guard plugin watches.
|
93
|
+
#
|
94
|
+
# @param [Array<String>] paths the changes files or paths
|
95
|
+
# @raise [:task_has_failed] when run_on_modifications has failed
|
96
|
+
# @return [Object] the task result
|
97
|
+
#
|
98
|
+
def run_on_modifications(paths)
|
99
|
+
run(paths)
|
100
|
+
end
|
101
|
+
|
102
|
+
# Called on file(s) removals that the Guard plugin watches.
|
103
|
+
#
|
104
|
+
# @param [Array<String>] paths the changes files or paths
|
105
|
+
# @raise [:task_has_failed] when run_on_removals has failed
|
106
|
+
# @return [Object] the task result
|
107
|
+
#
|
108
|
+
def run_on_removals(paths)
|
109
|
+
run(paths)
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module Guard
|
2
|
+
class Strainer
|
3
|
+
class Runner
|
4
|
+
attr_reader :cabinet
|
5
|
+
|
6
|
+
def initialize(options)
|
7
|
+
@options = options
|
8
|
+
@cabinet = {}
|
9
|
+
end
|
10
|
+
|
11
|
+
def run!(paths = [])
|
12
|
+
cookbooks = paths.map{|path| find_cookbook_name(path)}
|
13
|
+
runner = runner_for_cookbooks(cookbooks)
|
14
|
+
|
15
|
+
UI.info "Straining: #{cookbooks.join(',')}"
|
16
|
+
runner.run!
|
17
|
+
end
|
18
|
+
|
19
|
+
def run_all!
|
20
|
+
paths = Dir[File.join('**', 'metadata.rb')].sort
|
21
|
+
run!(paths)
|
22
|
+
end
|
23
|
+
|
24
|
+
protected
|
25
|
+
def find_cookbook_name(path)
|
26
|
+
current_path = Pathname.new(File.dirname(path))
|
27
|
+
cookbook = nil
|
28
|
+
|
29
|
+
until current_path == ::Guard::Dsl.options["guardfile_path"] do
|
30
|
+
if File.exist?(File.join(current_path, 'metadata.rb'))
|
31
|
+
cookbook = current_path.basename
|
32
|
+
break
|
33
|
+
else
|
34
|
+
current_path = current_path.parent
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
cookbook
|
39
|
+
end
|
40
|
+
|
41
|
+
def runner_for_cookbooks(cookbooks)
|
42
|
+
@cabinet.fetch(cookbooks) do |books|
|
43
|
+
::Strainer::Runner.new(books, @options.merge({strainer_file: File.join(File.dirname(::Guard::Dsl.options["guardfile_path"]), ::Strainer::Strainerfile::DEFAULT_FILENAME)}))
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
---
|
2
|
+
driver_plugin: vagrant
|
3
|
+
driver_config:
|
4
|
+
require_chef_omnibus: true
|
5
|
+
|
6
|
+
platforms:
|
7
|
+
- name: ubuntu-12.04
|
8
|
+
driver_config:
|
9
|
+
box: opscode-ubuntu-12.04
|
10
|
+
box_url: https://opscode-vm-bento.s3.amazonaws.com/vagrant/opscode_ubuntu-12.04_provisionerless.box
|
11
|
+
run_list:
|
12
|
+
- recipe[apt]
|
13
|
+
|
14
|
+
- name: ubuntu-10.04
|
15
|
+
driver_config:
|
16
|
+
box: opscode-ubuntu-10.04
|
17
|
+
box_url: https://opscode-vm-bento.s3.amazonaws.com/vagrant/opscode_ubuntu-10.04_provisionerless.box
|
18
|
+
run_list:
|
19
|
+
- recipe[apt]
|
20
|
+
|
21
|
+
- name: centos-6.4
|
22
|
+
driver_config:
|
23
|
+
box: opscode-centos-6.4
|
24
|
+
box_url: https://opscode-vm-bento.s3.amazonaws.com/vagrant/opscode_centos-6.4_provisionerless.box
|
25
|
+
|
26
|
+
- name: centos-5.9
|
27
|
+
driver_config:
|
28
|
+
box: opscode-centos-5.9
|
29
|
+
box_url: https://opscode-vm-bento.s3.amazonaws.com/vagrant/opscode_centos-5.9_provisionerless.box
|
30
|
+
|
31
|
+
suites:
|
32
|
+
- name: default
|
33
|
+
run_list:
|
34
|
+
- recipe[git]
|
35
|
+
attributes: {}
|
36
|
+
|
37
|
+
- name: source
|
38
|
+
excludes: ["ubuntu-12.04", "ubuntu-10.04"]
|
39
|
+
run_list:
|
40
|
+
- recipe[git::source]
|
41
|
+
attributes: {}
|
42
|
+
|
43
|
+
- name: server
|
44
|
+
run_list:
|
45
|
+
- recipe[git::server]
|
46
|
+
attributes: {}
|