From 8fad4865bbb8312fa0b42dbe95b1af3160b54ff7 Mon Sep 17 00:00:00 2001 From: Chris Roberts Date: Mon, 23 Mar 2020 17:06:29 -0700 Subject: [PATCH] Update before trigger action to be generic trigger action --- lib/vagrant/action/builtin/before_trigger.rb | 26 ++++++++++++-------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/lib/vagrant/action/builtin/before_trigger.rb b/lib/vagrant/action/builtin/before_trigger.rb index 74a6f8754..8a79bc47c 100644 --- a/lib/vagrant/action/builtin/before_trigger.rb +++ b/lib/vagrant/action/builtin/before_trigger.rb @@ -1,26 +1,32 @@ module Vagrant module Action module Builtin - # This class is intended to be used by the Action::Warden class for executing - # action triggers before any given action. - class BeforeTriggerAction - # @param [Symbol] action_name - The action class name to fire trigger on - # @param [Vagrant::Plugin::V2::Triger] triggers - trigger object - def initialize(app, env, action_name, triggers, type=:action) + # This class is used within the Builder class for injecting triggers into + # different parts of the call stack. + class Trigger + # @param [Class, String, Symbol] name Name of trigger to fire + # @param [Vagrant::Plugin::V2::Triger] triggers Trigger object + # @param [Symbol] timing When trigger should fire (:before/:after) + # @param [Symbol] type Type of trigger + def initialize(app, env, name, triggers, timing, type=:action) @app = app @env = env @triggers = triggers - @action_name = action_name + @name = name + @timing = timing @type = type + + if ![:before, :after].include?(at) + raise ArgumentError, + "Invalid value provided for `timing` (allowed: :before or :after)" + end end def call(env) machine = env[:machine] machine_name = machine.name if machine - @triggers.fire(@action_name, :before, machine_name, @type) if - Vagrant::Util::Experimental.feature_enabled?("typed_triggers"); - + @triggers.fire(@name, @timing, machine_name, @type) # Carry on @app.call(env) end