vagrant-pirate 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.coveralls.yml +1 -0
- data/.gitignore +4 -0
- data/.travis.yml +5 -0
- data/Gemfile +11 -0
- data/LICENSE +477 -0
- data/Rakefile +3 -0
- data/Readme.md +96 -0
- data/features/help.feature +43 -0
- data/features/ship.feature +28 -0
- data/features/support/env.rb +9 -0
- data/lib/vagrant-pirate/command/pirate.rb +69 -0
- data/lib/vagrant-pirate/command/pirate_ship.rb +84 -0
- data/lib/vagrant-pirate/command/pirate_update.rb +77 -0
- data/lib/vagrant-pirate/config/pirate.rb +32 -0
- data/lib/vagrant-pirate/errors.rb +17 -0
- data/lib/vagrant-pirate/plugin.rb +33 -0
- data/lib/vagrant-pirate/vagrant-pirate.rb +92 -0
- data/lib/vagrant-pirate/version.rb +3 -0
- data/lib/vagrant-pirate.rb +17 -0
- data/locales/en.yml +32 -0
- data/tasks/cucumber.rake +11 -0
- data/templates/Vagrantfile.erb +16 -0
- data/templates/default.yaml.erb +39 -0
- data/templates/local.yaml.erb +6 -0
- data/vagrant-pirate.gemspec +29 -0
- metadata +139 -0
@@ -0,0 +1,28 @@
|
|
1
|
+
Feature: Init command
|
2
|
+
|
3
|
+
In order to start using a YAML-based Vagrant project
|
4
|
+
As a user using vagrant-pirate
|
5
|
+
I want to initialize a new project
|
6
|
+
|
7
|
+
Scenario: Running 'vagrant pirate ship'
|
8
|
+
Given a directory named "test"
|
9
|
+
And I cd to "test"
|
10
|
+
When I successfully run `vagrant pirate ship`
|
11
|
+
Then the following directories should exist:
|
12
|
+
| local.d |
|
13
|
+
| available.d |
|
14
|
+
| enabled.d |
|
15
|
+
And the following files should exist:
|
16
|
+
| Vagrantfile |
|
17
|
+
| available.d/default.yaml |
|
18
|
+
| enabled.d/vm1.yaml |
|
19
|
+
| enabled.d/vm2.yaml |
|
20
|
+
| local.d/vm1.yaml |
|
21
|
+
| local.d/vm2.yaml |
|
22
|
+
And the output should contain "A `Vagrantfile` has been placed in this directory, a default Yaml VM config file"
|
23
|
+
And the output should contain "has been placed in 'available.d', and a symlink to it, placed in 'enabled.d'."
|
24
|
+
And the output should contain "Finally, a file to contain local overrides was placed in 'local.d'. Unlike a"
|
25
|
+
And the output should contain "regular Vagrantfile, this one parses and applies the configuration in the Yaml"
|
26
|
+
And the output should contain "files it finds in 'enabled.d'. You are now ready to `vagrant up` your first"
|
27
|
+
And the output should contain "virtual environment! Please read the comments in the default Yaml VM config"
|
28
|
+
And the output should contain "file to see how it works."
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# Since simplecov need to run in the same process as the code being annalized,
|
2
|
+
# we run initialize simplecov at the very beginning of our plugin. To only do
|
3
|
+
# so during tests, we wrap it in a check for an environment variable.
|
4
|
+
ENV['COVERAGE'] = 'true'
|
5
|
+
require 'coveralls'
|
6
|
+
# Since simplecov is running under a separate process, we need to retrieve the
|
7
|
+
# results afterwards.
|
8
|
+
Coveralls.wear_merged!
|
9
|
+
require 'aruba/cucumber'
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
|
3
|
+
module VagrantPlugins
|
4
|
+
module VagrantPirate
|
5
|
+
module Command
|
6
|
+
class Pirate < Vagrant.plugin("2", :command)
|
7
|
+
def self.synopsis
|
8
|
+
"Manage YAML-based projects."
|
9
|
+
end
|
10
|
+
|
11
|
+
def initialize(argv, env)
|
12
|
+
super
|
13
|
+
|
14
|
+
@main_args, @sub_command, @sub_args = split_main_and_subcommand(argv)
|
15
|
+
|
16
|
+
@subcommands = Vagrant::Registry.new
|
17
|
+
@subcommands.register(:ship) do
|
18
|
+
require File.expand_path("../pirate_ship", __FILE__)
|
19
|
+
PirateShip
|
20
|
+
end
|
21
|
+
|
22
|
+
@subcommands.register(:update) do
|
23
|
+
require File.expand_path("../pirate_update", __FILE__)
|
24
|
+
PirateUpdate
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def execute
|
29
|
+
if @main_args.include?("-h") || @main_args.include?("--help")
|
30
|
+
# Print the help for all the box commands.
|
31
|
+
return help
|
32
|
+
end
|
33
|
+
|
34
|
+
# If we reached this far then we must have a subcommand. If not,
|
35
|
+
# then we also just print the help and exit.
|
36
|
+
command_class = @subcommands.get(@sub_command.to_sym) if @sub_command
|
37
|
+
return help if !command_class || !@sub_command
|
38
|
+
@logger.debug("Invoking command class: #{command_class} #{@sub_args.inspect}")
|
39
|
+
|
40
|
+
# Initialize and execute the command class
|
41
|
+
command_class.new(@sub_args, @env).execute
|
42
|
+
end
|
43
|
+
|
44
|
+
# Prints the help out for this command
|
45
|
+
def help
|
46
|
+
opts = OptionParser.new do |opts|
|
47
|
+
opts.banner = "Usage: vagrant pirate <command> [<args>]"
|
48
|
+
opts.separator ""
|
49
|
+
opts.separator "Available subcommands:"
|
50
|
+
|
51
|
+
# Add the available subcommands as separators in order to print them
|
52
|
+
# out as well.
|
53
|
+
keys = []
|
54
|
+
@subcommands.each { |key, value| keys << key.to_s }
|
55
|
+
|
56
|
+
keys.sort.each do |key|
|
57
|
+
opts.separator " #{key}"
|
58
|
+
end
|
59
|
+
|
60
|
+
opts.separator ""
|
61
|
+
opts.separator "For help on any individual command run `vagrant pirate COMMAND -h`"
|
62
|
+
end
|
63
|
+
|
64
|
+
@env.ui.info(opts.help, :prefix => false)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
require 'vagrant/util/template_renderer'
|
3
|
+
|
4
|
+
module VagrantPlugins
|
5
|
+
module VagrantPirate
|
6
|
+
module Command
|
7
|
+
class PirateShip < Vagrant.plugin("2", :command)
|
8
|
+
|
9
|
+
def self.synopsis
|
10
|
+
"Initializes a new Vagrant environment by creating a Vagrantfile and YAML config files."
|
11
|
+
end
|
12
|
+
def execute
|
13
|
+
options = {}
|
14
|
+
|
15
|
+
opts = OptionParser.new do |opts|
|
16
|
+
opts.banner = "Usage: vagrant pirate ship [box-name] [box-url]"
|
17
|
+
end
|
18
|
+
|
19
|
+
# Parse the options
|
20
|
+
argv = parse_options(opts)
|
21
|
+
return if !argv
|
22
|
+
|
23
|
+
create_vagrantfile
|
24
|
+
create_directories
|
25
|
+
create_default_yaml(argv[0], argv[1])
|
26
|
+
create_vm_yaml('vm1')
|
27
|
+
create_vm_yaml('vm2')
|
28
|
+
|
29
|
+
@env.ui.info(I18n.t(
|
30
|
+
"vagrant.plugins.pirate.commands.ship.success",
|
31
|
+
avail_dir: 'available.d',
|
32
|
+
enabled_dir: 'enabled.d',
|
33
|
+
local_dir: 'local.d'
|
34
|
+
), :prefix => false)
|
35
|
+
# Success, exit status 0
|
36
|
+
0
|
37
|
+
end
|
38
|
+
|
39
|
+
def create_vagrantfile
|
40
|
+
save_path = @env.cwd.join("Vagrantfile")
|
41
|
+
raise Errors::VagrantfileExistsError if save_path.exist?
|
42
|
+
|
43
|
+
template_path = ::VagrantPirate.source_root.join("templates/Vagrantfile")
|
44
|
+
contents = Vagrant::Util::TemplateRenderer.render(template_path)
|
45
|
+
save_path.open("w+") do |f|
|
46
|
+
f.write(contents)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def create_directories
|
51
|
+
Dir.mkdir('available.d')
|
52
|
+
Dir.mkdir('enabled.d')
|
53
|
+
Dir.mkdir('local.d')
|
54
|
+
end
|
55
|
+
|
56
|
+
def create_default_yaml(box_name=nil, box_url=nil)
|
57
|
+
save_path = @env.cwd.join("available.d/default.yaml")
|
58
|
+
raise Errors::VagrantfileExistsError if save_path.exist?
|
59
|
+
|
60
|
+
template_path = ::VagrantPirate.source_root.join("templates/default.yaml")
|
61
|
+
contents = Vagrant::Util::TemplateRenderer.render(template_path,
|
62
|
+
:box_name => box_name,
|
63
|
+
:box_url => box_url)
|
64
|
+
save_path.open("w+") do |f|
|
65
|
+
f.write(contents)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def create_vm_yaml(vm_name)
|
70
|
+
File.symlink("../available.d/default.yaml", "enabled.d/" + vm_name + ".yaml")
|
71
|
+
save_path = @env.cwd.join("local.d/" + vm_name + ".yaml")
|
72
|
+
raise Errors::VagrantfileExistsError if save_path.exist?
|
73
|
+
template_path = ::VagrantPirate.source_root.join("templates/local.yaml")
|
74
|
+
contents = Vagrant::Util::TemplateRenderer.render(template_path,
|
75
|
+
:hostname => vm_name + ".example.com")
|
76
|
+
save_path.open("w+") do |f|
|
77
|
+
f.write(contents)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
require 'vagrant/util/template_renderer'
|
3
|
+
|
4
|
+
module VagrantPlugins
|
5
|
+
module VagrantPirate
|
6
|
+
module Command
|
7
|
+
class PirateUpdate < Vagrant.plugin("2", :command)
|
8
|
+
def self.synopsis
|
9
|
+
"Updates a YAML-based Vagrant environment."
|
10
|
+
end
|
11
|
+
|
12
|
+
def execute
|
13
|
+
options = {}
|
14
|
+
|
15
|
+
# Boolean whether we should actually go through with the update
|
16
|
+
# or not. This is true only if the "--force" flag is set or if the
|
17
|
+
# user confirms it.
|
18
|
+
do_update = false
|
19
|
+
|
20
|
+
opts = OptionParser.new do |opts|
|
21
|
+
opts.banner = "Usage: vagrant pirate update"
|
22
|
+
|
23
|
+
opts.on("-f", "--force", "Update without confirmation.") do |f|
|
24
|
+
options[:force] = f
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# Parse the options
|
29
|
+
argv = parse_options(opts)
|
30
|
+
return if !argv
|
31
|
+
|
32
|
+
if options[:force]
|
33
|
+
do_update = true
|
34
|
+
else
|
35
|
+
choice = nil
|
36
|
+
begin
|
37
|
+
choice = @env.ui.ask(I18n.t("vagrant.plugins.pirate.commands.update.confirmation"))
|
38
|
+
|
39
|
+
rescue Errors::UIExpectsTTY
|
40
|
+
# We raise a more specific error but one which basically
|
41
|
+
# means the same thing.
|
42
|
+
raise Errors::UpdateRequiresForce
|
43
|
+
end
|
44
|
+
do_update = choice.upcase == "Y"
|
45
|
+
end
|
46
|
+
|
47
|
+
if do_update
|
48
|
+
@logger.info("Updating project with latest Vagrantfile from vagrant-pirate.")
|
49
|
+
update
|
50
|
+
else
|
51
|
+
@logger.info("Not updating project since confirmation was declined.")
|
52
|
+
@env.ui.success(I18n.t("vagrant.plugins.pirate.commands.update.will_not_update"),
|
53
|
+
:prefix => false)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def update
|
58
|
+
save_path = @env.cwd.join("Vagrantfile")
|
59
|
+
|
60
|
+
template_path = ::VagrantPirate.source_root.join("templates/Vagrantfile")
|
61
|
+
contents = Vagrant::Util::TemplateRenderer.render(template_path)
|
62
|
+
|
63
|
+
# Write out the contents
|
64
|
+
save_path.open("w+") do |f|
|
65
|
+
f.write(contents)
|
66
|
+
end
|
67
|
+
|
68
|
+
@env.ui.info(I18n.t("vagrant.plugins.pirate.commands.update.success"),
|
69
|
+
:prefix => false)
|
70
|
+
|
71
|
+
# Success, exit status 0
|
72
|
+
0
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module VagrantPlugins
|
2
|
+
module VagrantPirate
|
3
|
+
module Config
|
4
|
+
class Pirate < Vagrant.plugin("2", :config)
|
5
|
+
attr_accessor :map
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
@map = UNSET_VALUE
|
9
|
+
end
|
10
|
+
|
11
|
+
def finalize!
|
12
|
+
if @map == UNSET_VALUE
|
13
|
+
@map = { "local" => "local.d", "enabled" => "vms-enabled" }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def validate(machine)
|
18
|
+
errors = _detected_errors
|
19
|
+
@map.each() do |name, conf_dir|
|
20
|
+
current_dir = Dir.pwd + '/' + conf_dir
|
21
|
+
if !File.directory?(current_dir)
|
22
|
+
errors << "Configuration directories must exist: #{current_dir}"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
{ "pirate" => errors }
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module VagrantPirate
|
2
|
+
module Errors
|
3
|
+
|
4
|
+
class PirateError < Vagrant::Errors::VagrantError
|
5
|
+
def error_namespace; "vagrant.plugins.pirate.errors"; end
|
6
|
+
end
|
7
|
+
|
8
|
+
class VagrantfileExistsError < PirateError
|
9
|
+
error_key :vagrantfile_exists
|
10
|
+
end
|
11
|
+
|
12
|
+
class EnabledDirMissing < PirateError
|
13
|
+
error_key :enabled_dir_missing
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'vagrant-pirate/vagrant-pirate'
|
2
|
+
|
3
|
+
module VagrantPlugins
|
4
|
+
module VagrantPirate
|
5
|
+
class Plugin < Vagrant.plugin("2")
|
6
|
+
name "Yagrant YAML"
|
7
|
+
description <<-DESC
|
8
|
+
This plugin enables Vagrant to use YAML files to configure VMs.
|
9
|
+
DESC
|
10
|
+
|
11
|
+
config("pirate") do
|
12
|
+
require_relative "config/pirate"
|
13
|
+
Config::Pirate
|
14
|
+
end
|
15
|
+
|
16
|
+
command("pirate") do
|
17
|
+
require_relative "command/pirate"
|
18
|
+
Command::Pirate
|
19
|
+
end
|
20
|
+
|
21
|
+
command("pirate-ship", primary: false) do
|
22
|
+
require_relative "command/pirate_ship"
|
23
|
+
Command::PirateShip
|
24
|
+
end
|
25
|
+
|
26
|
+
command("pirate-update", primary: false) do
|
27
|
+
require_relative "command/pirate_update"
|
28
|
+
Command::PirateUpdate
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
@@ -0,0 +1,92 @@
|
|
1
|
+
module VagrantPirate
|
2
|
+
# The source root is the path to the root directory of the this gem.
|
3
|
+
def self.source_root
|
4
|
+
@source_root ||= Pathname.new(File.expand_path('../../../', __FILE__))
|
5
|
+
end
|
6
|
+
|
7
|
+
# Apply settings loaded from YAML to a vm.
|
8
|
+
def self.ahoy!(vm,yml)
|
9
|
+
yml.each do |key0,value0|
|
10
|
+
if !value0.is_a?(Hash) # If it's a setting,
|
11
|
+
vm.send("#{key0}=".to_sym, value0) # we set it directly.
|
12
|
+
else # Otherwise,
|
13
|
+
method_object = vm.method("#{key0}".to_sym) # we're invoking a method
|
14
|
+
value0.each do |key1,value1| # and each setting
|
15
|
+
method_object.call("#{key1}".to_sym, value1) # needs to be passed to the method.
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
# Merge hashes recursively
|
22
|
+
def self.sail_ho!(first, second)
|
23
|
+
second.each_pair do |k,v|
|
24
|
+
if first[k].is_a?(Hash) and second[k].is_a?(Hash)
|
25
|
+
deep_merge!(first[k], second[k])
|
26
|
+
else
|
27
|
+
first[k] = second[k]
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
def self.Arrr!(plunder)
|
34
|
+
require "yaml"
|
35
|
+
|
36
|
+
# Set defaults
|
37
|
+
local_dir = "local.d"
|
38
|
+
enabled_dir = "enabled.d"
|
39
|
+
# Override defaults with config, if it's set, since config finalizing
|
40
|
+
# occurs too late for our purposes.
|
41
|
+
if plunder.pirate.map.is_a?(Hash)
|
42
|
+
if plunder.pirate.map.has_key?('local')
|
43
|
+
local_dir = plunder.pirate.map['local']
|
44
|
+
end
|
45
|
+
if plunder.pirate.map.has_key?('enabled')
|
46
|
+
enabled_dir = plunder.pirate.map['enabled']
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# All paths are relative to the project root
|
51
|
+
# todo: Can we access this from Vagrant::Environment?
|
52
|
+
current_dir = Dir.pwd
|
53
|
+
local_dir = "#{current_dir}/#{local_dir}"
|
54
|
+
enabled_dir = "#{current_dir}/#{enabled_dir}"
|
55
|
+
|
56
|
+
# Scan our vms-enabled/ directory for YAML config files
|
57
|
+
if File.directory?(enabled_dir)
|
58
|
+
config_files = Dir.glob("#{enabled_dir}/*.yaml")
|
59
|
+
else
|
60
|
+
raise Errors::EnabledDirMissing,
|
61
|
+
:enabled_dir => enabled_dir
|
62
|
+
end
|
63
|
+
|
64
|
+
# Build up a list of the VMs we'll provision, and their config_files
|
65
|
+
vms = {}
|
66
|
+
config_files.each do |config_file|
|
67
|
+
vms.update({ File.basename(config_file, ".yaml") => config_file})
|
68
|
+
end
|
69
|
+
|
70
|
+
# VM-specific configuration loaded from YAML config files
|
71
|
+
vms.each do |vm,config_file|
|
72
|
+
|
73
|
+
yml = YAML.load_file config_file
|
74
|
+
yml = {} if !yml.is_a?(Hash)
|
75
|
+
|
76
|
+
# Allow local overrides
|
77
|
+
local_file = "#{local_dir}/#{vm}.yaml"
|
78
|
+
if File.exists?(local_file)
|
79
|
+
local = YAML.load_file local_file
|
80
|
+
sail_ho!(yml, local) if local.is_a?(Hash)
|
81
|
+
end
|
82
|
+
|
83
|
+
plunder.vm.define "#{vm}" do |vm_config|
|
84
|
+
ahoy!(vm_config.vm, yml)
|
85
|
+
# We may need some project-wide config file to handle things like:
|
86
|
+
#vm_config.vbguest.auto_update = false
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# Since Vagrant starts under a different process from our tests, we need to
|
2
|
+
# initialize simplecov here, and make it available for coveralls to retrieve.
|
3
|
+
if ENV['COVERAGE']
|
4
|
+
require 'simplecov'
|
5
|
+
SimpleCov.command_name "binary #{Process.pid}"
|
6
|
+
SimpleCov.root(File.expand_path('../../', __FILE__))
|
7
|
+
SimpleCov.start
|
8
|
+
end
|
9
|
+
|
10
|
+
|
11
|
+
require 'vagrant'
|
12
|
+
require 'vagrant-pirate/errors'
|
13
|
+
require 'vagrant-pirate/plugin'
|
14
|
+
require 'vagrant-pirate/vagrant-pirate'
|
15
|
+
|
16
|
+
# Add our custom translations to the load path
|
17
|
+
I18n.load_path << File.expand_path("../../locales/en.yml", __FILE__)
|
data/locales/en.yml
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
en:
|
2
|
+
vagrant:
|
3
|
+
plugins:
|
4
|
+
pirate:
|
5
|
+
commands:
|
6
|
+
ship:
|
7
|
+
success: |-
|
8
|
+
A `Vagrantfile` has been placed in this directory, a default Yaml VM config file
|
9
|
+
has been placed in '%{avail_dir}', and a symlink to it, placed in '%{enabled_dir}'.
|
10
|
+
Finally, a file to contain local overrides was placed in '%{local_dir}'. Unlike a
|
11
|
+
regular Vagrantfile, this one parses and applies the configuration in the Yaml
|
12
|
+
files it finds in '%{enabled_dir}'. You are now ready to `vagrant up` your first
|
13
|
+
virtual environment! Please read the comments in the default Yaml VM config
|
14
|
+
file to see how it works.
|
15
|
+
update:
|
16
|
+
success: |-
|
17
|
+
Vagrantfile updated using the latest one from vagrant-pirate.
|
18
|
+
confirmation: |-
|
19
|
+
This operation will overwrite the Vagrantfile in this project with the one in the
|
20
|
+
vagrant-pirate gem. Do you want to proceed?
|
21
|
+
will_not_update: |-
|
22
|
+
User aborted. Vagrantfile was not updated.
|
23
|
+
|
24
|
+
errors:
|
25
|
+
vagrantfile_exists: |-
|
26
|
+
`Vagrantfile` already exists in this directory. Remove it before running `vagrant
|
27
|
+
pirate init`, or run `vagrant pirate update` to update to the latest version.
|
28
|
+
enabled_dir_missing: |-
|
29
|
+
A valid directory must be specified where YAML configs for the VMs can be found.
|
30
|
+
Current config points to a non-existent directory:
|
31
|
+
>>> %{enabled_dir}
|
32
|
+
|
data/tasks/cucumber.rake
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'cucumber'
|
3
|
+
require 'cucumber/rake/task'
|
4
|
+
require 'coveralls/rake/task'
|
5
|
+
|
6
|
+
desc 'Default task which runs all cucumber tests'
|
7
|
+
Coveralls::RakeTask.new
|
8
|
+
task :default => [:features, 'coveralls:push']
|
9
|
+
Cucumber::Rake::Task.new(:features) do |t|
|
10
|
+
t.cucumber_opts = "features --no-source --format pretty"
|
11
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# -*- mode: ruby -*-
|
2
|
+
# vi: set ft=ruby :
|
3
|
+
|
4
|
+
# Vagrantfile API/syntax version.
|
5
|
+
# Don't be touching this, Matey, lest ye send us all down to Dany Jones' locker!
|
6
|
+
VAGRANTFILE_API_VERSION = "2"
|
7
|
+
|
8
|
+
Vagrant.configure(VAGRANTFILE_API_VERSION) do |plunder|
|
9
|
+
|
10
|
+
# Specify the directories in which to look for YAML VM config files.
|
11
|
+
#plunder.pirate.map = { 'local' => 'local.d', 'enabled' => 'enabled.d' }
|
12
|
+
|
13
|
+
# Load, parse and apply YAML VM configs.
|
14
|
+
Pirate::Arrr!(plunder)
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# All Vagrant VM configuration can be done from Yaml config files such as this
|
2
|
+
# one. Only config files in the 'enabled.d' directory are interpreted. You
|
3
|
+
# can copy from, or symlink to, files in the 'available.d' directory. This
|
4
|
+
# allows you to have a library of config files that could, for example, be
|
5
|
+
# updated by an external application.
|
6
|
+
|
7
|
+
# Also, any Yaml config file in local.d/ named the same as one in enabled.d/
|
8
|
+
# will allow the selective override of individual configuration settings. See
|
9
|
+
# local.d/vm1.yaml for an example.
|
10
|
+
|
11
|
+
# To see what you can do with Yaml, check out this handy reference card:
|
12
|
+
# http://www.yaml.org/refcard.html. To see how Yaml is interpreted in Ruby, see
|
13
|
+
# this guide: http://yaml.org/YAML_for_ruby.html. For further details, refer to
|
14
|
+
# the full Yaml specification: http://www.yaml.org/spec/1.2/spec.html
|
15
|
+
|
16
|
+
# For all available Vagrant options, see the docs on Vagrantfile settings:
|
17
|
+
# http://vagrantup.com/v2/docs/vagrantfile.html. While we've provided some
|
18
|
+
# examples below, it's far from exhaustive. If you can't figure out how to
|
19
|
+
# apply a particular setting, please file a support request at:
|
20
|
+
# https://github.com/PraxisLabs/vagrant-pirate. Also, feel free to post to the
|
21
|
+
# project's wiki, or submit pull requests.
|
22
|
+
|
23
|
+
box: "<%= box_name || "base" %>"
|
24
|
+
<% if box_url.nil? %># <% end %>box_url: "<%= box_url || "http://domain.com/path/to/above.box" %>"
|
25
|
+
hostname: &id001 vagrant.local
|
26
|
+
#network:
|
27
|
+
# forwarded_port:
|
28
|
+
# :guest: 80
|
29
|
+
# :host: 8080
|
30
|
+
#provision:
|
31
|
+
# puppet:
|
32
|
+
# :module_path: 'modules'
|
33
|
+
# :manifests_path: 'manifests'
|
34
|
+
# :manifest_file: site.pp
|
35
|
+
# :options:
|
36
|
+
# - --verbose
|
37
|
+
# - --debug
|
38
|
+
# :facter:
|
39
|
+
# fqdn: *id001
|
@@ -0,0 +1,6 @@
|
|
1
|
+
# Any Yaml config file in 'local.d/' named the same as one in 'enabled.d/' will
|
2
|
+
# allow the selective override of individual configuration settings. Uncommen-
|
3
|
+
# ting the setting below would override the 'hostname' set by Vagrant in the
|
4
|
+
# VM.
|
5
|
+
|
6
|
+
hostname: <%= hostname %>
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path('../lib/vagrant-pirate/version', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = "vagrant-pirate"
|
6
|
+
s.version = VagrantPirate::VERSION
|
7
|
+
s.platform = Gem::Platform::RUBY
|
8
|
+
s.authors = ["Christopher Gervais"]
|
9
|
+
s.email = ["chris@ergonlogic.com"]
|
10
|
+
s.license = 'GPL'
|
11
|
+
s.homepage = "https://github.com/PraxisLabs/vagrant-pirate"
|
12
|
+
s.summary = %q{A Vagrant plugin that allows configuration via YAML}
|
13
|
+
s.description = %q{A Vagrant plugin that allows configuration via YAML}
|
14
|
+
|
15
|
+
s.required_ruby_version = '>= 2.0.0'
|
16
|
+
s.required_rubygems_version = ">= 1.3.6"
|
17
|
+
|
18
|
+
s.add_development_dependency "cucumber"
|
19
|
+
s.add_development_dependency "aruba"
|
20
|
+
s.add_development_dependency "rake"
|
21
|
+
s.add_development_dependency "simplecov", '~> 0.7.1'
|
22
|
+
s.add_development_dependency "coveralls"
|
23
|
+
|
24
|
+
s.files = `git ls-files`.split("\n")
|
25
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
26
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
27
|
+
s.require_paths = ["lib"]
|
28
|
+
|
29
|
+
end
|