Class: Vagrant::Plugin::V2::Trigger
- Inherits:
-
Object
- Object
- Vagrant::Plugin::V2::Trigger
- Defined in:
- lib/vagrant/plugin/v2/trigger.rb
Instance Attribute Summary collapse
- #config ⇒ Kernel_V2::Config::Trigger readonly
Instance Method Summary collapse
-
#find(name, stage, guest, type, all: false) ⇒ Array
Find all triggers defined for the named type and guest.
-
#fire(name, stage, guest, type, all: false) ⇒ Object
Fires all triggers, if any are defined for the named type and guest.
-
#initialize(env, config, machine, ui) ⇒ Trigger
constructor
This class is responsible for setting up basic triggers that were defined inside a Vagrantfile.
Constructor Details
#initialize(env, config, machine, ui) ⇒ Trigger
This class is responsible for setting up basic triggers that were defined inside a Vagrantfile.
24 25 26 27 28 29 30 31 |
# File 'lib/vagrant/plugin/v2/trigger.rb', line 24 def initialize(env, config, machine, ui) @env = env @config = config @machine = machine @ui = ui @logger = Log4r::Logger.new("vagrant::trigger::#{self.class.to_s.downcase}") end |
Instance Attribute Details
#config ⇒ Kernel_V2::Config::Trigger (readonly)
15 16 17 |
# File 'lib/vagrant/plugin/v2/trigger.rb', line 15 def config @config end |
Instance Method Details
#find(name, stage, guest, type, all: false) ⇒ Array
Find all triggers defined for the named type and guest.
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/vagrant/plugin/v2/trigger.rb', line 69 def find(name, stage, guest, type, all: false) triggers = nil name = nameify(name) if stage == :before triggers = config.before_triggers.select do |t| (all && t.command.respond_to?(:to_sym) && t.command.to_sym == :all && !t.ignore.include?(name.to_sym)) || (type == :hook && matched_hook?(t.command, name)) || nameify(t.command) == name end elsif stage == :after triggers = config.after_triggers.select do |t| (all && t.command.respond_to?(:to_sym) && t.command.to_sym == :all && !t.ignore.include?(name.to_sym)) || (type == :hook && matched_hook?(t.command, name)) || nameify(t.command) == name end else raise Errors::TriggersNoStageGiven, name: name, stage: stage, type: type, guest_name: guest end filter_triggers(triggers, guest, type) end |
#fire(name, stage, guest, type, all: false) ⇒ Object
Fires all triggers, if any are defined for the named type and guest. Returns early
and logs a warning if the community plugin vagrant-triggers
is installed
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/vagrant/plugin/v2/trigger.rb', line 40 def fire(name, stage, guest, type, all: false) if community_plugin_detected? @logger.warn("Community plugin `vagrant-triggers detected, so core triggers will not fire") return end return @logger.warn("Name given is nil, no triggers will fire") if !name return @logger.warn("Name given cannot be symbolized, no triggers will fire") if !name.respond_to?(:to_sym) name = name.to_sym # get all triggers matching action triggers = find(name, stage, guest, type, all: all) if !triggers.empty? @logger.info("Firing trigger for #{type} #{name} on guest #{guest}") @ui.info(I18n.t("vagrant.trigger.start", type: type, stage: stage, name: name)) execute(triggers) end end |