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