Module: Mortar::ResourceHelper
- Included in:
- DescribeCommand, FireCommand
- Defined in:
- lib/mortar/mixins/resource_helper.rb
Instance Method Summary collapse
- #from_file(filename) ⇒ Array<K8s::Resource>
- #from_files(path) ⇒ Array<K8s::Resource>
- #load_resources(src) ⇒ Object
- #resources_output(resources) ⇒ String
-
#same_resource?(resource_a, resource_b) ⇒ TrueClass
Checks if the two resource refer to the same resource.
-
#stringify_hash(hash) ⇒ Hash
Stringifies all hash keys.
Instance Method Details
#from_file(filename) ⇒ 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. end |
#from_files(path) ⇒ 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
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)
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
58 59 60 |
# File 'lib/mortar/mixins/resource_helper.rb', line 58 def stringify_hash(hash) JSON.parse(JSON.dump(hash)) end |