Sha256: 124791c2610145f924185b1de90183f671eb64f4be5cbfd51c5d3a2c49055c82

Contents?: true

Size: 998 Bytes

Versions: 22

Compression:

Stored size: 998 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}")

      nil
    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

22 entries across 22 versions & 1 rubygems

Version Path
indocker-0.3.9 lib/indocker/context_args.rb
indocker-0.3.8 lib/indocker/context_args.rb
indocker-0.3.7 lib/indocker/context_args.rb
indocker-0.3.6 lib/indocker/context_args.rb
indocker-0.3.5 lib/indocker/context_args.rb
indocker-0.3.4 lib/indocker/context_args.rb
indocker-0.3.3 lib/indocker/context_args.rb
indocker-0.3.2 lib/indocker/context_args.rb
indocker-0.1.18 lib/indocker/context_args.rb
indocker-0.3.1 lib/indocker/context_args.rb
indocker-0.3.0 lib/indocker/context_args.rb
indocker-0.1.17 lib/indocker/context_args.rb
indocker-0.1.16 lib/indocker/context_args.rb
indocker-0.1.15 lib/indocker/context_args.rb
indocker-0.1.14 lib/indocker/context_args.rb
indocker-0.1.13 lib/indocker/context_args.rb
indocker-0.1.12 lib/indocker/context_args.rb
indocker-0.1.11 lib/indocker/context_args.rb
indocker-0.1.10 lib/indocker/context_args.rb
indocker-0.1.9 lib/indocker/context_args.rb