vagrant-triggers 0.3.0 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 92d93f338ac34daa73bb81b1c67e82a098ed6a3b
4
- data.tar.gz: 19f64c4f8f7d5379719a126d8e5fdf0fa2db76b3
3
+ metadata.gz: 24bfa273b967f208d110651eda1e6c9dc807ecf0
4
+ data.tar.gz: 643443292d3045678520d9b864bf00811648e8fc
5
5
  SHA512:
6
- metadata.gz: 0cb4fa497e40a8697e7f86d7276c63a7e38df7c5c82aaa3c804566fa3bc783138547f8d60640f7cde21b7d051bc1abe891fd0f4cd80f24ced622eb7e19c54bb5
7
- data.tar.gz: ad5b94780e81efe97b693e0460ce1163983a95c171d980d2021ffe99c69b92746ee68125e3ab75c2a398a7de0530965c5d30e126f7028c2cdfd88f7d9d30b00d
6
+ metadata.gz: 26fafa806afa5d6863033843dfe1329297ade73a8df715945ca1e877100925f12db659d63073b0a91bbc11f59b1d0734b1df3874ca4f073fde8a9eee4e45c9cd
7
+ data.tar.gz: d285bca1d4d3c2cba1dea08748cd7434aa8f3d5e8b3dac8a147269c4308cc57ade7e4458c29433d01fb7cf943c81917cb0ea7cde6d92c03dea95efb720aa4355
@@ -1,15 +1,24 @@
1
1
  language: ruby
2
2
  rvm:
3
3
  - 2.0.0
4
+ before_install:
5
+ - gem update --system
6
+ - rvm @global do gem uninstall -ax bundler
7
+ - gem install bundler -v 1.5.3
4
8
  env:
5
- - VAGRANT_VERSION=v1.5.2
9
+ - VAGRANT_VERSION=v1.6.2
6
10
  matrix:
7
11
  include:
8
12
  - env: VAGRANT_VERSION=master
13
+ rvm: 2.0.0
14
+ - env: VAGRANT_VERSION=v1.5.4
15
+ rvm: 2.0.0
9
16
  - env: VAGRANT_VERSION=v1.4.3
17
+ rvm: 2.0.0
10
18
  - env: VAGRANT_VERSION=v1.3.5
11
19
  rvm: 1.9.3
12
20
  - env: VAGRANT_VERSION=v1.2.7
13
21
  rvm: 1.9.3
14
22
  allow_failures:
15
23
  - env: VAGRANT_VERSION=master
