Sha256: cda6d285fdb004ffebd8f4e8f20ce6aad2e9f1f4b95a648ce9f88a91c066ba2f

Contents?: true

Size: 987 Bytes

Versions: 3

Compression:

Stored size: 987 Bytes

Contents

class Indocker::ContextArgs
  attr_reader :parent, :name

  def initialize(name, context_args, parent, container = nil)
    @name = name
    @parent = parent
    @container = container
    @context_args = context_args
  end

  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}")
    end

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

  private

  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
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
indocker-0.1.6 lib/indocker/context_args.rb
indocker-0.1.5 lib/indocker/context_args.rb
indocker-0.1.4 lib/indocker/context_args.rb