avm-tools 0.121.2 → 0.122.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -0
  3. data/lib/avm/tools/runner/app_src/info.rb +19 -0
  4. data/lib/avm/tools/version.rb +1 -1
  5. metadata +2 -38
  6. data/sub/eac_config/Gemfile +0 -5
  7. data/sub/eac_config/eac_config.gemspec +0 -19
  8. data/sub/eac_config/lib/eac_config/entry.rb +0 -53
  9. data/sub/eac_config/lib/eac_config/entry_path.rb +0 -41
  10. data/sub/eac_config/lib/eac_config/envvars_node/entry.rb +0 -54
  11. data/sub/eac_config/lib/eac_config/envvars_node.rb +0 -25
  12. data/sub/eac_config/lib/eac_config/load_nodes_search.rb +0 -39
  13. data/sub/eac_config/lib/eac_config/load_path.rb +0 -28
  14. data/sub/eac_config/lib/eac_config/node.rb +0 -67
  15. data/sub/eac_config/lib/eac_config/node_entry.rb +0 -22
  16. data/sub/eac_config/lib/eac_config/node_uri.rb +0 -38
  17. data/sub/eac_config/lib/eac_config/old_configs/base.rb +0 -43
  18. data/sub/eac_config/lib/eac_config/old_configs/file.rb +0 -47
  19. data/sub/eac_config/lib/eac_config/old_configs.rb +0 -75
  20. data/sub/eac_config/lib/eac_config/paths_hash/entry_key_error.rb +0 -8
  21. data/sub/eac_config/lib/eac_config/paths_hash/node.rb +0 -67
  22. data/sub/eac_config/lib/eac_config/paths_hash/path_search.rb +0 -39
  23. data/sub/eac_config/lib/eac_config/paths_hash.rb +0 -63
  24. data/sub/eac_config/lib/eac_config/rspec/setup.rb +0 -65
  25. data/sub/eac_config/lib/eac_config/rspec.rb +0 -9
  26. data/sub/eac_config/lib/eac_config/version.rb +0 -5
  27. data/sub/eac_config/lib/eac_config/yaml_file_node/entry.rb +0 -36
  28. data/sub/eac_config/lib/eac_config/yaml_file_node.rb +0 -47
  29. data/sub/eac_config/lib/eac_config.rb +0 -7
  30. data/sub/eac_config/spec/lib/eac_config/entry_path_spec.rb +0 -30
  31. data/sub/eac_config/spec/lib/eac_config/envvars_node/entry_spec.rb +0 -14
  32. data/sub/eac_config/spec/lib/eac_config/envvars_node_spec.rb +0 -40
  33. data/sub/eac_config/spec/lib/eac_config/old_configs_spec.rb +0 -46
  34. data/sub/eac_config/spec/lib/eac_config/paths_hash_spec.rb +0 -88
  35. data/sub/eac_config/spec/lib/eac_config/yaml_file_node_spec.rb +0 -52
  36. data/sub/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1.yaml +0 -6
  37. data/sub/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1_1.yaml +0 -2
  38. data/sub/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1_2/storage1_2_1.yaml +0 -2
  39. data/sub/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1_2.yaml +0 -4
  40. data/sub/eac_config/spec/rubocop_spec.rb +0 -3
  41. data/sub/eac_config/spec/spec_helper.rb +0 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b24067d578a5336edb5025a099861a707d07c9e1124bf1eb79539175dd8bd4dd
4
- data.tar.gz: 9a64c337099caa0cd45dbbdbfe58248d5a0333c166da9eb5ffd1139ed3fc3788
3
+ metadata.gz: '099777e93c832a08aed482da764730031fa31a681e54885edbe17a1298545065'
4
+ data.tar.gz: 4f41a900634129f6c09454e6d7caccce9956caf6ad2c885b826eaf28f68f44d0
5
5
  SHA512:
6
- metadata.gz: bcf410474f87daf2746cacceb809c9390af0929f0346fdd1cce147f2336cfd047ea803421869a57369bff43ad1c4af4a014a57afcab56bb27466dedbbd1eac9b
7
- data.tar.gz: 471c0268b03a367ebd9de94799938270c66f1cca8b95b92f261b278649e7fb27ab6b18c786bf0a9f13beeaa92ed9941c0e420946a8c69bbed56b9cf0f66c1692
6
+ metadata.gz: 9d7ea750379d191aec03687d126b327123015458ccbcbb35a733334bd0e660c009627c7054b92583f4b65af0012a1f62204a1d047dc13778ee0d72e7de642e5e
7
+ data.tar.gz: a81da679f43cff4f1d0eb89f7e636197dfe95e39205dab53484083ac8a204540ae5a96abb691b46dd1dd1634a62222247759c7483d0b190f6adcf90463097b26
data/Gemfile CHANGED
@@ -10,3 +10,6 @@ Dir["#{gems_subdir}/*"].each do |dir|
10
10
 
