Sha256: 15b380b2d9aa15c30be55832b3ce5af696af606d726e26ba66724e64619d96cb

Contents?: true

Size: 1.02 KB

Versions: 7

Compression:

Stored size: 1.02 KB

Contents

# frozen_string_literal: true

module Kubec
  class Kubernetes
    # :nodoc:
    class Config < Hash
      extend Forwardable

      attr_reader :name

      def_delegators :metadata, :labels, :label

      class << self
        def api_version(version = nil)
          return @api_version if version.nil?
          @api_version = version
        end

        def kind
          name.split('::').last
        end
      end

      def initialize(name, &block)
        @name = name.to_sym
        prepare
        instance_eval(&block)
      end

      # TODO: Refactor this feature
      def fetch(*args)
        Environment.instance.fetch(*args)
      end

      def spec
        self[:spec]
      end

      def metadata(&block)
        return self[:metadata] unless block_given?
        self[:metadata].instance_eval(&block)
      end

      def prepare
        self[:apiVersion] = self.class.api_version
        self[:kind] = self.class.kind
        self[:metadata] = Metadata.new(@name)
        self[:spec] = {}
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
kubec-0.6.1 lib/kubec/kubernetes/config.rb
kubec-0.6.0 lib/kubec/kubernetes/config.rb
kubec-0.5.0 lib/kubec/kubernetes/config.rb
kubec-0.4.1 lib/kubec/kubernetes/config.rb
kubec-0.4.0 lib/kubec/kubernetes/config.rb
kubec-0.3.6 lib/kubec/kubernetes/config.rb
kubec-0.3.5 lib/kubec/kubernetes/config.rb