class Outback::Configuration

Attributes

errors[R]
name[R]
processors[R]
sources[R]
targets[R]

Public Class Methods

[](name) click to toggle source
# File lib/outback/configuration.rb, line 16
def [](name)
  loaded.detect { |configuration| configuration.name == name.to_s }
end
add(configuration) click to toggle source
# File lib/outback/configuration.rb, line 7
def add(configuration)
  raise ConfigurationError, "duplicate configuration #{configuration.name}" if loaded.any?(&its.name == configuration.name)
  loaded << configuration
end
loaded() click to toggle source
# File lib/outback/configuration.rb, line 12
def loaded
  @loaded
end
new(name) { |self| ... } click to toggle source
# File lib/outback/configuration.rb, line 27
def initialize(name, &block)
  name = name.to_s
  raise ConfigurationError, "Illegal configuration name #{name.inspect}" unless name.match(/\A[a-z][a-z0-9_\-.]+\z/)
  @name = name
  @sources, @processors, @targets, @errors = [], [], [], []
  if block_given?
    if block.arity == 1 then yield(self) else instance_eval(&block) end
  end
  self.class.add(self)
end
reset() click to toggle source
# File lib/outback/configuration.rb, line 20
def reset
  @loaded = []
end

Public Instance Methods

tmpdir(*args) click to toggle source
# File lib/outback/configuration.rb, line 47
def tmpdir(*args)
  if args.empty?
    @tmpdir
  elsif args.size == 1
    dir = Pathname.new(args.first).realpath
    raise ConfigurationError, "tmpdir #{dir} is not a directory" unless dir.directory?
    @tmpdir = dir
  else
    raise ConfigurationError, "tmpdir: wrong number of arguments(#{args.size} for 1)"
  end
end
valid?() click to toggle source
# File lib/outback/configuration.rb, line 38
def valid?
  errors.clear
  return error('no targets specified') if targets.empty?
  moving_targets = targets.select { |t| t.is_a?(DirectoryTarget) && t.move }
  return error('cannot define more than one moving target') if moving_targets.size > 1
  return error('moving target must be defined last') if moving_targets.first && moving_targets.first != targets.last
  true
end

Protected Instance Methods

error(message) click to toggle source
# File lib/outback/configuration.rb, line 73
def error(message)
  errors << ConfigurationError.new(message)
  false
end
processor(type, *args, &block) click to toggle source
# File lib/outback/configuration.rb, line 65
def processor(type, *args, &block)
  "Outback::#{type.to_s.classify}Processor".constantize.configure(name, *args, &block).tap { |instance| processors << instance }
end
source(type, *args, &block) click to toggle source
# File lib/outback/configuration.rb, line 61
def source(type, *args, &block)
  "Outback::#{type.to_s.classify}Source".constantize.configure(name, *args, &block).tap { |instance| sources << instance }
end
target(type, *args, &block) click to toggle source
# File lib/outback/configuration.rb, line 69
def target(type, *args, &block)
  "Outback::#{type.to_s.classify}Target".constantize.configure(name, *args, &block).tap { |instance| targets << instance }
end