Module: Mortar::ResourceHelper

Included in:
DescribeCommand, FireCommand
Defined in:
lib/mortar/mixins/resource_helper.rb

Instance Method Summary collapse

Instance Method Details

#from_file(filename) ⇒ Array<K8s::Resource>

Parameters:

  • filename (String)

    file path

Returns:

  • (Array<K8s::Resource>)


15
16
17
18
19
20
21
# File 'lib/mortar/mixins/resource_helper.rb', line 15

def from_file(filename)
  variables = { name: name, var: variables_struct }
  resources = YamlFile.new(filename).load(variables)
  resources.map { |r| K8s::Resource.new(r) }
rescue Mortar::YamlFile::ParseError => exc
  signal_usage_error exc.message
end

#from_files(path) ⇒ Array<K8s::Resource>

Parameters:

  • filename (String)

    file path

Returns:

  • (Array<K8s::Resource>)


7
8
9
10
11
# File 'lib/mortar/mixins/resource_helper.rb', line 7

def from_files(path)
  Dir.glob("#{path}/*.{yml,yaml,yml.erb,yaml.erb}").sort.map { |file|
    from_file(file)
  }.flatten
end

#load_resources(src) ⇒ Object



23
24
25
# File 'lib/mortar/mixins/resource_helper.rb', line 23

def load_resources(src)
  File.directory?(src) ? from_files(src) : from_file(src)
end

#resources_output(resources) ⇒ String

Parameters:

  • resources (Array<K8s::Resource>)

Returns:

  • (String)


44
45
46
47
48
49
50
51
52
53
54
# File 'lib/mortar/mixins/resource_helper.rb', line 44

def resources_output(resources)
  yaml = +''
  resources.each do |resource|
    yaml << ::YAML.dump(stringify_hash(resource.to_hash))
  end
  return yaml unless $stdout.tty?

  lexer = Rouge::Lexers::YAML.new
  rouge = Rouge::Formatters::Terminal256.new(Rouge::Themes::Github.new)
  rouge.format(lexer.lex(yaml))
end

#same_resource?(resource_a, resource_b) ⇒ TrueClass

Checks if the two resource refer to the same resource. Two resources refer to same only if following match:

  • namespace

  • apiVersion

  • kind

  • name (in metadata)

Parameters:

  • a (K8s::Resource)
  • b (K8s::Resource)

Returns:

  • (TrueClass)


35
36
37
38
39
40
# File 'lib/mortar/mixins/resource_helper.rb', line 35

def same_resource?(resource_a, resource_b)
  resource_a.namespace == resource_b.namespace &&
    resource_a.apiVersion == resource_b.apiVersion &&
    resource_a.kind == resource_b.kind &&
    resource_a.[:name] == resource_b.[:name]
end

#stringify_hash(hash) ⇒ Hash

Stringifies all hash keys

Returns:

  • (Hash)


58
59
60
# File 'lib/mortar/mixins/resource_helper.rb', line 58

def stringify_hash(hash)
  JSON.parse(JSON.dump(hash))
end