class Dk::Config

Constants

DEFAULT_CALLBACKS
DEFAULT_HOST_SSH_ARGS
DEFAULT_INIT_PROCS
DEFAULT_LOG_FILE_PATTERN
DEFAULT_LOG_PATTERN
DEFAULT_PARAMS
DEFAULT_SSH_ARGS
DEFAULT_SSH_HOSTS
DEFAULT_STDOUT_LOG_LEVEL
DEFAULT_STUBS
DEFAULT_TASKS
DryTreeStub
FILE_LOG_LEVEL
UnknownTaskError

Attributes

after_callbacks[R]
before_callbacks[R]
dry_tree_cmd_stubs[R]
dry_tree_ssh_stubs[R]
init_procs[R]
params[R]
prepend_after_callbacks[R]
prepend_before_callbacks[R]
tasks[R]

Public Class Methods

new() click to toggle source
# File lib/dk/config.rb, line 36
def initialize
  @init_procs               = DEFAULT_INIT_PROCS.dup
  @params                   = DEFAULT_PARAMS.dup
  @before_callbacks         = DEFAULT_CALLBACKS.dup
  @prepend_before_callbacks = DEFAULT_CALLBACKS.dup
  @after_callbacks          = DEFAULT_CALLBACKS.dup
  @prepend_after_callbacks  = DEFAULT_CALLBACKS.dup
  @ssh_hosts                = DEFAULT_SSH_HOSTS.dup
  @ssh_args                 = DEFAULT_SSH_ARGS.dup
  @host_ssh_args            = DEFAULT_HOST_SSH_ARGS.dup
  @tasks                    = DEFAULT_TASKS.dup
  @stdout_log_level         = DEFAULT_STDOUT_LOG_LEVEL
  @log_pattern              = DEFAULT_LOG_PATTERN
  @log_file                 = nil
  @log_file_pattern         = DEFAULT_LOG_FILE_PATTERN
  @dry_tree_cmd_stubs       = DEFAULT_STUBS.dup
  @dry_tree_ssh_stubs       = DEFAULT_STUBS.dup
end

Public Instance Methods

after(subject_task_class, callback_task_class, params = nil) click to toggle source
# File lib/dk/config.rb, line 77
def after(subject_task_class, callback_task_class, params = nil)
  self.after_callbacks[subject_task_class] << Task::Callback.new(
    callback_task_class,
    params
  )
end
after_callback_task_classes(for_task_class) click to toggle source
# File lib/dk/config.rb, line 99
def after_callback_task_classes(for_task_class)
  self.after_callbacks[for_task_class].map(&:task_class)
end
before(subject_task_class, callback_task_class, params = nil) click to toggle source
# File lib/dk/config.rb, line 63
def before(subject_task_class, callback_task_class, params = nil)
  self.before_callbacks[subject_task_class] << Task::Callback.new(
    callback_task_class,
    params
  )
end
before_callback_task_classes(for_task_class) click to toggle source
# File lib/dk/config.rb, line 91
def before_callback_task_classes(for_task_class)
  self.before_callbacks[for_task_class].map(&:task_class)
end
dk_logger() click to toggle source
# File lib/dk/config.rb, line 173
def dk_logger
  @dk_logger ||= LogslyLogger.new(self)
end
dk_logger_file_output_name() click to toggle source
# File lib/dk/config.rb, line 168
def dk_logger_file_output_name
  # include the object id to ensure the output is unique to the instance
  @dk_logger_file_output_name ||= "dk-config-#{self.object_id}-file"
end
dk_logger_stdout_output_name() click to toggle source

private - intended for internal use only

# File lib/dk/config.rb, line 163
def dk_logger_stdout_output_name
  # include the object id to ensure the output is unique to the instance
  @dk_logger_stdout_output_name ||= "dk-config-#{self.object_id}-stdout"
end
init() click to toggle source
# File lib/dk/config.rb, line 55
def init
  self.init_procs.each{ |block| self.instance_eval(&block) }
