Sha256: 42e0aaf8360fd220b77bb44e46574cb70d549117ec3d2ea914a7cc034b0e52fd
Contents?: true
Size: 1.2 KB
Versions: 2
Compression:
Stored size: 1.2 KB
Contents
# frozen_string_literal: true module Metatron # Base class for templating Kubernetes resources class Template attr_accessor :api_version, :name, :additional_labels attr_reader :kind, :label_namespace class << self attr_writer :label_namespace def label_namespace @label_namespace ||= "metatron.therubyist.org" end end def initialize(name) @name = name @label_namespace = self.class.label_namespace @api_version = "v1" @kind = find_kind @additional_labels = {} run_initializers end alias apiVersion api_version def self.initializer(*args) @initializers ||= [] @initializers += args end def self.initializers @initializers ||= [] end private def run_initializers self.class.initializers.each { |initializer| send(initializer.to_sym) } end def find_kind return self.class.name.split("::").last if metatron_template? self.class.ancestors.find { |klass| metatron_template?(klass) }.name.split("::").last end def metatron_template?(klass = self) klass.name.include?("Metatron::Templates") && !klass.name.include?("Concerns") end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
metatron-0.2.8 | lib/metatron/template.rb |
metatron-0.2.7 | lib/metatron/template.rb |