nocoffee-kamal 2.3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +13 -0
  4. data/bin/kamal +18 -0
  5. data/lib/kamal/cli/accessory.rb +287 -0
  6. data/lib/kamal/cli/alias/command.rb +9 -0
  7. data/lib/kamal/cli/app/boot.rb +125 -0
  8. data/lib/kamal/cli/app/prepare_assets.rb +24 -0
  9. data/lib/kamal/cli/app.rb +335 -0
  10. data/lib/kamal/cli/base.rb +198 -0
  11. data/lib/kamal/cli/build/clone.rb +61 -0
  12. data/lib/kamal/cli/build.rb +162 -0
  13. data/lib/kamal/cli/healthcheck/barrier.rb +33 -0
  14. data/lib/kamal/cli/healthcheck/error.rb +2 -0
  15. data/lib/kamal/cli/healthcheck/poller.rb +42 -0
  16. data/lib/kamal/cli/lock.rb +45 -0
  17. data/lib/kamal/cli/main.rb +279 -0
  18. data/lib/kamal/cli/proxy.rb +257 -0
  19. data/lib/kamal/cli/prune.rb +34 -0
  20. data/lib/kamal/cli/registry.rb +17 -0
  21. data/lib/kamal/cli/secrets.rb +43 -0
  22. data/lib/kamal/cli/server.rb +48 -0
  23. data/lib/kamal/cli/templates/deploy.yml +98 -0
  24. data/lib/kamal/cli/templates/sample_hooks/docker-setup.sample +3 -0
  25. data/lib/kamal/cli/templates/sample_hooks/post-deploy.sample +14 -0
  26. data/lib/kamal/cli/templates/sample_hooks/post-proxy-reboot.sample +3 -0
  27. data/lib/kamal/cli/templates/sample_hooks/pre-build.sample +51 -0
  28. data/lib/kamal/cli/templates/sample_hooks/pre-connect.sample +47 -0
  29. data/lib/kamal/cli/templates/sample_hooks/pre-deploy.sample +109 -0
  30. data/lib/kamal/cli/templates/sample_hooks/pre-proxy-reboot.sample +3 -0
  31. data/lib/kamal/cli/templates/secrets +17 -0
  32. data/lib/kamal/cli.rb +8 -0
  33. data/lib/kamal/commander/specifics.rb +54 -0
  34. data/lib/kamal/commander.rb +176 -0
  35. data/lib/kamal/commands/accessory.rb +113 -0
  36. data/lib/kamal/commands/app/assets.rb +51 -0
  37. data/lib/kamal/commands/app/containers.rb +31 -0
  38. data/lib/kamal/commands/app/execution.rb +30 -0
  39. data/lib/kamal/commands/app/images.rb +13 -0
  40. data/lib/kamal/commands/app/logging.rb +18 -0
  41. data/lib/kamal/commands/app/proxy.rb +16 -0
  42. data/lib/kamal/commands/app.rb +115 -0
  43. data/lib/kamal/commands/auditor.rb +33 -0
  44. data/lib/kamal/commands/base.rb +98 -0
  45. data/lib/kamal/commands/builder/base.rb +111 -0
  46. data/lib/kamal/commands/builder/clone.rb +31 -0
  47. data/lib/kamal/commands/builder/hybrid.rb +21 -0
  48. data/lib/kamal/commands/builder/local.rb +14 -0
  49. data/lib/kamal/commands/builder/remote.rb +63 -0
  50. data/lib/kamal/commands/builder.rb +56 -0
  51. data/lib/kamal/commands/docker.rb +34 -0
  52. data/lib/kamal/commands/hook.rb +20 -0
  53. data/lib/kamal/commands/lock.rb +70 -0
  54. data/lib/kamal/commands/proxy.rb +87 -0
  55. data/lib/kamal/commands/prune.rb +38 -0
  56. data/lib/kamal/commands/registry.rb +14 -0
  57. data/lib/kamal/commands/server.rb +15 -0
  58. data/lib/kamal/commands.rb +2 -0
  59. data/lib/kamal/configuration/accessory.rb +186 -0
  60. data/lib/kamal/configuration/alias.rb +15 -0
  61. data/lib/kamal/configuration/boot.rb +25 -0
  62. data/lib/kamal/configuration/builder.rb +191 -0
  63. data/lib/kamal/configuration/docs/accessory.yml +100 -0
  64. data/lib/kamal/configuration/docs/alias.yml +26 -0
  65. data/lib/kamal/configuration/docs/boot.yml +19 -0
  66. data/lib/kamal/configuration/docs/builder.yml +110 -0
  67. data/lib/kamal/configuration/docs/configuration.yml +178 -0
  68. data/lib/kamal/configuration/docs/env.yml +85 -0
  69. data/lib/kamal/configuration/docs/logging.yml +21 -0
  70. data/lib/kamal/configuration/docs/proxy.yml +110 -0
  71. data/lib/kamal/configuration/docs/registry.yml +52 -0
  72. data/lib/kamal/configuration/docs/role.yml +53 -0
  73. data/lib/kamal/configuration/docs/servers.yml +27 -0
  74. data/lib/kamal/configuration/docs/ssh.yml +70 -0
  75. data/lib/kamal/configuration/docs/sshkit.yml +23 -0
  76. data/lib/kamal/configuration/env/tag.rb +13 -0
  77. data/lib/kamal/configuration/env.rb +29 -0
  78. data/lib/kamal/configuration/logging.rb +33 -0
  79. data/lib/kamal/configuration/proxy.rb +63 -0
  80. data/lib/kamal/configuration/registry.rb +32 -0
  81. data/lib/kamal/configuration/role.rb +220 -0
  82. data/lib/kamal/configuration/servers.rb +18 -0
  83. data/lib/kamal/configuration/ssh.rb +57 -0
  84. data/lib/kamal/configuration/sshkit.rb +22 -0
  85. data/lib/kamal/configuration/validation.rb +27 -0
  86. data/lib/kamal/configuration/validator/accessory.rb +9 -0
  87. data/lib/kamal/configuration/validator/alias.rb +15 -0
  88. data/lib/kamal/configuration/validator/builder.rb +13 -0
  89. data/lib/kamal/configuration/validator/configuration.rb +6 -0
  90. data/lib/kamal/configuration/validator/env.rb +54 -0
  91. data/lib/kamal/configuration/validator/proxy.rb +15 -0
  92. data/lib/kamal/configuration/validator/registry.rb +25 -0
  93. data/lib/kamal/configuration/validator/role.rb +11 -0
  94. data/lib/kamal/configuration/validator/servers.rb +7 -0
  95. data/lib/kamal/configuration/validator.rb +171 -0
  96. data/lib/kamal/configuration/volume.rb +22 -0
  97. data/lib/kamal/configuration.rb +393 -0
  98. data/lib/kamal/env_file.rb +44 -0
  99. data/lib/kamal/git.rb +27 -0
  100. data/lib/kamal/secrets/adapters/base.rb +23 -0
  101. data/lib/kamal/secrets/adapters/bitwarden.rb +81 -0
  102. data/lib/kamal/secrets/adapters/last_pass.rb +39 -0
  103. data/lib/kamal/secrets/adapters/one_password.rb +70 -0
  104. data/lib/kamal/secrets/adapters/test.rb +14 -0
  105. data/lib/kamal/secrets/adapters.rb +14 -0
  106. data/lib/kamal/secrets/dotenv/inline_command_substitution.rb +32 -0
  107. data/lib/kamal/secrets.rb +42 -0
  108. data/lib/kamal/sshkit_with_ext.rb +142 -0
  109. data/lib/kamal/tags.rb +40 -0
  110. data/lib/kamal/utils/sensitive.rb +20 -0
  111. data/lib/kamal/utils.rb +110 -0
  112. data/lib/kamal/version.rb +3 -0
  113. data/lib/kamal.rb +14 -0
  114. metadata +349 -0
