Merge pull request #451 from basecamp/require-destinations

Add a require_destination setting
This commit is contained in:
Donal McBreen
2023-09-12 08:26:36 +01:00
committed by GitHub
4 changed files with 38 additions and 3 deletions

View File

@@ -9,8 +9,7 @@ class Kamal::Configuration
delegate :service, :image, :servers, :env, :labels, :registry, :stop_wait_time, :hooks_path, to: :raw_config, allow_nil: true
delegate :argumentize, :optionize, to: Kamal::Utils
attr_accessor :destination
attr_accessor :raw_config
attr_reader :destination, :raw_config
class << self
def create_from(config_file:, destination: nil, version: nil)
@@ -120,6 +119,10 @@ class Kamal::Configuration
"#{service}-#{version}"
end
def require_destination?
raw_config.require_destination
end
def volume_args
if raw_config.volumes.present?
@@ -165,7 +168,7 @@ class Kamal::Configuration
end
def valid?
ensure_required_keys_present && ensure_valid_kamal_version
ensure_destination_if_required && ensure_required_keys_present && ensure_valid_kamal_version
end
@@ -251,6 +254,14 @@ class Kamal::Configuration
true
end
def ensure_destination_if_required
if require_destination? && destination.nil?
raise ArgumentError, "You must specify a destination"
end
true
end
def role_names
raw_config.servers.is_a?(Array) ? [ "web" ] : raw_config.servers.keys.sort