class Inprovise::TriggerRunner
Trigger runner for Inprovise
- Author
-
Martin Corino
- License
-
Distributes under the same license as Ruby
Public Class Methods
new(node, action_ref_with_args, skip_dependencies=false)
click to toggle source
# File lib/inprovise/trigger_runner.rb, line 7 def initialize(node, action_ref_with_args, skip_dependencies=false) @node = node @action_ref, @args = *parse_action_ref(action_ref_with_args) @log = Inprovise::Logger.new(@node, @action_ref) @skip_dependencies = skip_dependencies @index = Inprovise::ScriptIndex.default end
Private Class Methods
eval(s)
click to toggle source
# File lib/inprovise/trigger_runner.rb, line 57 def self.eval(s); binding.eval(s); end
Public Instance Methods
demonstrate(_, config=nil)
click to toggle source
# File lib/inprovise/trigger_runner.rb, line 27 def demonstrate(_, config=nil) Inprovise.log.local("Demonstrating trigger #{@action_ref} for #{@node.to_s}") context = Inprovise::MockExecutionContext.new(@node, @log, @index, config) scr, action = context.resolve_action_ref(@action_ref) setup_configuration(scr, context) if scr context.trigger(scr, action, *@args) end
execute(_, config=nil)
click to toggle source
# File lib/inprovise/trigger_runner.rb, line 19 def execute(_, config=nil) Inprovise.log.local("Triggering #{@action_ref} for #{@node.to_s}") context = Inprovise::ExecutionContext.new(@node, @log, @index, config) scr, action = context.resolve_action_ref(@action_ref) setup_configuration(scr, context) if scr context.trigger(scr, action, *@args) end
set_index(index)
click to toggle source
# File lib/inprovise/trigger_runner.rb, line 15 def set_index(index) @index = index end
Private Instance Methods
get_arg_value(v)
click to toggle source
# File lib/inprovise/trigger_runner.rb, line 55 def get_arg_value(v) begin Module.new { def self.eval(s); binding.eval(s); end }.eval(v) rescue Exception v end end
parse_action_ref(action_ref_with_args)
click to toggle source
# File lib/inprovise/trigger_runner.rb, line 63 def parse_action_ref(action_ref_with_args) matches = action_ref_with_args.match(/([\w\-\:]+?)(\[(.+?)\])/) return [action_ref_with_args,[]] unless matches action_ref = matches[1] args = matches[3].split(',').map { |arg| get_arg_value(arg.strip) } [action_ref, args] end
scripts(script)
click to toggle source
# File lib/inprovise/trigger_runner.rb, line 37 def scripts(script) return [script] if @skip_dependencies resolver = Inprovise::Resolver.new(script, @index) resolver.resolve resolver.scripts end
setup_configuration(script, context)
click to toggle source
# File lib/inprovise/trigger_runner.rb, line 44 def setup_configuration(script, context) script_list = scripts(script) script_list.each { |scr| scr.update_configuration(context) } script_list.each do |scr| context.log.set_task(scr) context.log.command(:configure) context.script = scr scr.command(:configure).each {|cmd| context.exec_config(cmd) } end end