vagrant-triggers 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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: []