11
11
  gem ::File.basename(dir), path: dir
12
12
  end
13
+
14
+ local_gemfile = ::File.join(::File.dirname(__FILE__), 'Gemfile.local')
15
+ eval_gemfile local_gemfile if ::File.exist?(local_gemfile)
@@ -9,11 +9,15 @@ module Avm
9
9
  class Info
10
10
  runner_with :help do
11
11
  desc 'Show information about local project instance.'
12
+ bool_opt '-p', '--parent', 'Show the parent source.'
13
+ bool_opt '-t', '--tests', 'Show test commands.'
12
14
  end
13
15
 
14
16
  def run
15
17
  show_instance
16
18
  show_source
19
+ show_parent
20
+ show_test_commands
17
21
  end
18
22
 
19
23
  private
@@ -23,11 +27,26 @@ module Avm
23
27
  infov 'Launcher stereotypes', instance.stereotypes.map(&:label).join(', ')
24
28
  end
25
29
 
30
+ def show_parent
31
+ return unless parsed.parent?
32
+
33
+ infov 'Parent', runner_context.call(:subject).parent
34
+ end
35
+
26
36
  def show_source
27
37
  infov 'Stereotype', runner_context.call(:subject).class
28
38
  infov 'SCM', runner_context.call(:subject).scm
29
39
  end
30
40
 
41
+ def show_test_commands
42
+ return unless parsed.tests?
43
+
44
+ infov 'Test commands', runner_context.call(:subject).test_commands.count
45
+ runner_context.call(:subject).test_commands.each do |name, command|
46
+ infov " * #{name}", command
47
+ end
48
+ end
49
+
31
50
  def instance
32
51
  runner_context.call(:instance)
33
52
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module Tools
5
- VERSION = '0.121.2'
5
+ VERSION = '0.122.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avm-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.121.2
4
+ version: 0.122.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esquilo Azul Company
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-07-18 00:00:00.000000000 Z
11
+ date: 2022-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aranha-parsers
@@ -550,42 +550,6 @@ files:
550
550
  - sub/avm-git/spec/lib/avm/git/scms/git_subrepo_spec.rb
551
551
  - sub/avm-git/spec/rubocop_spec.rb
552
552
  - sub/avm-git/spec/spec_helper.rb
553
- - sub/eac_config/Gemfile
554
- - sub/eac_config/eac_config.gemspec
555
- - sub/eac_config/lib/eac_config.rb
556
- - sub/eac_config/lib/eac_config/entry.rb
557
- - sub/eac_config/lib/eac_config/entry_path.rb
558
- - sub/eac_config/lib/eac_config/envvars_node.rb
559
- - sub/eac_config/lib/eac_config/envvars_node/entry.rb
560
- - sub/eac_config/lib/eac_config/load_nodes_search.rb
561
- - sub/eac_config/lib/eac_config/load_path.rb
562
- - sub/eac_config/lib/eac_config/node.rb
563
- - sub/eac_config/lib/eac_config/node_entry.rb
564
- - sub/eac_config/lib/eac_config/node_uri.rb
565
- - sub/eac_config/lib/eac_config/old_configs.rb
566
- - sub/eac_config/lib/eac_config/old_configs/base.rb
567
- - sub/eac_config/lib/eac_config/old_configs/file.rb
568
- - sub/eac_config/lib/eac_config/paths_hash.rb
569
- - sub/eac_config/lib/eac_config/paths_hash/entry_key_error.rb
570
- - sub/eac_config/lib/eac_config/paths_hash/node.rb
571
- - sub/eac_config/lib/eac_config/paths_hash/path_search.rb
572
- - sub/eac_config/lib/eac_config/rspec.rb
573
- - sub/eac_config/lib/eac_config/rspec/setup.rb
574
- - sub/eac_config/lib/eac_config/version.rb
575
- - sub/eac_config/lib/eac_config/yaml_file_node.rb
576
- - sub/eac_config/lib/eac_config/yaml_file_node/entry.rb
577
- - sub/eac_config/spec/lib/eac_config/entry_path_spec.rb
578
- - sub/eac_config/spec/lib/eac_config/envvars_node/entry_spec.rb
579
- - sub/eac_config/spec/lib/eac_config/envvars_node_spec.rb
580
- - sub/eac_config/spec/lib/eac_config/old_configs_spec.rb
581
- - sub/eac_config/spec/lib/eac_config/paths_hash_spec.rb
582
- - sub/eac_config/spec/lib/eac_config/yaml_file_node_spec.rb
583
- - sub/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1.yaml
584
- - sub/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1_1.yaml
585
- - sub/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1_2.yaml
586
- - sub/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1_2/storage1_2_1.yaml
587
- - sub/eac_config/spec/rubocop_spec.rb
588
- - sub/eac_config/spec/spec_helper.rb
589
553
  - sub/eac_docker/Gemfile
