class Roadworker::DSL

Attributes

result[R]

Public Class Methods

convert(hosted_zones) click to toggle source
# File lib/roadworker/dsl.rb, line 12
def convert(hosted_zones)
  Converter.convert(hosted_zones)
end
define(source, path, lineno = 1) click to toggle source
# File lib/roadworker/dsl.rb, line 6
def define(source, path, lineno = 1)
  self.new(path) do
    eval(source, binding, path, lineno)
  end
end
new(path, &block) click to toggle source
# File lib/roadworker/dsl.rb, line 29
def initialize(path, &block)
  @path = path
  @result = OpenStruct.new({:hosted_zones => []})

  @context = Hashie::Mash.new(
    :path => path,
    :templates => {}
  )

  instance_eval(&block)
end
normalize_dns_name(name) click to toggle source
# File lib/roadworker/dsl.rb, line 20
def normalize_dns_name(name)
  # Normalize name. AWS always returns name with trailing dot, and stores name always lowercase.
  # https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DomainNameFormat.html
  "#{name.downcase}.".sub(/\.+\z/, '.')
end
test(dsl, options) click to toggle source
# File lib/roadworker/dsl.rb, line 16
def test(dsl, options)
  Tester.test(dsl, options)
end

Public Instance Methods

template(name, &block) click to toggle source
# File lib/roadworker/dsl.rb, line 41
def template(name, &block)
  @context.templates[name.to_s] = block
end

Private Instance Methods

hosted_zone(name, id = nil, &block) click to toggle source
# File lib/roadworker/dsl.rb, line 59
def hosted_zone(name, id = nil, &block)
  @result.hosted_zones << Hostedzone.new(@context, name, id, [], &block).result
end
require(file) click to toggle source
# File lib/roadworker/dsl.rb, line 47
def require(file)
  routefile = (file =~ %r|\A/|) ? file : File.expand_path(File.join(File.dirname(@path), file))

  if File.exist?(routefile)
    instance_eval(File.read(routefile), routefile)
  elsif File.exist?(routefile + '.rb')
    instance_eval(File.read(routefile + '.rb'), routefile + '.rb')
  else
    Kernel.require(file)
  end
end