end
log_file(value = nil) click to toggle source
# File lib/dk/config.rb, line 127
def log_file(value = nil)
  @log_file = value if !value.nil?
  @log_file
end
log_file_pattern(value = nil) click to toggle source
# File lib/dk/config.rb, line 132
def log_file_pattern(value = nil)
  @log_file_pattern = value if !value.nil?
  @log_file_pattern
end
log_pattern(value = nil) click to toggle source
# File lib/dk/config.rb, line 122
def log_pattern(value = nil)
  @log_pattern = value if !value.nil?
  @log_pattern
end
prepend_after(subject_task_class, callback_task_class, params = nil) click to toggle source
# File lib/dk/config.rb, line 84
def prepend_after(subject_task_class, callback_task_class, params = nil)
  self.prepend_after_callbacks[subject_task_class].unshift(Task::Callback.new(
    callback_task_class,
    params
  ))
end
prepend_after_callback_task_classes(for_task_class) click to toggle source
# File lib/dk/config.rb, line 103
def prepend_after_callback_task_classes(for_task_class)
  self.prepend_after_callbacks[for_task_class].map(&:task_class)
end
prepend_before(subject_task_class, callback_task_class, params = nil) click to toggle source
# File lib/dk/config.rb, line 70
def prepend_before(subject_task_class, callback_task_class, params = nil)
  self.prepend_before_callbacks[subject_task_class].unshift(Task::Callback.new(
    callback_task_class,
    params
  ))
end
prepend_before_callback_task_classes(for_task_class) click to toggle source
# File lib/dk/config.rb, line 95
def prepend_before_callback_task_classes(for_task_class)
  self.prepend_before_callbacks[for_task_class].map(&:task_class)
end
set_param(key, value) click to toggle source
# File lib/dk/config.rb, line 59
def set_param(key, value)
  self.params.merge!(dk_normalize_params(key => value))
end
stdout_log_level(value = nil) click to toggle source
# File lib/dk/config.rb, line 117
def stdout_log_level(value = nil)
  @stdout_log_level = value if !value.nil?
  @stdout_log_level
end
stub_dry_tree_cmd(cmd_str, args = nil, &block) click to toggle source
# File lib/dk/config.rb, line 137
def stub_dry_tree_cmd(cmd_str, args = nil, &block)
  args ||= {}

  cmd_str_proc    = get_cmd_ssh_proc(cmd_str)
  input_proc      = get_cmd_ssh_proc(args[:input])
  given_opts_proc = get_cmd_ssh_proc(args[:opts])

  @dry_tree_cmd_stubs.unshift(
    DryTreeStub.new(cmd_str_proc, input_proc, given_opts_proc, block)
  )
end
stub_dry_tree_ssh(cmd_str, args = nil, &block) click to toggle source
# File lib/dk/config.rb, line 149
def stub_dry_tree_ssh(cmd_str, args = nil, &block)
  args ||= {}

  cmd_str_proc    = get_cmd_ssh_proc(cmd_str)
  input_proc      = get_cmd_ssh_proc(args[:input])
  given_opts_proc = get_cmd_ssh_proc(args[:opts])

  @dry_tree_ssh_stubs.unshift(
    DryTreeStub.new(cmd_str_proc, input_proc, given_opts_proc, block)
  )
end
task(name, task_class = nil) click to toggle source
# File lib/dk/config.rb, line 107
def task(name, task_class = nil)
  if !task_class.nil?
    if !task_class.kind_of?(Class) || !task_class.include?(Dk::Task)
      raise ArgumentError, "#{task_class.inspect} is not a Dk::Task"
    end
    @tasks[name.to_s] = task_class
  end
  @tasks[name.to_s]
end

Private Instance Methods

get_cmd_ssh_proc(obj) click to toggle source
# File lib/dk/config.rb, line 179
def get_cmd_ssh_proc(obj)
  obj.kind_of?(::Proc) ? obj : proc{ obj }
end