From c6a2d01cdf4574cb84fb81cfe12b348955c6399f Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Sat, 30 Mar 2013 14:51:10 -0700 Subject: [PATCH] Allow disabling prepend/append hooks --- lib/vagrant/action/hook.rb | 20 ++++++++++++-------- test/unit/vagrant/action/hook_test.rb | 19 +++++++++++++++++++ 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/lib/vagrant/action/hook.rb b/lib/vagrant/action/hook.rb index 3f1b09571..21881e8ba 100644 --- a/lib/vagrant/action/hook.rb +++ b/lib/vagrant/action/hook.rb @@ -69,15 +69,19 @@ module Vagrant # called directly. # # @param [Builder] builder - def apply(builder) - # Prepends first - @prepend_hooks.each do |klass, args, block| - builder.insert(0, klass, *args, &block) - end + def apply(builder, options=nil) + options ||= {} - # Appends - @append_hooks.each do |klass, args, block| - builder.use(klass, *args, &block) + if !options[:no_prepend_or_append] + # Prepends first + @prepend_hooks.each do |klass, args, block| + builder.insert(0, klass, *args, &block) + end + + # Appends + @append_hooks.each do |klass, args, block| + builder.use(klass, *args, &block) + end end # Before hooks diff --git a/test/unit/vagrant/action/hook_test.rb b/test/unit/vagrant/action/hook_test.rb index 6f3aae516..27b9efe54 100644 --- a/test/unit/vagrant/action/hook_test.rb +++ b/test/unit/vagrant/action/hook_test.rb @@ -97,5 +97,24 @@ describe Vagrant::Action::Hook do ["9", [], nil] ] end + + it "should not prepend or append if disabled" do + builder.use("3") + builder.use("8") + + subject.prepend("1", 2) + subject.append("9") + subject.after("3", "4") + subject.before("8", "7") + + subject.apply(builder, no_prepend_or_append: true) + + builder.stack.should == [ + ["3", [], nil], + ["4", [], nil], + ["7", [], nil], + ["8", [], nil] + ] + end end end