class Omnitest::Psychic::MagicTaskFactory

Constants

TASK_PRIORITY

Attributes

hints[R]
known_tasks[R]
priority[R]
psychic[R]
tasks[R]

Public Class Methods

known_tasks() click to toggle source
# File lib/omnitest/psychic/magic_task_factory.rb, line 33
def known_tasks
  @known_tasks ||= []
end
magic_env_var(var) click to toggle source
# File lib/omnitest/psychic/magic_task_factory.rb, line 29
def magic_env_var(var)
  magic_env_vars << var
end
magic_env_vars() click to toggle source
# File lib/omnitest/psychic/magic_task_factory.rb, line 25
def magic_env_vars
  @magic_env_vars ||= []
end
magic_file(pattern) click to toggle source
# File lib/omnitest/psychic/magic_task_factory.rb, line 21
def magic_file(pattern) # rubocop:disable Style/TrivialAccessors
  magic_file_patterns << pattern
end
magic_file_patterns() click to toggle source
# File lib/omnitest/psychic/magic_task_factory.rb, line 17
def magic_file_patterns
  @magic_file_patterns ||= []
end
new(psychic, opts = {}) click to toggle source
# File lib/omnitest/psychic/magic_task_factory.rb, line 48
def initialize(psychic, opts = {})
  @psychic = psychic
  @opts = opts
  @priority = self.class::TASK_PRIORITY
  init_attr(:known_tasks) { self.class.known_tasks }
  init_attr(:tasks) { self.class.tasks }
end
register_task_factory() click to toggle source
# File lib/omnitest/psychic/magic_task_factory.rb, line 13
def register_task_factory
  Omnitest::Psychic::TaskFactoryManager.register_factory(self)
end
task(name, &block) click to toggle source
# File lib/omnitest/psychic/magic_task_factory.rb, line 41
def task(name, &block)
  name = name.to_s
  tasks[name] = block
  known_tasks << name
end
tasks() click to toggle source
# File lib/omnitest/psychic/magic_task_factory.rb, line 37
def tasks
  @tasks ||= {}
end

Public Instance Methods

active?() click to toggle source
# File lib/omnitest/psychic/magic_task_factory.rb, line 64
def active?
  self.class.magic_file_patterns.each do | pattern |
    return true unless Dir.glob("#{cwd}/#{pattern}", File::FNM_CASEFOLD).empty?
  end
  self.class.magic_env_vars.each do | var |
    return true if ENV[var]
  end
  false
end
known_task?(task_alias) click to toggle source
# File lib/omnitest/psychic/magic_task_factory.rb, line 74
def known_task?(task_alias)
  known_tasks.include?(task_alias.to_s)
end
priority_for_task(task_alias) click to toggle source
# File lib/omnitest/psychic/magic_task_factory.rb, line 78
def priority_for_task(task_alias)
  priority if known_task? task_alias
end
task(task_alias, *_args) click to toggle source
# File lib/omnitest/psychic/magic_task_factory.rb, line 56
def task(task_alias, *_args)
  task_alias = task_alias.to_s
  task = tasks[task_alias] if tasks.include? task_alias
  task = instance_eval(&task) if task.respond_to? :call
  fail Omnitest::Psychic::TaskNotImplementedError, task_alias if task.nil?
  task
end

Private Instance Methods

init_attr(var) { || ... } click to toggle source
# File lib/omnitest/psychic/magic_task_factory.rb, line 84
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/omnitest/psychic/magic_task_factory.rb, line 91
def init_attrs(*vars)
  vars.each do | var |
    init_attr var
  end
end