vagrant-host-shell 0.0.2 → 0.0.3

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.
data/Rakefile CHANGED
@@ -1 +1,15 @@
1
- require "bundler/gem_tasks"
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ # Immediately sync all stdout so that tools like buildbot can
5
+ # immediately load in the output.
6
+ $stdout.sync = true
7
+ $stderr.sync = true
8
+
9
+ # Change to the directory of this file.
10
+ Dir.chdir(File.expand_path("../", __FILE__))
11
+
12
+ # This installs the tasks that help with gem creation and
13
+ # publishing.
14
+ Bundler::GemHelper.install_tasks
15
+
@@ -1,5 +1,7 @@
1
1
  module VagrantPlugins
2
2
  module HostShell
3
+ lib_path = Pathname.new(File.expand_path("../vagrant-host-shell", __FILE__))
4
+ autoload :Errors, lib_path.join("errors")
3
5
  end
4
6
  end
5
7
 
@@ -1,13 +1,19 @@
1
1
  module VagrantPlugins::HostShell
2
2
  class Config < Vagrant.plugin('2', :config)
3
3
  attr_accessor :inline
4
+ attr_accessor :cwd
5
+ attr_accessor :abort_on_nonzero
4
6
 
5
7
  def initialize
6
8
  @inline = UNSET_VALUE
9
+ @cwd = UNSET_VALUE
10
+ @abort_on_nonzero = UNSET_VALUE
7
11
  end
8
12
 
9
13
  def finalize!
10
14
  @inline = nil if @inline == UNSET_VALUE
15
+ @cwd = nil if @cwd == UNSET_VALUE
16
+ @abort_on_nonzero = false if @abort_on_nonzero == UNSET_VALUE
11
17
  end
12
18
 
13
19
  def validate(machine)
@@ -17,6 +23,14 @@ module VagrantPlugins::HostShell
17
23
  errors << ':host_shell provisioner requires inline to be set'
18
24
  end
19
25
 
26
+ unless abort_on_nonzero.is_a?(TrueClass) || abort_on_nonzero.is_a?(FalseClass)
27
+ errors << ':host_shell provisioner requires abort_on_nonzero to be a boolean'
28
+ end
29
+
30
+ unless cwd.is_a?(String) || cwd.nil?
31
+ errors << ':host_shell provisioner requires cwd to be a string or nil'
32
+ end
33
+
20
34
  { 'host shell provisioner' => errors }
21
35
  end
22
36
  end
@@ -0,0 +1,17 @@
1
+ module VagrantPlugins::HostShell::Errors
2
+
3
+ class VagrantHostShellError < Vagrant::Errors::VagrantError; end
4
+
5
+ class NonZeroStatusError < VagrantHostShellError
6
+ def initialize(command, exit_code)
7
+ @command = command
8
+ @exit_code = exit_code
9
+ super nil
10
+ end
11
+
12
+ def error_message
13
+ "Command [#{@command}] exited with non-zero status [#{@exit_code}]"
14
+ end
15
+
16
+ end
17
+ end
@@ -1,14 +1,20 @@
1
1
  module VagrantPlugins::HostShell
2
2
  class Provisioner < Vagrant.plugin('2', :provisioner)
3
3
  def provision
4
- Vagrant::Util::Subprocess.execute(
4
+ result = Vagrant::Util::Subprocess.execute(
5
5
  '/bin/bash',
6
6
  '-c',
7
7
  config.inline,
8
- :notify => [:stdout, :stderr]
8
+ :notify => [:stdout, :stderr],
9
+ :workdir => config.cwd
9
10
  ) do |io_name, data|
10
11
  @machine.env.ui.info "[#{io_name}] #{data}"
11
12
  end
13
+
14
+ if config.abort_on_nonzero && !result.exit_code.zero?
15
+ raise VagrantPlugins::HostShell::Errors::NonZeroStatusError.new(config.inline, result.exit_code)
16
+ end
17
+
12
18
  end
13
19
  end
14
20
  end
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module HostShell
3
- VERSION = '0.0.2'
3
+ VERSION = '0.0.3'
4
4
  end
5
5
  end
@@ -7,8 +7,8 @@ require 'vagrant-host-shell/version'
7
7
  Gem::Specification.new do |spec|
8
8
  spec.name = "vagrant-host-shell"
9
9
  spec.version = VagrantPlugins::HostShell::VERSION
10
- spec.authors = ["Paul Hinze"]
11
- spec.email = ["paul.t.hinze@gmail.com"]
10
+ spec.authors = ["Paul Hinze", "Carlos Brito Lage"]
11
+ spec.email = ["paul.t.hinze@gmail.com", "carlos@compstak.com"]
12
12
  spec.description = %q{a vagrant provisioner to run commands on the host}
13
13
  spec.summary = %q{a vagrant provisioner to run commands on the host}
14
14
  spec.homepage = ""
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-host-shell
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Paul Hinze
9
+ - Carlos Brito Lage
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2013-09-11 00:00:00.000000000 Z
13
+ date: 2013-12-05 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: bundler
@@ -46,6 +47,7 @@ dependencies:
46
47
  description: a vagrant provisioner to run commands on the host
47
48
  email:
48
49
  - paul.t.hinze@gmail.com
50
+ - carlos@compstak.com
49
51
  executables: []
50
52
  extensions: []
51
53
  extra_rdoc_files: []
@@ -58,6 +60,7 @@ files:
58
60
  - examples/Vagrantfile
59
61
  - lib/vagrant-host-shell.rb
60
62
  - lib/vagrant-host-shell/config.rb
63
+ - lib/vagrant-host-shell/errors.rb
61
64
  - lib/vagrant-host-shell/plugin.rb
62
65
  - lib/vagrant-host-shell/provisioner.rb
63
66
  - lib/vagrant-host-shell/version.rb
@@ -77,7 +80,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
77
80
  version: '0'
78
81
  segments:
79
82
  - 0
80
- hash: 3091874001424134458
83
+ hash: 1738926357149632159
81
84
  required_rubygems_version: !ruby/object:Gem::Requirement
82
85
  none: false
83
86
  requirements:
@@ -86,7 +89,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
86
89
  version: '0'
87
90
  segments:
88
91
  - 0
89
- hash: 3091874001424134458
92
+ hash: 1738926357149632159
90
93
  requirements: []
91
94
  rubyforge_project:
92
95
  rubygems_version: 1.8.23