Sha256: 69934266a6760d336710904ef7804f7f395386310f66dea36a3b9964cf9da0b5

Contents?: true

Size: 1.37 KB

Versions: 34

Compression:

Stored size: 1.37 KB

Contents

class Kamal::Configuration::Validator::Env < Kamal::Configuration::Validator
  SPECIAL_KEYS = [ "clear", "secret", "tags" ]

  def validate!
    if known_keys.any?
      validate_complex_env!
    else
      validate_simple_env!
    end
  end

  private
    def validate_simple_env!
      validate_hash_of!(config, String)
    end

    def validate_complex_env!
      unknown_keys_error unknown_keys if unknown_keys.any?

      with_context("clear") { validate_hash_of!(config["clear"], String) } if config.key?("clear")
      with_context("secret") { validate_array_of!(config["secret"], String) } if config.key?("secret")
      validate_tags! if config.key?("tags")
    end

    def known_keys
      @known_keys ||= config.keys & SPECIAL_KEYS
    end

    def unknown_keys
      @unknown_keys ||= config.keys - SPECIAL_KEYS
    end

    def validate_tags!
      if context == "env"
        with_context("tags") do
          validate_type! config["tags"], Hash

          config["tags"].each do |tag, value|
            with_context(tag) do
              validate_type! value, Hash

              Kamal::Configuration::Validator::Env.new(
                value,
                example: example["tags"].values[1],
                context: context
              ).validate!
            end
          end
        end
      else
        error "tags are only allowed in the root env"
      end
    end
end

Version data entries

34 entries across 34 versions & 2 rubygems

Version Path
kamal-2.5.3 lib/kamal/configuration/validator/env.rb
kamal-2.5.2 lib/kamal/configuration/validator/env.rb
kamal-2.5.1 lib/kamal/configuration/validator/env.rb
kamal-2.5.0 lib/kamal/configuration/validator/env.rb
kamal-2.4.0 lib/kamal/configuration/validator/env.rb
nocoffee-kamal-2.3.0.3 lib/kamal/configuration/validator/env.rb
nocoffee-kamal-2.3.0.2 lib/kamal/configuration/validator/env.rb
nocoffee-kamal-2.3.0.1 lib/kamal/configuration/validator/env.rb
kamal-2.3.0 lib/kamal/configuration/validator/env.rb
kamal-2.2.2 lib/kamal/configuration/validator/env.rb
kamal-2.2.1 lib/kamal/configuration/validator/env.rb
kamal-2.2.0 lib/kamal/configuration/validator/env.rb
kamal-1.9.2 lib/kamal/configuration/validator/env.rb
kamal-2.1.2 lib/kamal/configuration/validator/env.rb
kamal-2.1.1 lib/kamal/configuration/validator/env.rb
kamal-2.1.0 lib/kamal/configuration/validator/env.rb
kamal-1.9.1 lib/kamal/configuration/validator/env.rb
kamal-2.0.0 lib/kamal/configuration/validator/env.rb
kamal-1.9.0 lib/kamal/configuration/validator/env.rb
kamal-2.0.0.rc4 lib/kamal/configuration/validator/env.rb