class Psychic::Runner::MagicTaskFactory
Attributes
cwd[R]
env[R]
hints[R]
known_tasks[R]
tasks[R]
Public Class Methods
known_tasks()
click to toggle source
# File lib/psychic/runner/magic_task_factory.rb, line 29 def known_tasks @known_tasks ||= [] end
magic_env_var(var)
click to toggle source
# File lib/psychic/runner/magic_task_factory.rb, line 25 def magic_env_var(var) magic_env_vars << var end
magic_env_vars()
click to toggle source
# File lib/psychic/runner/magic_task_factory.rb, line 21 def magic_env_vars @magic_env_vars ||= [] end
magic_file(pattern)
click to toggle source
# File lib/psychic/runner/magic_task_factory.rb, line 17 def magic_file(pattern) # rubocop:disable Style/TrivialAccessors magic_file_patterns << pattern end
magic_file_patterns()
click to toggle source
# File lib/psychic/runner/magic_task_factory.rb, line 13 def magic_file_patterns @magic_file_patterns ||= [] end
new(opts = {})
click to toggle source
# File lib/psychic/runner/magic_task_factory.rb, line 44 def initialize(opts = {}) @opts = opts init_attr(:cwd) { Dir.pwd } init_attr(:known_tasks) { self.class.known_tasks } init_attr(:tasks) { self.class.tasks } init_attr(:logger) { new_logger } init_attr(:env) { ENV.to_hash } end
register_task_factory()
click to toggle source
# File lib/psychic/runner/magic_task_factory.rb, line 9 def register_task_factory Psychic::Runner::TaskFactoryRegistry.register(self) end
task(name, &block)
click to toggle source
# File lib/psychic/runner/magic_task_factory.rb, line 37 def task(name, &block) name = name.to_s tasks[name] = block known_tasks << name end
tasks()
click to toggle source
# File lib/psychic/runner/magic_task_factory.rb, line 33 def tasks @tasks ||= {} end
Public Instance Methods
active?()
click to toggle source
# File lib/psychic/runner/magic_task_factory.rb, line 65 def active? self.class.magic_file_patterns.each do | pattern | return true unless Dir["#{@cwd}/#{pattern}"].empty? end self.class.magic_env_vars.each do | var | return true if ENV[var] end false end
build_task(task_name, *_args)
click to toggle source
# File lib/psychic/runner/magic_task_factory.rb, line 57 def build_task(task_name, *_args) task_name = task_name.to_s task = task_for(task_name) task = task.call if task.respond_to? :call fail Psychic::Runner::TaskNotImplementedError, task_name if task.nil? task end
known_task?(task_name)
click to toggle source
# File lib/psychic/runner/magic_task_factory.rb, line 75 def known_task?(task_name) known_tasks.include?(task_name.to_s) end
task_for(task_name)
click to toggle source
# File lib/psychic/runner/magic_task_factory.rb, line 53 def task_for(task_name) tasks[task_name] if tasks.include? task_name end
Private Instance Methods
init_attr(var) { || ... }
click to toggle source
# File lib/psychic/runner/magic_task_factory.rb, line 81 def init_attr(var) var_name = "@#{var}" var_value = @opts[var] var_value = yield if var_value.nil? && block_given? instance_variable_set(var_name, var_value) end
init_attrs(*vars)
click to toggle source
# File lib/psychic/runner/magic_task_factory.rb, line 88 def init_attrs(*vars) vars.each do | var | init_attr var end end