Class: Kustomize::Emitter::FileEmitter

Inherits:
Kustomize::Emitter show all
Defined in:
lib/kustomize/emitter/file_emitter.rb

Instance Method Summary collapse

Methods inherited from Kustomize::Emitter

#emit, #input_resources, #inspect, #to_yaml_stream

Constructor Details

#initialize(source_path, session:) ⇒ FileEmitter

Returns a new instance of FileEmitter.



7
8
9
10
# File 'lib/kustomize/emitter/file_emitter.rb', line 7

def initialize(source_path, session:)
  @session = session
  @source_path = source_path
end

Instance Method Details

#input_emittersObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/kustomize/emitter/file_emitter.rb', line 12

def input_emitters
  return @input_emitters if @input_emitters

  source_docs = YAML.load_stream(@source_path.read)

  @input_emitters = source_docs.map.with_index do |doc, i|
    unless doc.has_key?('kind')
      raise ArgumentError, "invalid Kubernetes resource-config document (missing attribute 'kind'): subdocument #{i} in #{target_path}"
    end

    doc_kind = doc['kind']

    doc_klass =
      begin
        Kustomize::Emitter::DocumentEmitter.const_get(doc_kind + 'DocumentEmitter')
      rescue NameError => e
        Kustomize::Emitter::DocumentEmitter
      end

    doc_klass.load(
      doc,
      source: {path: @source_path, subdocument: i},
      session: @session
    )
  end
end