class KuberKit::Core::ContextHelper::ContextVars

Constants

BuildArgUndefined

Attributes

parent[R]
parent_name[R]

Public Class Methods

new(context_vars, parent_name = nil, parent = nil) click to toggle source
# File lib/kuber_kit/core/context_helper/context_vars.rb, line 6
def initialize(context_vars, parent_name = nil, parent = nil)
  @context_vars = context_vars
  @parent_name  = parent_name
  @parent = parent
end

Public Instance Methods

get_variable_value(variable_name) click to toggle source
# File lib/kuber_kit/core/context_helper/context_vars.rb, line 43
def get_variable_value(variable_name)
  value = @context_vars.fetch(variable_name) do
    raise(BuildArgUndefined, "build arg '#{format_arg(variable_name)}' is not defined, available args: #{@context_vars.inspect}")
  end

  if value.is_a?(Hash)
    return self.class.new(value, variable_name, self)
  end

  value
end
method_missing(name, *args) click to toggle source
# File lib/kuber_kit/core/context_helper/context_vars.rb, line 27
def method_missing(name, *args)
  if args.size > 0
    raise ArgumentError.new("context args does not accept any arguments")
  end

  read(name)
end
read(*variable_names) click to toggle source
# File lib/kuber_kit/core/context_helper/context_vars.rb, line 12
def read(*variable_names)
  result = self
  variable_names.each do |var|
    result = result.get_variable_value(var)
  end
  result
end
to_h() click to toggle source
# File lib/kuber_kit/core/context_helper/context_vars.rb, line 35
def to_h
  if @context_vars.is_a?(Hash)
    return @context_vars
  else
    return {value: @context_vars}
  end
end
variable_defined?(*variable_names) click to toggle source
# File lib/kuber_kit/core/context_helper/context_vars.rb, line 20
def variable_defined?(*variable_names)
  read(*variable_names) 
  return true
rescue BuildArgUndefined
  return false
end

Private Instance Methods

format_arg(name) click to toggle source
# File lib/kuber_kit/core/context_helper/context_vars.rb, line 57
def format_arg(name)
  string = [@parent_name, name].compact.join(".")
  parent = @parent

  while parent do
    string = [parent.parent_name, string].compact.join(".")
    parent = parent.parent
  end

  string
end