class Kontena::Cli::Apps::YAML::ServiceExtender

Attributes

service_config[R]

Public Class Methods

new(service_config) click to toggle source

@param [Hash] service_config

# File lib/kontena/cli/apps/yaml/service_extender.rb, line 10
def initialize(service_config)
  @service_config = service_config
end

Public Instance Methods

extend(from) click to toggle source

@param [Hash] from @return [Hash]

# File lib/kontena/cli/apps/yaml/service_extender.rb, line 16
def extend(from)
  service_config['environment'] = extend_env_vars(
    from['environment'],
    service_config['environment']
  )
  service_config['secrets'] = extend_secrets(
    from['secrets'],
    service_config['secrets']
  )
  build_args = extend_build_args(safe_dig(from, 'build', 'args'), safe_dig(service_config, 'build', 'args'))
  unless build_args.empty?
    service_config['build'] = {} unless service_config['build']
    service_config['build']['args'] = build_args
  end

  from.merge(service_config)
end

Private Instance Methods

extend_build_args(from, to) click to toggle source
# File lib/kontena/cli/apps/yaml/service_extender.rb, line 66
def extend_build_args(from, to)
  args = to || {}
  if from
    from.each do |k,v|
      args[k] = v unless args.has_key?(k)
    end
  end
  args
end
extend_env_vars(from, to) click to toggle source

@param [Array] from @param [Array] to @return [Array]

# File lib/kontena/cli/apps/yaml/service_extender.rb, line 39
def extend_env_vars(from, to)
  env_vars = to || []
  if from
    from.each do |env|
      env_vars << env unless to && to.find do |key|
        key.split('=').first == env.split('=').first
      end
    end
  end
  env_vars
end
extend_secrets(from, to) click to toggle source

@param [Array] from @param [Array] to @return [Array]

# File lib/kontena/cli/apps/yaml/service_extender.rb, line 54
def extend_secrets(from, to)
  secrets = to || []
  if from
    from.each do |from_secret|
      secrets << from_secret unless to && to.any? do |to_secret|
        to_secret['secret'] == from_secret['secret']
      end
    end
  end
  secrets
end