590
554
  - sub/eac_docker/eac_docker.gemspec
591
555
  - sub/eac_docker/lib/eac_docker.rb
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source 'https://rubygems.org'
4
-
5
- gemspec
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- $LOAD_PATH.push File.expand_path('lib', __dir__)
4
-
5
- require 'eac_config/version'
6
-
7
- Gem::Specification.new do |s|
8
- s.name = 'eac_config'
9
- s.version = EacConfig::VERSION
10
- s.authors = ['Put here the authors']
11
- s.summary = 'Put here de description.'
12
-
13
- s.files = Dir['{lib}/**/*']
14
-
15
- s.add_dependency 'addressable'
16
- s.add_dependency 'eac_ruby_utils', '~> 0.83'
17
-
18
- s.add_development_dependency 'eac_ruby_gem_support', '~> 0.5.1'
19
- end
@@ -1,53 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_config/entry_path'
4
- require 'eac_ruby_utils/core_ext'
5
-
6
- module EacConfig
7
- class Entry
8
- enable_simple_cache
9
- common_constructor :root_node, :path do
10
- self.path = ::EacConfig::EntryPath.assert(path)
11
- end
12
-
13
- def found?
14
- node_entry.if_present(false, &:found?)
15
- end
16
-
17
- def found_node
18
- node_entry.if_present(&:node)
19
- end
20
-
21
- def secret_value
22
- node_entry.if_present(&:secret_value)
23
- end
24
-
25
- def value
26
- node_entry.if_present(&:value)
27
- end
28
-
29
- def value=(a_value)
30
- write_node.self_entry(path).value = a_value
31
- end
32
-
33
- def write_node
34
- root_node.write_node || root_node
35
- end
36
-
37
- private
38
-
39
- def node_entry_uncached
40
- node_entry_from_root || node_entry_from_load_path
41
- end
42
-
43
- def node_entry_from_load_path_uncached
44
- root_node.recursive_loaded_nodes.lazy.map { |loaded_node| loaded_node.self_entry(path) }
45
- .find(&:found?)
46
- end
47
-
48
- def node_entry_from_root_uncached
49
- e = root_node.self_entry(path)
50
- e.found? ? e : nil
51
- end
52
- end
53
- end
@@ -1,41 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_ruby_utils/core_ext'
4
-
5
- module EacConfig
6
- class EntryPath
7
- PART_SEPARATOR = '.'
8
-
9
- class << self
10
- def assert(source)
11
- source.is_a?(self) ? source : new(build_parts(source))
12
- end
13
-
14
- def build_parts(source)
15
- return validate_parts!(source.split(PART_SEPARATOR)) if source.is_a?(::String)
16
- return validate_parts!(source.flat_map { |part| build_parts(part) }) if
17
- source.is_a?(::Enumerable)
18
-
19
- build_parts(source.to_s)
20
- end
21
-
22
- def validate_parts!(parts)
23
- parts.assert_argument(::Enumerable, 'parts')
24
- parts.each_with_index do |part, index|
25
- raise ::ArgumentError, "Part #{index} of #{parts} is blank" if part.blank?
26
- raise ::ArgumentError, "Part #{index} is not a string" unless part.is_a?(::String)
27
- end
28
- end
29
- end
30
-
31
- attr_reader :parts
32
-
33
- def initialize(parts)
34
- @parts = parts.to_a.freeze
35
- end
36
-
37
- def to_s
38
- "#{self.class}[#{parts.join(PART_SEPARATOR)}]"
39
- end
40
- end
41
- end
@@ -1,54 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_config/entry_path'
4
- require 'eac_config/node_entry'
5
- require 'eac_ruby_utils/blank_not_blank'
6
- require 'eac_ruby_utils/core_ext'
7
- require 'eac_ruby_utils/yaml'
8
-
9
- module EacConfig
10
- class EnvvarsNode
11
- class Entry < ::EacConfig::NodeEntry
12
- class << self
13
- def entry_path_to_envvar_name(path)
14
- ::EacConfig::EntryPath.assert(path).parts.join('_').gsub(/[^a-z0-9_]/i, '')
15
- .gsub(/\A_+/, '').gsub(/_+\z/, '').gsub(/_{2,}/, '_').upcase
16
- end
17
-
18
- def from_value(string)
19
- return nil if string.nil?
20
- return ::EacRubyUtils::Yaml.load(string) if string.start_with?('---')
21
-
22
- string
23
- end
24
-
25
- def to_value(object)
26
- return nil if object.nil?
27
- return object if object.is_a?(String)
28
-
29
- ::EacRubyUtils::Yaml.dump(object)
30
- end
31
- end
32
-
33
- enable_simple_cache
34
-
35
- def found?
36
- ENV.key?(envvar_name)
37
- end
38
-
39
- def value
40
- self.class.from_value(ENV[envvar_name])
41
- end
42
-
43
- def value=(a_value)
44
- ENV[envvar_name] = self.class.to_value(a_value)
45
- end
46
-
47
- private
48
-
49
- def envvar_name_uncached
50
- self.class.entry_path_to_envvar_name(path)
51
- end
52
- end
53
- end
54
- end
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'addressable'
4
- require 'eac_config/node'
5
- require 'eac_ruby_utils/core_ext'
6
-
7
- module EacConfig
8
- # A node that read/write entries from environment variables.
9
- class EnvvarsNode
10
- require_sub __FILE__
11
- include ::EacConfig::Node
12
-
13
- URI = ::Addressable::URI.parse('self://envvars')
14
-
15
- class << self
16
- def from_uri(uri)
17
- return new if uri == URI
18
- end
19
- end
20
-
21
- def url
22
- URI
23
- end
24
- end
25
- end
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_ruby_utils/core_ext'
4
-
5
- module EacConfig
6
- class LoadNodesSearch
7
- common_constructor :root_node do
8
- add_next_pending until pending.empty?
9
- end
10
-
11
- def result
12
- added
13
- end
14
-
15
- private
16
-
17
- def added
18
- @added ||= []
19
- end
20
-
21
- def add_next_pending
22
- current = pending.pop
23
- current.self_loaded_nodes.each do |loaded_node|
24
- next if added.include?(loaded_node)
25
-
26
- added << loaded_node
27
- pending.push(loaded_node)
28
- end
29
- end
30
-
31
- def pending
32
- @pending ||= begin
33
- r = Queue.new
34
- r.push(root_node)
35
- r
36
- end
37
- end
38
- end
39
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_config/entry_path'
4
- require 'eac_ruby_utils/core_ext'
5
-
6
- module EacConfig
7
- class LoadPath
8
- ENTRY_PATH = ::EacConfig::EntryPath.assert(%w[load_path])
9
-
10
- common_constructor :node
11
-
12
- def entry
13
- node.self_entry(ENTRY_PATH)
14
- end
15
-
16
- # @return [Array<String>]
17
- def paths
18
- r = entry.value
19
- r.is_a?(::Array) ? r : []
20
- end
21
-
22
- def push(new_path)
23
- entry.value = paths + [new_path]
24
- end
25
-
26
- delegate :to_s, to: :paths
27
- end
28
- end
@@ -1,67 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_config/entry'
4
- require 'eac_config/entry_path'
5
- require 'eac_config/load_path'
6
- require 'eac_config/load_nodes_search'
7
- require 'eac_config/node_entry'
8
- require 'eac_config/node_uri'
9
- require 'eac_ruby_utils/core_ext'
10
- require 'eac_ruby_utils/context'
11
-
12
- module EacConfig
13
- module Node
14
- class << self
15
- def context
16
- @context ||= ::EacRubyUtils::Context.new
17
- end
18
- end
19
-
20
- attr_accessor :write_node
21
-
22
- common_concern do
23
- enable_abstract_methods
24
- include ::Comparable
25
- end
26
-
27
- def entry(path)
28
- ::EacConfig::Entry.new(self, path)
29
- end
30
-
31
- # @return [[EacConfig::IncludePath]]
32
- def load_path
33
- @load_path ||= ::EacConfig::LoadPath.new(self)
34
- end
35
-
36
- # @return [Addressable::URI]
37
- def url
38
- raise_abstract_method(__method__)
39
- end
40
-
41
- # Return a entry which search values only in the self node.
42
- # @return [EacConfig::NodeEntry]
43
- def self_entry(path)
44
- self_entry_class.new(self, path)
45
- end
46
-
47
- def self_entry_class
48
- self.class.const_get('Entry')
49
- end
50
-
51
- # @return [Array<EacConfig::Node>]
52
- def self_loaded_nodes
53
- load_path.paths.map { |node_path| load_node(node_path) }
54
- end
55
-
56
- # @return [Array<EacConfig::Node>]
57
- def recursive_loaded_nodes
58
- ::EacConfig::LoadNodesSearch.new(self).result
59
- end
60
-
61
- private
62
-
63
- def load_node(node_path)
64
- ::EacConfig::NodeUri.new(node_path, url).instanciate
65
- end
66
- end
67
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_config/entry_path'
4
- require 'eac_config/paths_hash'
5
- require 'eac_ruby_utils/core_ext'
6
-
7
- module EacConfig
8
- # A entry which search values only in the source node.
9
- class NodeEntry
10
- enable_abstract_methods
11
- enable_simple_cache
12
- common_constructor :node, :path do
13
- self.path = ::EacConfig::EntryPath.assert(path)
14
- end
15
-
16
- abstract_methods :found?, :value, :value=
17
-
18
- def secret_value
19
- value
20
- end
21
- end
22
- end
@@ -1,38 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module EacConfig
4
- class NodeUri
5
- enable_simple_cache
6
- common_constructor :source, :loader_uri, default: [nil]
7
-
8
- def available_node_classes
9
- require 'eac_config/envvars_node'
10
- require 'eac_config/yaml_file_node'
11
- [::EacConfig::EnvvarsNode, ::EacConfig::YamlFileNode]
12
- end
13
-
14
- def instanciate
15
- available_node_classes.lazy.map { |k| k.from_uri(self) }.find(&:present?) ||
16
- raise("No class mapped for \"#{to_addressable}\"")
17
- end
18
-
19
- delegate :to_s, to: :to_addressable
20
-
21
- private
22
-
23
- def to_addressable_uncached
24
- r = ::Addressable::URI.parse(source)
25
- path = r.path.to_pathname
26
- r.path = path.expand_path(loader_uri_path_directory).to_path if path.relative?
27
- r.scheme = 'file' if r.scheme.blank?
28
- r
29
- end
30
-
31
- def loader_uri_path_directory
32
- r = loader_uri.path
33
- raise ".loader_uri \"#{loader_uri}\" has no path (Source: \"#{source}\")" if r.blank?
34
-
35
- r.to_pathname.parent
36
- end
37
- end
38
- end
@@ -1,43 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_ruby_utils/blank_not_blank'
4
- require 'eac_ruby_utils/core_ext'
5
- require 'eac_config/paths_hash'
6
-
7
- module EacConfig
8
- class OldConfigs
9
- class Base
10
- enable_simple_cache
11
-
12
- common_constructor :data, default: [{}] do
13
- self.data = ::EacConfig::PathsHash.new(data)
14
- end
15
-
16
- def []=(entry_key, entry_value)
17
- write(entry_key, entry_value)
18
- end
19
-
20
- def [](entry_key)
21
- read(entry_key)
22
- end
23
-
24
- def clear
25
- replace({})
26
- end
27
-
28
- def read(entry_key)
29
- return nil unless data.key?(entry_key)
30
-
31
- data.fetch(entry_key).if_present(::EacRubyUtils::BlankNotBlank.instance)
32
- end
33
-
34
- def replace(new_data)
35
- self.data = ::EacConfig::PathsHash.new(new_data)
36
- end
37
-
38
- def write(entry_key, entry_value)
39
- data[entry_key] = entry_value
40
- end
41
- end
42
- end
43
- end
@@ -1,47 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_config/old_configs/base'
4
- require 'yaml'
5
-
6
- module EacConfig
7
- class OldConfigs
8
- class File < ::EacConfig::OldConfigs::Base
9
- attr_reader :path, :options
10
-
11
- # Valid options: [:autosave]
12
- def initialize(path, options = {})
13
- @path = path
14
- @options = options.to_sym_keys_hash.freeze
15
- super(raw_data_from_file)
16
- end
17
-
18
- def save
19
- ::FileUtils.mkdir_p(::File.dirname(path))
20
- ::File.write(path, data.to_h.to_yaml)
21
- end
22
-
23
- def load
24
- replace(raw_data_from_file)
25
- end
26
-
27
- def write(entry_key, entry_value)
28
- super
29
- save if autosave?
30
- end
31
-
32
- def autosave?
33
- options[:autosave] ? true : false
34
- end
35
-
36
- private
37
-
38
- def raw_data_from_file
39
- if ::File.exist?(path) && ::File.size(path).positive?
40
- ::YAML.load_file(path)
41
- else
42
- {}
43
- end
44
- end
45
- end
46
- end
47
- end