Class: KuberKit::Core::ImageFactory

Inherits:
Object
  • Object
show all
Defined in:
lib/kuber_kit/core/image_factory.rb

Instance Method Summary collapse

Instance Method Details

#create(definition) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/kuber_kit/core/image_factory.rb', line 8

def create(definition)
  image_attrs = definition.to_image_attrs

  dockerfile_path = image_attrs.dockerfile_path || File.join(image_attrs.dir, configs.image_dockerfile_name)
  file_presence_checker.check_file!(dockerfile_path)

  if image_attrs.build_context_dir
    file_presence_checker.check_dir!(image_attrs.build_context_dir)
    build_context_dir = image_attrs.build_context_dir
  else
    default_dir = File.join(image_attrs.dir, configs.image_build_context_dir)
    build_context_dir = file_presence_checker.dir_exists?(default_dir) ? default_dir : nil
  end

  if image_attrs.registry_name
    registry = registry_store.get(image_attrs.registry_name)
  else
    registry = registry_store.default_registry
  end

  KuberKit::Core::Image.new(
    name:                   image_attrs.name,
    dependencies:           image_attrs.dependencies,
    registry:               registry,
    dockerfile_path:        dockerfile_path,
    build_vars:             image_attrs.build_vars || {},
    build_context_dir:      build_context_dir,
    tag:                    image_attrs.tag || configs.image_tag,
    before_build_callback:  image_attrs.before_build_callback,
    after_build_callback:   image_attrs.after_build_callback
  )
end