class Entangler::Executor::Base

Attributes

base_dir[R]

Public Class Methods

new(base_dir, opts = {}) click to toggle source
# File lib/entangler/executor/base.rb, line 16
def initialize(base_dir, opts = {})
  validate_base_dir(base_dir)
  @base_dir = File.realpath(File.expand_path(base_dir))
  @recently_received_paths = []
  @listener_pauses = [false, false]
  @opts = opts
  @opts[:ignore] = [%r{^\.git(?:/[^/]+)*$}] unless @opts.key?(:ignore)
  @opts[:ignore] << /^\.entangler.*/

  validate_opts
  Entangler::Logger.create_log_dir(base_dir)
end

Public Instance Methods

generate_abs_path(rel_path) click to toggle source
# File lib/entangler/executor/base.rb, line 29
def generate_abs_path(rel_path)
  File.join(base_dir, rel_path)
end
run() click to toggle source
# File lib/entangler/executor/base.rb, line 37
def run
  logger.info("Entangler v#{Entangler::VERSION}")
  start_listener
  start_remote_io
  Signal.trap('INT') { kill_off_threads }
  logger.info('Ready!')
  wait_for_threads
ensure
  stop_listener
  logger.info('Stopping Entangler')
end
strip_base_path(path, base_dir = self.base_dir) click to toggle source
# File lib/entangler/executor/base.rb, line 33
def strip_base_path(path, base_dir = self.base_dir)
  File.expand_path(path).sub(base_dir, '')
end

Protected Instance Methods

log_outputs() click to toggle source
# File lib/entangler/executor/base.rb, line 59
def log_outputs
  [Entangler::Logger.log_file_path(base_dir)]
end
logger() click to toggle source
# File lib/entangler/executor/base.rb, line 55
def logger
  @logger ||= Entangler::Logger.new(log_outputs, verbose: @opts[:verbose])
end
send_to_remote(msg = {}) click to toggle source
# File lib/entangler/executor/base.rb, line 51
def send_to_remote(msg = {})
  Marshal.dump(msg, @remote_writer)
end