kamal 1.8.0 → 1.8.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.
- checksums.yaml +4 -4
- data/lib/kamal/cli/build.rb +1 -1
- data/lib/kamal/configuration/docs/configuration.yml +12 -1
- data/lib/kamal/configuration/validator/configuration.rb +6 -0
- data/lib/kamal/configuration/validator.rb +16 -3
- data/lib/kamal/configuration.rb +1 -1
- data/lib/kamal/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6586f8ce83674c95b6e7cd4172b1925586fc98cf8e7faac78b9b7fe0122752bb
|
4
|
+
data.tar.gz: ba02a0a974161f4f8ceb1dd38fb91920b2759904b01398edede27e1e1a42e8bd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7bad7fe1bab6996df978a5814f05af2d3bd4845c17f480c5a5ceadedfbf23c5a8f5c33682dfc89e7eee87a6dd8adcb130a79de015e5d16217413d95cc498d745
|
7
|
+
data.tar.gz: 546762e7e5855e45d6a7e1cf97874a3241d591efb7ac35aa8ec81f87a9afbd5cb08d6eea07f46c18fc752aa34169f404d0b97fbad2180fe53eda674726a662e4
|
data/lib/kamal/cli/build.rb
CHANGED
@@ -140,7 +140,7 @@ class Kamal::Cli::Build < Kamal::Cli::Base
|
|
140
140
|
mirror_hosts = Concurrent::Hash.new
|
141
141
|
on(KAMAL.hosts) do |host|
|
142
142
|
first_mirror = capture_with_info(*KAMAL.builder.first_mirror).strip.presence
|
143
|
-
mirror_hosts[first_mirror] ||= host if first_mirror
|
143
|
+
mirror_hosts[first_mirror] ||= host.to_s if first_mirror
|
144
144
|
rescue SSHKit::Command::Failed => e
|
145
145
|
raise unless e.message =~ /error calling index: reflect: slice index out of range/
|
146
146
|
end
|
@@ -2,13 +2,24 @@
|
|
2
2
|
#
|
3
3
|
# Configuration is read from the `config/deploy.yml`
|
4
4
|
#
|
5
|
+
|
6
|
+
# Destinations
|
7
|
+
#
|
5
8
|
# When running commands, you can specify a destination with the `-d` flag,
|
6
9
|
# e.g. `kamal deploy -d staging`
|
7
10
|
#
|
8
11
|
# In this case the configuration will also be read from `config/deploy.staging.yml`
|
9
12
|
# and merged with the base configuration.
|
13
|
+
|
14
|
+
# Extensions
|
15
|
+
#
|
16
|
+
# Kamal will not accept unrecognized keys in the configuration file.
|
17
|
+
#
|
18
|
+
# However, you might want to declare a configuration block using YAML anchors
|
19
|
+
# and aliases to avoid repetition.
|
10
20
|
#
|
11
|
-
#
|
21
|
+
# You can use prefix a configuration section with `x-` to indicate that it is an
|
22
|
+
# extension. Kamal will ignore the extension and not raise an error.
|
12
23
|
|
13
24
|
# The service name
|
14
25
|
# This is a required value. It is used as the container name prefix.
|
@@ -15,11 +15,10 @@ class Kamal::Configuration::Validator
|
|
15
15
|
def validate_against_example!(validation_config, example)
|
16
16
|
validate_type! validation_config, Hash
|
17
17
|
|
18
|
-
|
19
|
-
unknown_keys_error unknown_keys
|
20
|
-
end
|
18
|
+
check_unknown_keys! validation_config, example
|
21
19
|
|
22
20
|
validation_config.each do |key, value|
|
21
|
+
next if extension?(key)
|
23
22
|
with_context(key) do
|
24
23
|
example_value = example[key]
|
25
24
|
|
@@ -137,4 +136,18 @@ class Kamal::Configuration::Validator
|
|
137
136
|
ensure
|
138
137
|
@context = old_context
|
139
138
|
end
|
139
|
+
|
140
|
+
def allow_extensions?
|
141
|
+
false
|
142
|
+
end
|
143
|
+
|
144
|
+
def extension?(key)
|
145
|
+
key.to_s.start_with?("x-")
|
146
|
+
end
|
147
|
+
|
148
|
+
def check_unknown_keys!(config, example)
|
149
|
+
unknown_keys = config.keys - example.keys
|
150
|
+
unknown_keys.reject! { |key| extension?(key) } if allow_extensions?
|
151
|
+
unknown_keys_error unknown_keys if unknown_keys.present?
|
152
|
+
end
|
140
153
|
end
|
data/lib/kamal/configuration.rb
CHANGED
@@ -47,7 +47,7 @@ class Kamal::Configuration
|
|
47
47
|
@destination = destination
|
48
48
|
@declared_version = version
|
49
49
|
|
50
|
-
validate! raw_config, example: validation_yml.symbolize_keys, context: ""
|
50
|
+
validate! raw_config, example: validation_yml.symbolize_keys, context: "", with: Kamal::Configuration::Validator::Configuration
|
51
51
|
|
52
52
|
# Eager load config to validate it, these are first as they have dependencies later on
|
53
53
|
@servers = Servers.new(config: self)
|
data/lib/kamal/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kamal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.8.
|
4
|
+
version: 1.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-07-
|
11
|
+
date: 2024-07-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -295,6 +295,7 @@ files:
|
|
295
295
|
- lib/kamal/configuration/validator.rb
|
296
296
|
- lib/kamal/configuration/validator/accessory.rb
|
297
297
|
- lib/kamal/configuration/validator/builder.rb
|
298
|
+
- lib/kamal/configuration/validator/configuration.rb
|
298
299
|
- lib/kamal/configuration/validator/env.rb
|
299
300
|
- lib/kamal/configuration/validator/registry.rb
|
300
301
|
- lib/kamal/configuration/validator/role.rb
|