@@ -0,0 +1,110 @@
1
+ require "active_support/core_ext/object/try"
2
+
3
+ module Kamal::Utils
4
+ extend self
5
+
6
+ DOLLAR_SIGN_WITHOUT_SHELL_EXPANSION_REGEX = /\$(?!{[^\}]*\})/
7
+
8
+ # Return a list of escaped shell arguments using the same named argument against the passed attributes (hash or array).
9
+ def argumentize(argument, attributes, sensitive: false)
10
+ Array(attributes).flat_map do |key, value|
11
+ if value.present?
12
+ attr = "#{key}=#{escape_shell_value(value)}"
13
+ attr = self.sensitive(attr, redaction: "#{key}=[REDACTED]") if sensitive
14
+ [ argument, attr ]
15
+ elsif value == false
16
+ [ argument, "#{key}=false" ]
17
+ else
18
+ [ argument, key ]
19
+ end
20
+ end
21
+ end
22
+
23
+ # Returns a list of shell-dashed option arguments. If the value is true, it's treated like a value-less option.
24
+ def optionize(args, with: nil)
25
+ options = if with
26
+ flatten_args(args).collect { |(key, value)| value == true ? "--#{key}" : "--#{key}#{with}#{escape_shell_value(value)}" }
27
+ else
28
+ flatten_args(args).collect { |(key, value)| [ "--#{key}", value == true ? nil : escape_shell_value(value) ] }
29
+ end
30
+
31
+ options.flatten.compact
32
+ end
33
+
34
+ # Flattens a one-to-many structure into an array of two-element arrays each containing a key-value pair
35
+ def flatten_args(args)
36
+ args.flat_map { |key, value| value.try(:map) { |entry| [ key, entry ] } || [ [ key, value ] ] }
37
+ end
38
+
39
+ # Marks sensitive values for redaction in logs and human-visible output.
40
+ # Pass `redaction:` to change the default `"[REDACTED]"` redaction, e.g.
41
+ # `sensitive "#{arg}=#{secret}", redaction: "#{arg}=xxxx"
42
+ def sensitive(...)
43
+ Kamal::Utils::Sensitive.new(...)
44
+ end
45
+
46
+ def redacted(value)
47
+ case
48
+ when value.respond_to?(:redaction)
49
+ value.redaction
50
+ when value.respond_to?(:transform_values)
51
+ value.transform_values { |value| redacted value }
52
+ when value.respond_to?(:map)
53
+ value.map { |element| redacted element }
54
+ else
55
+ value
56
+ end
57
+ end
58
+
59
+ # Escape a value to make it safe for shell use.
60
+ def escape_shell_value(value)
61
+ value.to_s.scan(/[\x00-\x7F]+|[^\x00-\x7F]+/) \
62
+ .map { |part| part.ascii_only? ? escape_ascii_shell_value(part) : part }
63
+ .join
64
+ end
65
+
66
+ def escape_ascii_shell_value(value)
67
+ value.to_s.dump
68
+ .gsub(/`/, '\\\\`')
69
+ .gsub(DOLLAR_SIGN_WITHOUT_SHELL_EXPANSION_REGEX, '\$')
70
+ end
71
+
72
+ # Apply a list of host or role filters, including wildcard matches
73
+ def filter_specific_items(filters, items)
74
+ matches = []
75
+
76
+ Array(filters).select do |filter|
77
+ matches += Array(items).select do |item|
78
+ # Only allow * for a wildcard
79
+ # items are roles or hosts
80
+ File.fnmatch(filter, item.to_s, File::FNM_EXTGLOB)
81
+ end
82
+ end
83
+
84
+ matches.uniq
85
+ end
86
+
87
+ def stable_sort!(elements, &block)
88
+ elements.sort_by!.with_index { |element, index| [ block.call(element), index ] }
89
+ end
90
+
91
+ def join_commands(commands)
92
+ commands.map(&:strip).join(" ")
93
+ end
94
+
95
+ def docker_arch
96
+ arch = `docker info --format '{{.Architecture}}'`.strip
97
+ case arch
98
+ when /aarch64/
99
+ "arm64"
100
+ when /x86_64/
101
+ "amd64"
102
+ else
103
+ arch
104
+ end
105
+ end
106
+
107
+ def older_version?(version, other_version)
108
+ Gem::Version.new(version.delete_prefix("v")) < Gem::Version.new(other_version.delete_prefix("v"))
109
+ end
110
+ end
@@ -0,0 +1,3 @@
1
+ module Kamal
2
+ VERSION = "2.3.0.1"
3
+ end
data/lib/kamal.rb ADDED
@@ -0,0 +1,14 @@
1
+ module Kamal
2
+ class ConfigurationError < StandardError; end
3
+ end
4
+
5
+ require "active_support"
6
+ require "zeitwerk"
7
+ require "yaml"
8
+ require "tmpdir"
9
+ require "pathname"
10
+
11
+ loader = Zeitwerk::Loader.for_gem
12
+ loader.ignore(File.join(__dir__, "kamal", "sshkit_with_ext.rb"))
13
+ loader.setup
14
+ loader.eager_load_namespace(Kamal::Cli) # We need all commands loaded.
metadata ADDED
@@ -0,0 +1,349 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nocoffee-kamal
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.3.0.1
5
+ platform: ruby
6
+ authors:
7
+ - David Heinemeier Hansson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-11-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '7.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '7.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: sshkit
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.23.0
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: '2.0'
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 1.23.0
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: '2.0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: net-ssh
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '7.3'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '7.3'
61
+ - !ruby/object:Gem::Dependency
62
+ name: thor
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '1.3'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '1.3'
75
+ - !ruby/object:Gem::Dependency
76
+ name: dotenv
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '3.1'
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '3.1'
89
+ - !ruby/object:Gem::Dependency
90
+ name: zeitwerk
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: 2.6.18
96
+ - - "<"
97
+ - !ruby/object:Gem::Version
98
+ version: '3.0'
99
+ type: :runtime
100
+ prerelease: false
101
+ version_requirements: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: 2.6.18
106
+ - - "<"
107
+ - !ruby/object:Gem::Version
108
+ version: '3.0'
109
+ - !ruby/object:Gem::Dependency
110
+ name: ed25519
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
114
+ - !ruby/object:Gem::Version
115
+ version: '1.2'
116
+ type: :runtime
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - "~>"
121
+ - !ruby/object:Gem::Version
122
+ version: '1.2'
123
+ - !ruby/object:Gem::Dependency
124
+ name: bcrypt_pbkdf
125
+ requirement: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: '1.0'
130
+ type: :runtime
131
+ prerelease: false
132
+ version_requirements: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - "~>"
135
+ - !ruby/object:Gem::Version
136
+ version: '1.0'
137
+ - !ruby/object:Gem::Dependency
138
+ name: concurrent-ruby
139
+ requirement: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - "~>"
142
+ - !ruby/object:Gem::Version
143
+ version: '1.2'
144
+ type: :runtime
145
+ prerelease: false
146
+ version_requirements: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - "~>"
149
+ - !ruby/object:Gem::Version
150
+ version: '1.2'
151
+ - !ruby/object:Gem::Dependency
152
+ name: base64
153
+ requirement: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - "~>"
156
+ - !ruby/object:Gem::Version
157
+ version: '0.2'
158
+ type: :runtime
159
+ prerelease: false
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - "~>"
163
+ - !ruby/object:Gem::Version
164
+ version: '0.2'
165
+ - !ruby/object:Gem::Dependency
166
+ name: debug
167
+ requirement: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - ">="
170
+ - !ruby/object:Gem::Version
171
+ version: '0'
172
+ type: :development
173
+ prerelease: false
174
+ version_requirements: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - ">="
177
+ - !ruby/object:Gem::Version
178
+ version: '0'
179
+ - !ruby/object:Gem::Dependency
180
+ name: mocha
181
+ requirement: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - ">="
184
+ - !ruby/object:Gem::Version
185
+ version: '0'
186
+ type: :development
187
+ prerelease: false
188
+ version_requirements: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - ">="
191
+ - !ruby/object:Gem::Version
192
+ version: '0'
193
+ - !ruby/object:Gem::Dependency
194
+ name: railties
195
+ requirement: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - ">="
198
+ - !ruby/object:Gem::Version
199
+ version: '0'
200
+ type: :development
201
+ prerelease: false
202
+ version_requirements: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - ">="
205
+ - !ruby/object:Gem::Version
206
+ version: '0'
207
+ description: Kamal with the TLS on demand feature
208
+ email: dhh@hey.com
209
+ executables:
210
+ - kamal
211
+ extensions: []
212
+ extra_rdoc_files: []
213
+ files:
214
+ - MIT-LICENSE
215
+ - README.md
216
+ - bin/kamal
217
+ - lib/kamal.rb
218
+ - lib/kamal/cli.rb
219
+ - lib/kamal/cli/accessory.rb
220
+ - lib/kamal/cli/alias/command.rb
221
+ - lib/kamal/cli/app.rb
222
+ - lib/kamal/cli/app/boot.rb
223
+ - lib/kamal/cli/app/prepare_assets.rb
224
+ - lib/kamal/cli/base.rb
225
+ - lib/kamal/cli/build.rb
226
+ - lib/kamal/cli/build/clone.rb
227
+ - lib/kamal/cli/healthcheck/barrier.rb
228
+ - lib/kamal/cli/healthcheck/error.rb
229
+ - lib/kamal/cli/healthcheck/poller.rb
230
+ - lib/kamal/cli/lock.rb
231
+ - lib/kamal/cli/main.rb
232
+ - lib/kamal/cli/proxy.rb
233
+ - lib/kamal/cli/prune.rb
234
+ - lib/kamal/cli/registry.rb
235
+ - lib/kamal/cli/secrets.rb
236
+ - lib/kamal/cli/server.rb
237
+ - lib/kamal/cli/templates/deploy.yml
238
+ - lib/kamal/cli/templates/sample_hooks/docker-setup.sample
239
+ - lib/kamal/cli/templates/sample_hooks/post-deploy.sample
240
+ - lib/kamal/cli/templates/sample_hooks/post-proxy-reboot.sample
241
+ - lib/kamal/cli/templates/sample_hooks/pre-build.sample
242
+ - lib/kamal/cli/templates/sample_hooks/pre-connect.sample
243
+ - lib/kamal/cli/templates/sample_hooks/pre-deploy.sample
244
+ - lib/kamal/cli/templates/sample_hooks/pre-proxy-reboot.sample
245
+ - lib/kamal/cli/templates/secrets
246
+ - lib/kamal/commander.rb
247
+ - lib/kamal/commander/specifics.rb
248
+ - lib/kamal/commands.rb
249
+ - lib/kamal/commands/accessory.rb
250
+ - lib/kamal/commands/app.rb
251
+ - lib/kamal/commands/app/assets.rb
252
+ - lib/kamal/commands/app/containers.rb
253
+ - lib/kamal/commands/app/execution.rb
254
+ - lib/kamal/commands/app/images.rb
255
+ - lib/kamal/commands/app/logging.rb
256
+ - lib/kamal/commands/app/proxy.rb
257
+ - lib/kamal/commands/auditor.rb
258
+ - lib/kamal/commands/base.rb
259
+ - lib/kamal/commands/builder.rb
260
+ - lib/kamal/commands/builder/base.rb
261
+ - lib/kamal/commands/builder/clone.rb
262
+ - lib/kamal/commands/builder/hybrid.rb
263
+ - lib/kamal/commands/builder/local.rb
264
+ - lib/kamal/commands/builder/remote.rb
265
+ - lib/kamal/commands/docker.rb
266
+ - lib/kamal/commands/hook.rb
267
+ - lib/kamal/commands/lock.rb
268
+ - lib/kamal/commands/proxy.rb
269
+ - lib/kamal/commands/prune.rb
270
+ - lib/kamal/commands/registry.rb
271
+ - lib/kamal/commands/server.rb
272
+ - lib/kamal/configuration.rb
273
+ - lib/kamal/configuration/accessory.rb
274
+ - lib/kamal/configuration/alias.rb
275
+ - lib/kamal/configuration/boot.rb
276
+ - lib/kamal/configuration/builder.rb
277
+ - lib/kamal/configuration/docs/accessory.yml
278
+ - lib/kamal/configuration/docs/alias.yml
279
+ - lib/kamal/configuration/docs/boot.yml
280
+ - lib/kamal/configuration/docs/builder.yml
281
+ - lib/kamal/configuration/docs/configuration.yml
282
+ - lib/kamal/configuration/docs/env.yml
283
+ - lib/kamal/configuration/docs/logging.yml
284
+ - lib/kamal/configuration/docs/proxy.yml
285
+ - lib/kamal/configuration/docs/registry.yml
286
+ - lib/kamal/configuration/docs/role.yml
287
+ - lib/kamal/configuration/docs/servers.yml
288
+ - lib/kamal/configuration/docs/ssh.yml
289
+ - lib/kamal/configuration/docs/sshkit.yml
290
+ - lib/kamal/configuration/env.rb
291
+ - lib/kamal/configuration/env/tag.rb
292
+ - lib/kamal/configuration/logging.rb
293
+ - lib/kamal/configuration/proxy.rb
294
+ - lib/kamal/configuration/registry.rb
295
+ - lib/kamal/configuration/role.rb
296
+ - lib/kamal/configuration/servers.rb
297
+ - lib/kamal/configuration/ssh.rb
298
+ - lib/kamal/configuration/sshkit.rb
299
+ - lib/kamal/configuration/validation.rb
300
+ - lib/kamal/configuration/validator.rb
301
+ - lib/kamal/configuration/validator/accessory.rb
302
+ - lib/kamal/configuration/validator/alias.rb
303
+ - lib/kamal/configuration/validator/builder.rb
304
+ - lib/kamal/configuration/validator/configuration.rb
305
+ - lib/kamal/configuration/validator/env.rb
306
+ - lib/kamal/configuration/validator/proxy.rb
307
+ - lib/kamal/configuration/validator/registry.rb
308
+ - lib/kamal/configuration/validator/role.rb
309
+ - lib/kamal/configuration/validator/servers.rb
310
+ - lib/kamal/configuration/volume.rb
311
+ - lib/kamal/env_file.rb
312
+ - lib/kamal/git.rb
313
+ - lib/kamal/secrets.rb
314
+ - lib/kamal/secrets/adapters.rb
315
+ - lib/kamal/secrets/adapters/base.rb
316
+ - lib/kamal/secrets/adapters/bitwarden.rb
317
+ - lib/kamal/secrets/adapters/last_pass.rb
318
+ - lib/kamal/secrets/adapters/one_password.rb
319
+ - lib/kamal/secrets/adapters/test.rb
320
+ - lib/kamal/secrets/dotenv/inline_command_substitution.rb
321
+ - lib/kamal/sshkit_with_ext.rb
322
+ - lib/kamal/tags.rb
323
+ - lib/kamal/utils.rb
324
+ - lib/kamal/utils/sensitive.rb
325
+ - lib/kamal/version.rb
326
+ homepage: https://github.com/basecamp/kamal
327
+ licenses:
328
+ - MIT
329
+ metadata: {}
330
+ post_install_message:
331
+ rdoc_options: []
332
+ require_paths:
333
+ - lib
334
+ required_ruby_version: !ruby/object:Gem::Requirement
335
+ requirements:
336
+ - - ">="
337
+ - !ruby/object:Gem::Version
338
+ version: '0'
339
+ required_rubygems_version: !ruby/object:Gem::Requirement
340
+ requirements:
341
+ - - ">="
342
+ - !ruby/object:Gem::Version
343
+ version: '0'
344
+ requirements: []
345
+ rubygems_version: 3.5.19
346
+ signing_key:
347
+ specification_version: 4
348
+ summary: Deploy web apps in containers to servers running Docker with zero downtime
349
+ test_files: []