24
+ rvm: 2.0.0
@@ -1,3 +1,21 @@
1
+ ## 0.4.0 (May 20, 2014)
2
+
3
+ NEW FEATURES:
4
+
5
+ - New trigger type: ```instead_of```.
6
+ - Add ```:vm``` option for choosing the target vm(s) in case of multi-machine Vagrantfile.
7
+
8
+ IMPROVEMENTS:
9
+
10
+ - DSL: add ```run_remote``` as alias to ```run("vagrant ssh -c ...")```.
11
+ - DSL: the ```error``` statement now stops the action and makes Vagrant fail with an error.
12
+ - Ensure the ```run``` statement always returns the command output.
13
+
14
+ BUG FIXES:
15
+
16
+ - Use additive merge logic [(#12)](https://github.com/emyl/vagrant-triggers/issues/12)
17
+ - Remove bundler settings from RUBYOPT [(reopened #5)](https://github.com/emyl/vagrant-triggers/issues/5)
18
+
1
19
  ## 0.3.0 (April 4, 2014)
2
20
 
3
21
  CHANGES:
data/README.md CHANGED
@@ -31,9 +31,16 @@ Vagrant.configure("2") do |config|
31
31
  run "script"
32
32
  ...
33
33
  end
34
+
35
+ config.trigger.instead_of :command, :option => "value" do
36
+ run "script"
37
+ ...
38
+ end
34
39
  end
35
40
  ```
36
41
 
42
+ The ```instead_of``` trigger could also be aliased as ```reject```.
43
+
37
44
  The first argument is the command in which the trigger will be tied. It could be an array (e.g. ```[:up, :resume]```) in case of multiple commands.
38
45
 
39
46
  ### Options
@@ -41,10 +48,11 @@ The first argument is the command in which the trigger will be tied. It could be
41
48
  * ```:append_to_path => ["dir", "dir"]```: additional places where looking for scripts. See [this wiki page](https://github.com/emyl/vagrant-triggers/wiki/The-:append_to_path-option) for details.
42
49
  * ```:force => true```: continue even one of the scripts fails (exits with non-zero code)
43
50
  * ```:stdout => true```: display script output
51
+ * ```:vm => ["vm1", /vm[2-3]/]```: fire only for matching virtual machines. Value can be a string, a regexp or an array of strings and/or regexps.
44
52
 
45
53
  ### Trigger block DSL
46
54
 
47
- The given block will be evaluated by an instance of the [VagrantPlugins::Triggers::DSL](https://github.com/emyl/vagrant-triggers/blob/master/lib/vagrant-triggers/dsl.rb) class. This class defines a very simple DSL for running scripts on the host machine. Basically only one method (`run`) is directly defined, all the other calls will be forwarded to Vagrant's [ui](https://github.com/mitchellh/vagrant/blob/master/lib/vagrant/ui.rb) instance. This allows the definition of custom messages along with scripts.
55
+ The given block will be evaluated by an instance of the [VagrantPlugins::Triggers::DSL](https://github.com/emyl/vagrant-triggers/blob/master/lib/vagrant-triggers/dsl.rb) class. This class defines a very simple DSL for running scripts on the host machine. Only a few methods are directly defined, all the other calls will be forwarded to Vagrant's [ui](https://github.com/mitchellh/vagrant/blob/master/lib/vagrant/ui.rb) instance. This allows the definition of custom messages along with scripts.
48
56
 
49
57
  For additional details you can take a look to the [VagrantPlugins::Triggers::DSL](https://github.com/emyl/vagrant-triggers/blob/master/lib/vagrant-triggers/dsl.rb) definition.
50
58
 
@@ -8,50 +8,67 @@ module VagrantPlugins
8
8
  @app = app
9
9
  @condition = condition
10
10
  @env = env
11
+ @exit = false
11
12
  @logger = Log4r::Logger.new("vagrant::plugins::triggers::trigger")
12
13
  end
13
14
 
14
15
  def call(env)
15
16
  fire_triggers
16
17
 
17
- # Carry on
18
- @app.call(env)
18
+ @app.call(env) unless @exit
19
19
  end
20
20
 
21
21
  private
22
22
 
23
23
  def fire_triggers
24
24
  # Triggers don't fire on environment load and unload.
25
- return if [:environment_load, :environment_unload].include?(@env[:action_name])
26
- current_action = @env[:machine_action]
25
+ return if [:environment_load, :environment_plugins_loaded, :environment_unload].include?(@env[:action_name])
26
+
27
27
  # Also don't fire if machine action is not defined.
28
- return unless current_action
29
- @logger.debug("Looking for triggers #{@condition} action #{current_action}.")
30
- triggers_to_fire = @env[:machine].config.trigger.triggers.find_all { |t| t[:action] == current_action && t[:condition] == @condition }
31
- unless triggers_to_fire.empty?
32
- # Emit a warning message if the old syntax is found
33
- if @env[:machine].config.trigger.deprecation_warning
34
- @env[:ui].warn I18n.t("vagrant_triggers.action.trigger.deprecated_syntax")
35
- end
36
- @env[:ui].info I18n.t("vagrant_triggers.action.trigger.running_triggers", :condition => @condition)
37
- triggers_to_fire.each do |trigger|
38
- # Ugly block, will change in v0.4
39
- @options = trigger[:options]
40
- case
41
- when trigger[:proc]
42
- dsl = DSL.new(@env[:ui], @options)
43
- dsl.instance_eval &trigger[:proc]
44
- when @options[:execute]
45
- dsl = DSL.new(@env[:ui], @options)
46
- dsl.execute @options[:execute]
47
- when @options[:info]
48
- dsl = DSL.new(@env[:ui], @options)
49
- dsl.info @options[:info]
50
- else
51
- @logger.debug("Trigger command not found.")
28
+ return unless @env[:machine_action]
29
+
30
+ @logger.debug("Looking for triggers with:")
31
+ trigger_env.each { |k, v| @logger.debug("-- #{k}: #{v}")}
32
+
33
+ # Loop through all defined triggers checking for matches.
34
+ triggers_to_fire = [].tap do |triggers|
35
+ @env[:machine].config.trigger.triggers.each do |trigger|
36
+ next if trigger[:action] != trigger_env[:action]
37
+ next if trigger[:condition] != trigger_env[:condition]
38
+
39
+ if trigger[:options][:vm]
40
+ match = false
41
+ Array(trigger[:options][:vm]).each do |pattern|
42
+ match = true if trigger_env[:vm].match(pattern)
43
+ end
44
+ next unless match
52
45
  end
46
+
47
+ triggers << trigger
53
48
  end
54
49
  end
50
+
51
+ unless triggers_to_fire.empty?
52
+ @env[:ui].info I18n.t("vagrant_triggers.action.trigger.running_triggers", trigger_env).gsub('_', ' ')
53
+ @exit = true if trigger_env[:condition] == :instead_of
54
+ end
55
+
56
+ triggers_to_fire.each do |trigger|
57
+ if trigger[:proc]
58
+ dsl = DSL.new(@env[:ui], @env[:machine], trigger[:options])
59
+ dsl.instance_eval &trigger[:proc]
60
+ else
61
+ @logger.debug("Trigger command not found.")
62
+ end
63
+ end
64
+ end
65
+
66
+ def trigger_env
67
+ {
68
+ :action => @env[:machine_action],
69
+ :condition => @condition,
70
+ :vm => @env[:machine].name
71
+ }
55
72
  end
56
73
  end
57
74
  end
@@ -1,12 +1,10 @@
1
1
  module VagrantPlugins
2
2
  module Triggers
3
3
  class Config < Vagrant.plugin("2", :config)
4
- attr_reader :deprecation_warning
5
4
  attr_reader :triggers
6
5
 
7
6
  def initialize
8
- @deprecation_warning = false
9
- @triggers = []
7
+ @triggers = []
10
8
  end
11
9
 
12
10
  def after(actions, options = {}, &block)
@@ -17,6 +15,17 @@ module VagrantPlugins
17
15
  add_trigger(actions, :before, options, block)
18
16
  end
19
17
 
18
+ def instead_of(actions, options = {}, &block)
19
+ add_trigger(actions, :instead_of, options, block)
20
+ end
21
+ alias_method :reject, :instead_of
22
+
23
+ def merge(other)
24
+ super.tap do |result|
25
+ result.instance_variable_set(:@triggers, @triggers + other.triggers)
26
+ end
27
+ end
28
+
20
29
  def validate(machine)
21
30
  errors = []
22
31
 
@@ -32,7 +41,6 @@ module VagrantPlugins
32
41
  def add_trigger(actions, condition, options, proc)
33
42
  Array(actions).each do |action|
34
43
  @triggers << { :action => action, :condition => condition, :options => options, :proc => proc }
35
- @deprecation_warning = true if options[:execute] || options[:info]
36
44
  end
37
45
  end
38
46
  end
@@ -5,14 +5,19 @@ require "vagrant/util/subprocess"
5
5
  module VagrantPlugins
6
6
  module Triggers
7
7
  class DSL
8
- def initialize(ui, options = {})
8
+ def initialize(ui, machine, options = {})
9
9
  @logger = Log4r::Logger.new("vagrant::plugins::triggers::dsl")
10
+ @machine = machine
10
11
  @options = options
11
12
  @ui = ui
12
13
  end
13
14
 
15
+ def error(message, *opts)
16
+ raise Errors::DSLError, @ui.error(message, *opts)
17
+ end
18
+
14
19
  def run(raw_command, options = {})
15
- @ui.info I18n.t("vagrant_triggers.action.trigger.executing_command", :command => raw_command)
20
+ info I18n.t("vagrant_triggers.action.trigger.executing_command", :command => raw_command)
16
21
  command = Shellwords.shellsplit(raw_command)
17
22
  env_backup = ENV.to_hash
18
23
  begin
@@ -27,11 +32,17 @@ module VagrantPlugins
27
32
  raise Errors::CommandFailed, :command => raw_command, :stderr => result.stderr
28
33
  end
29
34
  if @options[:stdout]
30
- @ui.info I18n.t("vagrant_triggers.action.trigger.command_output", :output => result.stdout)
35
+ info I18n.t("vagrant_triggers.action.trigger.command_output", :output => result.stdout)
31
36
  end
37
+ result.stdout
32
38
  end
33
39
  alias_method :execute, :run
34
40
 
41
+ def run_remote(raw_command, options = {})
42
+ run("vagrant ssh -c '#{raw_command}' #{@machine.name}", options)
43
+ end
44
+ alias_method :execute_remote, :run_remote
45
+
35
46
  def method_missing(method, *args, &block)
36
47
  # If the @ui object responds to the given method, call it
37
48
  if @ui.respond_to?(method)
@@ -55,7 +66,11 @@ module VagrantPlugins
55
66
  new_path = ENV["VAGRANT_INSTALLER_ENV"] ? ENV["PATH"].gsub(/#{ENV["VAGRANT_INSTALLER_EMBEDDED_DIR"]}.*?#{File::PATH_SEPARATOR}/, "") : ENV["PATH"]
56
67
  new_path += Array(@options[:append_to_path]).map { |dir| "#{File::PATH_SEPARATOR}#{dir}" }.join
57
68
  ENV["PATH"] = new_path
58
- @logger.debug("PATH modifed: #{ENV["PATH"]}")
69
+ @logger.debug("PATH modified: #{ENV["PATH"]}")
70
+
71
+ # Remove bundler settings from RUBYOPT
72
+ ENV["RUBYOPT"] = (ENV["RUBYOPT"] || "").gsub(/-rbundler\/setup\s*/, "")
73
+ @logger.debug("RUBYOPT modified: #{ENV["RUBYOPT"]}")
59
74
 
60
75
  # Add the VAGRANT_NO_TRIGGERS variable to avoid loops
61
76
  ENV["VAGRANT_NO_TRIGGERS"] = "1"
@@ -12,6 +12,10 @@ module VagrantPlugins
12
12
  class CommandUnavailable < VagrantTriggerError
13
13
  error_key(:command_unavailable)
14
14
  end
15
+
16
+ class DSLError < VagrantTriggerError
17
+ error_key(:dsl_error)
18
+ end
15
19
  end
16
20
  end
17
- end
21
+ end
@@ -4,6 +4,15 @@ if Vagrant::VERSION < "1.2.0"
4
4
  raise "The Vagrant Triggers plugin is only compatible with Vagrant 1.2+"
5
5
  end
6
6
 
7
+ if ["1.6.0", "1.6.1"].include?(Vagrant::VERSION)
8
+ warn <<-WARNING.gsub /^\s{2}/, ""
9
+ The Vagrant version you're using contains a bug that prevents some
10
+ triggers to work as expected. Update to version 1.6.2+ if you
11
+ want to avoid issues.
12
+
13
+ WARNING
14
+ end
15
+
7
16
  module VagrantPlugins
8
17
  module Triggers
9
18
  class Plugin < Vagrant.plugin("2")
@@ -19,6 +28,7 @@ module VagrantPlugins
19
28
  require_relative "action"
20
29
  unless ENV["VAGRANT_NO_TRIGGERS"]
21
30
  hook.prepend(Action.action_trigger(:before))
31
+ hook.prepend(Action.action_trigger(:instead_of))
22
32
  hook.append(Action.action_trigger(:after))
23
33
  end
24
34
  end
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module Triggers
3
- VERSION = "0.3.0"
3
+ VERSION = "0.4.0"
4
4
  end
5
5
  end
@@ -7,20 +7,10 @@ en:
7
7
  ---------------
8
8
  %{output}
9
9
  ---------------
10
- deprecated_syntax: |-
11
- --------------------
12
- DEPRECATION WARNING:
13
- --------------------
14
- The `:execute` and `:info` trigger options are deprecated
15
- and will be removed in vagrant-triggers 0.4. Please upgrade
16
- your Vagrantfile according to the new trigger DSL.
17
-
18
- More information on the project home page:
19
- https://github.com/emyl/vagrant-triggers
20
10
  executing_command: |-
21
11
  Executing command "%{command}"...
22
12
  running_triggers: |-
23
- Running triggers %{condition} action...
13
+ Running triggers %{condition} %{action}...
24
14
  errors:
25
15
  command_failed: |-
26
16
  The command "%{command}" returned a failed exit code. The
@@ -31,3 +21,5 @@ en:
31
21
  The executable "%{command}" Vagrant is trying to trigger
32
22
  was not found. If you know it is not in the PATH, please
33
23
  specify its absolute path using the :append_to_path option.
24
+ dsl_error: |-
25
+ Trigger failed with an error.
@@ -14,7 +14,7 @@ describe VagrantPlugins::Triggers::Action::Trigger do
14
14
  before do
15
15
  trigger_block = Proc.new { nil }
16
16
  @triggers = [ { :action => machine_action, :condition => condition, :options => { }, :proc => trigger_block } ]
17
- machine.stub_chain(:config, :trigger, :deprecation_warning)
17
+ machine.stub(:name)
18
18
  machine.stub_chain(:config, :trigger, :triggers).and_return(@triggers)
19
19
  end
20
20
 
@@ -35,7 +35,7 @@ describe VagrantPlugins::Triggers::Action::Trigger do
35
35
 
36
36
  it "should fire trigger when all conditions are satisfied" do
37
37
  dsl = double("dsl")
38
- VagrantPlugins::Triggers::DSL.stub(:new).with(ui, @triggers.first[:options]).and_return(dsl)
38
+ VagrantPlugins::Triggers::DSL.stub(:new).with(ui, machine, @triggers.first[:options]).and_return(dsl)
39
39
  dsl.should_receive(:instance_eval).and_yield
40
40
  described_class.new(app, env, condition).call(env)
41
41
  end
@@ -64,9 +64,51 @@ describe VagrantPlugins::Triggers::Action::Trigger do
64
64
  described_class.new(app, env, condition).call(env)
65
65
  end
66
66
 
67
- it "should emit a warning message if the deprecation warning flag is set" do
68
- machine.stub_chain(:config, :trigger, :deprecation_warning).and_return(true)
69
- ui.should_receive(:warn).with(/DEPRECATION WARNING/)
70
- described_class.new(app, env, condition).call(env)
67
+ it "shouldn't carry on in the middleware chain on instead_of condition" do
68
+ @triggers[0][:condition] = :instead_of
69
+ app.should_not_receive(:call).with(env)
70
+ described_class.new(app, env, :instead_of).call(env)
71
+ end
72
+
73
+ context ":vm option" do
74
+ before do
75
+ machine.stub(:name).and_return("vm1")
76
+ end
77
+
78
+ it "should fire trigger when :vm option match" do
79
+ @triggers[0][:options][:vm] = "vm1"
80
+ VagrantPlugins::Triggers::DSL.should_receive(:new)
81
+ described_class.new(app, env, condition).call(env)
82
+ end
83
+
84
+ it "shouldn't fire trigger when :vm option doesn't match" do
85
+ @triggers[0][:options][:vm] = "vm2"
86
+ VagrantPlugins::Triggers::DSL.should_not_receive(:new)
87
+ described_class.new(app, env, condition).call(env)
88
+ end
89
+
90
+ it "should fire trigger when :vm option is an array and one of the elements match" do
91
+ @triggers[0][:options][:vm] = ["vm1", "vm2"]
92
+ VagrantPlugins::Triggers::DSL.should_receive(:new)
93
+ described_class.new(app, env, condition).call(env)
94
+ end
95
+
96
+ it "shouldn't fire trigger when :vm option is an array and no element match" do
97
+ @triggers[0][:options][:vm] = ["vm2", "vm3"]
98
+ VagrantPlugins::Triggers::DSL.should_not_receive(:new)
99
+ described_class.new(app, env, condition).call(env)
100
+ end
101
+
102
+ it "should fire trigger when :vm option is a regex and the pattern match" do
103
+ @triggers[0][:options][:vm] = /^vm/
104
+ VagrantPlugins::Triggers::DSL.should_receive(:new)
105
+ described_class.new(app, env, condition).call(env)
106
+ end
107
+
108
+ it "shouldn't fire trigger when :vm option is a regex and the pattern doesn't match" do
109
+ @triggers[0][:options][:vm] = /staging/
110
+ VagrantPlugins::Triggers::DSL.should_not_receive(:new)
111
+ described_class.new(app, env, condition).call(env)
112
+ end
71
113
  end
72
114
  end
@@ -20,16 +20,14 @@ describe VagrantPlugins::Triggers::Config do
20
20
  expect(config.triggers).to have(1).item
21
21
  end
22
22
 
23
- it "should add after triggers" do
24
- config.after(:up) { run "ls" }
23
+ it "should add instead_of triggers" do
24
+ config.instead_of(:up) { run "ls" }
25
25
  expect(config.triggers).to have(1).item
26
26
  end
27
27
 
28
- [:execute, :info].each do |option|
29
- it "should set the deprecation warning flag if the old #{option.to_s} option is passed" do
30
- config.before(:up, option => true)
31
- expect(config.deprecation_warning).to be_true
32
- end
28
+ it "should add after triggers" do
29
+ config.after(:up) { run "ls" }
30
+ expect(config.triggers).to have(1).item
33
31
  end
34
32
  end
35
33
 
@@ -5,12 +5,22 @@ describe VagrantPlugins::Triggers::DSL do
5
5
  let(:result) { double("result", :exit_code => 0, :stderr => stderr) }
6
6
  let(:stderr) { double("stderr") }
7
7
 
8
- let(:ui) { double("ui", :info => info) }
9
- let(:info) { double("info") }
8
+ let(:machine) { double("machine") }
9
+ let(:ui) { double("ui", :info => info) }
10
+ let(:info) { double("info") }
10
11
 
11
12
  before do
12
13
  @command = "foo"
13
- @dsl = described_class.new(ui, {})
14
+ @dsl = described_class.new(ui, machine, {})
15
+
16
+ result.stub(:stdout => "Some output")
17
+ end
18
+
19
+ context "error" do
20
+ it "should raise a DSL error on UI error" do
21
+ ui.should_receive(:error).with("Error message")
22
+ expect { @dsl.error("Error message") }.to raise_error(VagrantPlugins::Triggers::Errors::DSLError)
23
+ end
14
24
  end
15
25
 
16
26
  context "method missing" do
@@ -31,14 +41,13 @@ describe VagrantPlugins::Triggers::DSL do
31
41
  end
32
42
 
33
43
  it "shouldn't raise an error if executed command exits with non-zero code but :force option was specified" do
34
- dsl = described_class.new(ui, :force => true)
44
+ dsl = described_class.new(ui, machine, :force => true)
35
45
  result.stub(:exit_code => 1)
36
46
  expect { dsl.run(@command) }.not_to raise_error()
37
47
  end
38
48
 
39
49
  it "should display output if :stdout option was specified" do
40
- dsl = described_class.new(ui, :stdout => true)
41
- result.stub(:stdout => "Some output")
50
+ dsl = described_class.new(ui, machine, :stdout => true)
42
51
  ui.should_receive(:info).with(/Some output/)
43
52
  dsl.run(@command)
44
53
  end
@@ -74,14 +83,14 @@ describe VagrantPlugins::Triggers::DSL do
74
83
  end
75
84
 
76
85
  it "should honor the :append_to_path option and restore original path after execution" do
77
- dsl = described_class.new(ui, :append_to_path => @tmp_dir)
86
+ dsl = described_class.new(ui, machine, :append_to_path => @tmp_dir)
78
87
  original_path = ENV["PATH"]
79
88
  dsl.run(@command)
80
89
  expect(ENV["PATH"]).to eq(original_path)
81
90
  end
82
91
 
83
92
  it "should accept an array for the :append_to_path option" do
84
- dsl = described_class.new(ui, :append_to_path => [@tmp_dir, @tmp_dir])
93
+ dsl = described_class.new(ui, machine, :append_to_path => [@tmp_dir, @tmp_dir])
85
94
  expect { dsl.run(@command) }.not_to raise_error()
86
95
  end
87
96
  end
@@ -95,6 +104,7 @@ describe VagrantPlugins::Triggers::DSL do
95
104
  ENV["GEM_PATH"] = ENV["GEM_HOME"]
96
105
  ENV["GEMRC"] = "#{ENV["VAGRANT_INSTALLER_EMBEDDED_DIR"]}/etc/gemrc"
97
106
  ENV["PATH"] = "#{ENV["VAGRANT_INSTALLER_EMBEDDED_DIR"]}/bin:#{ENV["PATH"]}"
107
+ ENV["RUBYOPT"] = "-rbundler/setup"
98
108
  end
99
109
 
100
110
  context "with a command which is present into the Vagrant embedded dir" do
@@ -122,12 +132,29 @@ describe VagrantPlugins::Triggers::DSL do
122
132
  end
123
133
  end
124
134
 
135
+ it "should remove bundler settings from RUBYOPT" do
136
+ Vagrant::Util::Subprocess.should_receive(:execute) do |command|
137
+ expect(ENV["RUBYOPT"]).to eq("")
138
+ result
139
+ end
140
+ @dsl.run(@command)
141
+ end
142
+
125
143
  after do
126
144
  ENV["EMBEDDED_DIR"] = nil
127
145
  ENV["GEM_HOME"] = nil
128
146
  ENV["GEM_PATH"] = nil
129
147
  ENV["GEMRC"] = nil
130
148
  ENV["PATH"] = @original_path
149
+ ENV["RUBYOPT"] = nil
150
+ end
151
+ end
152
+
153
+ context "run_remote" do
154
+ it "should generate a 'vagrant ssh -c' command" do
155
+ machine.stub(:name => "vm1")
156
+ @dsl.should_receive(:run).with("vagrant ssh -c '#{@command}' vm1", {})
157
+ @dsl.run_remote(@command, {})
131
158
  end
132
159
  end
133
160
  end
@@ -6,8 +6,10 @@ Gem::Specification.new do |spec|
6
6
  spec.version = VagrantPlugins::Triggers::VERSION
7
7
  spec.authors = "Emiliano Ticci"
8
8
  spec.email = "emiticci@gmail.com"
9
+ spec.homepage = "https://github.com/emyl/vagrant-triggers"
9
10
  spec.summary = "Triggers for Vagrant commands."
10
11
  spec.description = "This plugin allow the definition of arbitrary scripts that will run on the host before and/or after Vagrant commands."
12
+ spec.license = "MIT"
11
13
 
12
14
  # The following block of code determines the files that should be included
13
15
  # in the gem. It does this by reading all the files in the directory where
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-triggers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emiliano Ticci
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-04 00:00:00.000000000 Z
11
+ date: 2014-05-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -81,8 +81,9 @@ files:
81
81
  - vagrant-triggers.gemspec
82
82
  - .gitignore
83
83
  - .travis.yml
84
- homepage:
85
- licenses: []
84
+ homepage: https://github.com/emyl/vagrant-triggers
85
+ licenses:
86
+ - MIT
86
87
  metadata: {}
87
88
  post_install_message:
88
89
  rdoc_options: []