class Indocker::ContextArgs

Attributes

name[R]
parent[R]

Public Class Methods

new(name, context_args, parent, container = nil) click to toggle source
# File lib/indocker/context_args.rb, line 4
def initialize(name, context_args, parent, container = nil)
  @name = name
  @parent = parent
  @container = container
  @context_args = context_args
end

Public Instance Methods

method_missing(name, *args) click to toggle source
# File lib/indocker/context_args.rb, line 11
def method_missing(name, *args)
  if args.size > 0
    raise ArgumentError.new("context args does not accept any arguments")
  end

  value = @context_args.fetch(name) do
    Indocker.logger.warn("build arg '#{format_arg(name)}' is not defined#{@container ? " for container :#{@container.name}" : ""}")
    Indocker.logger.warn("available args: #{@context_args.inspect}")

    nil
  end

  if value.is_a?(Hash)
    Indocker::ContextArgs.new(name, value, self, @container)
  else
    value
  end
end

Private Instance Methods

format_arg(name) click to toggle source
# File lib/indocker/context_args.rb, line 32
def format_arg(name)
  string = name
  parent = @parent

  while parent do
    name = parent.name
    string = "#{name}.#{string}" if name
    parent = parent.parent
    break if !parent
  end

  string
end