Sha256: e705ad0550c6a1bd9644c29f44d4168dd79c94db5ac3ddd9da724c42b4e18e6e

Contents?: true

Size: 1.21 KB

Versions: 9

Compression:

Stored size: 1.21 KB

Contents

class KuberKit::Core::Registries::RegistryStore
  NotFoundError = Class.new(KuberKit::NotFoundError)
  AlreadyAddedError = Class.new(KuberKit::Error)

  def add(registry)
    @@registries ||= {}

    if !registry.is_a?(KuberKit::Core::Registries::AbstractRegistry)
      raise ArgumentError.new("should be an instance of KuberKit::Core::Registries::AbstractRegistry, got: #{registry.inspect}")
    end

    unless @@registries[registry.name].nil?
      raise AlreadyAddedError, "registry #{registry.name} was already added"
    end

    @@registries[registry.name] = registry
  end

  def get(registry_name)
    registry = get_from_configuration(registry_name) || 
               get_global(registry_name)

    registry
  end

  def get_global(registry_name)
    @@registries ||= {}
    registry = @@registries[registry_name]

    if registry.nil?
      raise NotFoundError, "registry '#{registry_name}' not found"
    end
    
    registry
  end

  def get_from_configuration(registry_name)
    registries = KuberKit.current_configuration.registries
    registries[registry_name]
  end

  def default_registry
    @default_registry ||= KuberKit::Core::Registries::Registry.new(:default)
  end

  def reset!
    @@registries = {}
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
kuber_kit-0.1.8 lib/kuber_kit/core/registries/registry_store.rb
kuber_kit-0.1.7 lib/kuber_kit/core/registries/registry_store.rb
kuber_kit-0.1.6 lib/kuber_kit/core/registries/registry_store.rb
kuber_kit-0.1.5 lib/kuber_kit/core/registries/registry_store.rb
kuber_kit-0.1.4 lib/kuber_kit/core/registries/registry_store.rb
kuber_kit-0.1.3 lib/kuber_kit/core/registries/registry_store.rb
kuber_kit-0.1.2 lib/kuber_kit/core/registries/registry_store.rb
kuber_kit-0.1.1 lib/kuber_kit/core/registries/registry_store.rb
kuber_kit-0.1.0 lib/kuber_kit/core/registries/registry_store.rb