Class: Kamal::Configuration::Builder

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

Instance Method Summary collapse

Constructor Details

#initialize(config:) ⇒ Builder

Returns a new instance of Builder.



2
3
4
5
6
7
8
9
10
# File 'lib/kamal/configuration/builder.rb', line 2

def initialize(config:)
  @options = config.raw_config.builder || {}
  @image = config.image
  @server = config.registry["server"]
  @service = config.service
  @destination = config.destination

  valid?
end

Instance Method Details

#argsObject



32
33
34
# File 'lib/kamal/configuration/builder.rb', line 32

def args
  @options["args"] || {}
end

#build_directoryObject



102
103
104
105
106
107
108
109
# File 'lib/kamal/configuration/builder.rb', line 102

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

#cache_fromObject



68
69
70
71
72
73
74
75
76
77
# File 'lib/kamal/configuration/builder.rb', line 68

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

#cache_toObject



79
80
81
82
83
84
85
86
87
88
# File 'lib/kamal/configuration/builder.rb', line 79

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

#cached?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/kamal/configuration/builder.rb', line 28

def cached?
  !!@options["cache"]
end

#clone_directoryObject



98
99
100
# File 'lib/kamal/configuration/builder.rb', line 98

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

#contextObject



48
49
50
# File 'lib/kamal/configuration/builder.rb', line 48

def context
  @options["context"] || "."
end

#dockerfileObject



40
41
42
# File 'lib/kamal/configuration/builder.rb', line 40

def dockerfile
  @options["dockerfile"] || "Dockerfile"
end

#git_clone?Boolean

Returns:

  • (Boolean)


94
95
96
# File 'lib/kamal/configuration/builder.rb', line 94

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

#local?Boolean

Returns:

  • (Boolean)


20
21
22
# File 'lib/kamal/configuration/builder.rb', line 20

def local?
  !!@options["local"]
end

#local_archObject



52
53
54
# File 'lib/kamal/configuration/builder.rb', line 52

def local_arch
  @options["local"]["arch"] if local?
end

#local_hostObject



56
57
58
# File 'lib/kamal/configuration/builder.rb', line 56

def local_host
  @options["local"]["host"] if local?
end

#multiarch?Boolean

Returns:

  • (Boolean)


16
17
18
# File 'lib/kamal/configuration/builder.rb', line 16

def multiarch?
  @options["multiarch"] != false
end

#remote?Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/kamal/configuration/builder.rb', line 24

def remote?
  !!@options["remote"]
end

#remote_archObject



60
61
62
# File 'lib/kamal/configuration/builder.rb', line 60

def remote_arch
  @options["remote"]["arch"] if remote?
end

#remote_hostObject



64
65
66
# File 'lib/kamal/configuration/builder.rb', line 64

def remote_host
  @options["remote"]["host"] if remote?
end

#secretsObject



36
37
38
# File 'lib/kamal/configuration/builder.rb', line 36

def secrets
  @options["secrets"] || []
end

#sshObject



90
91
92
# File 'lib/kamal/configuration/builder.rb', line 90

def ssh
  @options["ssh"]
end

#targetObject



44
45
46
# File 'lib/kamal/configuration/builder.rb', line 44

def target
  @options["target"]
end

#to_hObject



12
13
14
# File 'lib/kamal/configuration/builder.rb', line 12

def to_h
  @options
end