Class: Kamal::Configuration::Builder

Inherits:
Object
  • Object
show all
Includes:
Validation
Defined in:
lib/kamal/configuration/builder.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Validation

#validate!, #validation_yml

Constructor Details

#initialize(config:) ⇒ Builder

Returns a new instance of Builder.



8
9
10
11
12
13
14
15
16
# File 'lib/kamal/configuration/builder.rb', line 8

def initialize(config:)
  @config = config
  @builder_config = config.raw_config.builder || {}
  @image = config.image
  @server = config.registry.server
  @service = config.service

  validate! builder_config, with: Kamal::Configuration::Validator::Builder
end

Instance Attribute Details

#builder_configObject (readonly)

Returns the value of attribute builder_config.



4
5
6
# File 'lib/kamal/configuration/builder.rb', line 4

def builder_config
  @builder_config
end

#configObject (readonly)

Returns the value of attribute config.



4
5
6
# File 'lib/kamal/configuration/builder.rb', line 4

def config
  @config
end

Instance Method Details

#argsObject



38
39
40
# File 'lib/kamal/configuration/builder.rb', line 38

def args
  builder_config["args"] || {}
end

#build_directoryObject



108
109
110
111
112
113
114
115
# File 'lib/kamal/configuration/builder.rb', line 108

def build_directory
  @build_directory ||=
    if git_clone?
      File.join clone_directory, repo_basename, repo_relative_pwd
    else
      "."
    end
end

#cache_fromObject



74
75
76
77
78
79
80
81
82
83
# File 'lib/kamal/configuration/builder.rb', line 74

def cache_from
  if cached?
    case builder_config["cache"]["type"]
    when "gha"
      cache_from_config_for_gha
    when "registry"
      cache_from_config_for_registry
    end
  end
end

#cache_toObject



85
86
87
88
89
90
91
92
93
94
# File 'lib/kamal/configuration/builder.rb', line 85

def cache_to
  if cached?
    case builder_config["cache"]["type"]
    when "gha"
      cache_to_config_for_gha
    when "registry"
      cache_to_config_for_registry
    end
  end
end

#cached?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/kamal/configuration/builder.rb', line 34

def cached?
  !!builder_config["cache"]
end

#clone_directoryObject



104
105
106
# File 'lib/kamal/configuration/builder.rb', line 104

def clone_directory
  @clone_directory ||= File.join Dir.tmpdir, "kamal-clones", [ service, pwd_sha ].compact.join("-")
end

#contextObject



54
55
56
# File 'lib/kamal/configuration/builder.rb', line 54

def context
  builder_config["context"] || "."
end

#dockerfileObject



46
47
48
# File 'lib/kamal/configuration/builder.rb', line 46

def dockerfile
  builder_config["dockerfile"] || "Dockerfile"
end

#git_clone?Boolean

Returns:

  • (Boolean)


100
101
102
# File 'lib/kamal/configuration/builder.rb', line 100

def git_clone?
  Kamal::Git.used? && builder_config["context"].nil?
end

#local?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/kamal/configuration/builder.rb', line 26

def local?
  !!builder_config["local"]
end

#local_archObject



58
59
60
# File 'lib/kamal/configuration/builder.rb', line 58

def local_arch
  builder_config["local"]["arch"] if local?
end

#local_hostObject



62
63
64
# File 'lib/kamal/configuration/builder.rb', line 62

def local_host
  builder_config["local"]["host"] if local?
end

#multiarch?Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/kamal/configuration/builder.rb', line 22

def multiarch?
  builder_config["multiarch"] != false
end

#remote?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/kamal/configuration/builder.rb', line 30

def remote?
  !!builder_config["remote"]
end

#remote_archObject



66
67
68
# File 'lib/kamal/configuration/builder.rb', line 66

def remote_arch
  builder_config["remote"]["arch"] if remote?
end

#remote_hostObject



70
71
72
# File 'lib/kamal/configuration/builder.rb', line 70

def remote_host
  builder_config["remote"]["host"] if remote?
end

#secretsObject



42
43
44
# File 'lib/kamal/configuration/builder.rb', line 42

def secrets
  builder_config["secrets"] || []
end

#sshObject



96
97
98
# File 'lib/kamal/configuration/builder.rb', line 96

def ssh
  builder_config["ssh"]
end

#targetObject



50
51
52
# File 'lib/kamal/configuration/builder.rb', line 50

def target
  builder_config["target"]
end

#to_hObject



18
19
20
# File 'lib/kamal/configuration/builder.rb', line 18

def to_h
  builder_config
end