Sha256: fc9d6c4f1ead0abca923ddbe5b23cbd02c1d8398b209875ab17e56344c6f6cd2
Contents?: true
Size: 1.62 KB
Versions: 2
Compression:
Stored size: 1.62 KB
Contents
module Psychic class Runner module BaseRunner include Psychic::Shell include Psychic::Logger attr_reader :known_tasks attr_reader :cwd module ClassMethods attr_accessor :magic_file_pattern def register_runner Psychic::Runner::ColdRunnerRegistry.register(self) end def magic_file(pattern) # rubocop:disable Style/TrivialAccessors @magic_file_pattern = pattern end end def self.included(base) base.extend(ClassMethods) end def initialize(opts = {}) opts[:cwd] ||= Dir.pwd @logger = opts[:logger] || new_logger @cwd = opts[:cwd] @opts = opts end def respond_to_missing?(task, include_all = false) return true if known_tasks.include?(task.to_s) super end def method_missing(task, *args, &block) execute_task(task, *args) rescue Psychic::Runner::TaskNotImplementedError super end # Reserved words def execute(command, *args) full_cmd = [command, *args].join(' ') logger.info("Executing #{full_cmd}") shell.execute(full_cmd, @opts) end def command_for_task(task, *_args) task_name = task.to_s self[task_name] end def execute_task(task, *args) command = command_for_task(task, *args) fail Psychic::Runner::TaskNotImplementedError if command.nil? execute(command, *args) end def active? self.class.magic_file_pattern ? false : Dir["#{@cwd}/#{self.class.magic_file_pattern}"] end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
psychic-runner-0.0.3 | lib/psychic/runner/base_runner.rb |
psychic-runner-0.0.2 | lib/psychic/runner/base_runner.rb |