avm-tools 0.121.1 → 0.123.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) 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/runner/application_stereotypes/list.rb +31 -0
  5. data/lib/avm/tools/runner/application_stereotypes.rb +16 -0
  6. data/lib/avm/tools/version.rb +1 -1
  7. metadata +6 -60
  8. data/sub/avm-eac_rails_base0/Gemfile +0 -5
  9. data/sub/avm-eac_rails_base0/avm-eac_rails_base0.gemspec +0 -19
  10. data/sub/avm-eac_rails_base0/lib/avm/eac_rails_base0/apache_host.rb +0 -10
  11. data/sub/avm-eac_rails_base0/lib/avm/eac_rails_base0/apache_path.rb +0 -19
  12. data/sub/avm-eac_rails_base0/lib/avm/eac_rails_base0/deploy.rb +0 -53
  13. data/sub/avm-eac_rails_base0/lib/avm/eac_rails_base0/instance.rb +0 -11
  14. data/sub/avm-eac_rails_base0/lib/avm/eac_rails_base0/runners/base.rb +0 -26
  15. data/sub/avm-eac_rails_base0/lib/avm/eac_rails_base0/runners.rb +0 -11
  16. data/sub/avm-eac_rails_base0/lib/avm/eac_rails_base0/sources/base.rb +0 -27
  17. data/sub/avm-eac_rails_base0/lib/avm/eac_rails_base0/version.rb +0 -7
  18. data/sub/avm-eac_rails_base0/lib/avm/eac_rails_base0.rb +0 -9
  19. data/sub/avm-eac_rails_base0/spec/lib/avm/eac_rails_base0/apache_host_spec.rb +0 -22
  20. data/sub/avm-eac_rails_base0/spec/lib/avm/eac_rails_base0/apache_host_spec_files/apache_host_spec_no_ssl_content.conf +0 -11
  21. data/sub/avm-eac_rails_base0/spec/lib/avm/eac_rails_base0/apache_path_spec.rb +0 -23
  22. data/sub/avm-eac_rails_base0/spec/lib/avm/eac_rails_base0/apache_path_spec_files/stub-app_0_apache_path.conf +0 -14
  23. data/sub/avm-eac_rails_base0/spec/rubocop_spec.rb +0 -3
  24. data/sub/avm-eac_rails_base0/spec/spec_helper.rb +0 -5
  25. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/apache_path/extra_content.conf +0 -5
  26. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/deploy/config/database.yml.template +0 -21
  27. data/sub/avm-eac_rails_base0/template/avm/eac_rails_base0/deploy/config/envvars.d/email.yml.template +0 -11
  28. data/sub/eac_config/Gemfile +0 -5
  29. data/sub/eac_config/eac_config.gemspec +0 -19
  30. data/sub/eac_config/lib/eac_config/entry.rb +0 -53
  31. data/sub/eac_config/lib/eac_config/entry_path.rb +0 -41
  32. data/sub/eac_config/lib/eac_config/envvars_node/entry.rb +0 -54
  33. data/sub/eac_config/lib/eac_config/envvars_node.rb +0 -25
  34. data/sub/eac_config/lib/eac_config/load_nodes_search.rb +0 -39
  35. data/sub/eac_config/lib/eac_config/load_path.rb +0 -28
  36. data/sub/eac_config/lib/eac_config/node.rb +0 -67
  37. data/sub/eac_config/lib/eac_config/node_entry.rb +0 -22
  38. data/sub/eac_config/lib/eac_config/node_uri.rb +0 -38
  39. data/sub/eac_config/lib/eac_config/old_configs/base.rb +0 -43
  40. data/sub/eac_config/lib/eac_config/old_configs/file.rb +0 -47
  41. data/sub/eac_config/lib/eac_config/old_configs.rb +0 -75
  42. data/sub/eac_config/lib/eac_config/paths_hash/entry_key_error.rb +0 -8
  43. data/sub/eac_config/lib/eac_config/paths_hash/node.rb +0 -67
  44. data/sub/eac_config/lib/eac_config/paths_hash/path_search.rb +0 -39
  45. data/sub/eac_config/lib/eac_config/paths_hash.rb +0 -63
  46. data/sub/eac_config/lib/eac_config/rspec/setup.rb +0 -65
  47. data/sub/eac_config/lib/eac_config/rspec.rb +0 -9
  48. data/sub/eac_config/lib/eac_config/version.rb +0 -5
  49. data/sub/eac_config/lib/eac_config/yaml_file_node/entry.rb +0 -36
  50. data/sub/eac_config/lib/eac_config/yaml_file_node.rb +0 -47
  51. data/sub/eac_config/lib/eac_config.rb +0 -7
  52. data/sub/eac_config/spec/lib/eac_config/entry_path_spec.rb +0 -30
  53. data/sub/eac_config/spec/lib/eac_config/envvars_node/entry_spec.rb +0 -14
  54. data/sub/eac_config/spec/lib/eac_config/envvars_node_spec.rb +0 -40
  55. data/sub/eac_config/spec/lib/eac_config/old_configs_spec.rb +0 -46
  56. data/sub/eac_config/spec/lib/eac_config/paths_hash_spec.rb +0 -88
  57. data/sub/eac_config/spec/lib/eac_config/yaml_file_node_spec.rb +0 -52
  58. data/sub/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1.yaml +0 -6
  59. data/sub/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1_1.yaml +0 -2
  60. data/sub/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1_2/storage1_2_1.yaml +0 -2
  61. data/sub/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1_2.yaml +0 -4
  62. data/sub/eac_config/spec/rubocop_spec.rb +0 -3
  63. data/sub/eac_config/spec/spec_helper.rb +0 -4
@@ -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
@@ -1,75 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'active_support/core_ext/string'
4
- require 'yaml'
5
- require 'eac_config/old_configs/file'
6
- require 'eac_ruby_utils/patches/hash/sym_keys_hash'
7
- require 'eac_config/paths_hash'
8
- require 'eac_ruby_utils/simple_cache'
9
-
10
- module EacConfig
11
- # @deprecated Use {EacConfig::YamlFileNode} instead.
12
- class OldConfigs
13
- include ::EacRubyUtils::SimpleCache
14
-
15
- attr_reader :configs_key, :options
16
-
17
- # Valid options: [:storage_path]
18
- def initialize(configs_key, options = {})
19
- @configs_key = configs_key
20
- @options = options.to_sym_keys_hash.freeze
21
- load
22
- end
23
-
24
- delegate :clear, to: :file
25
-
26
- delegate :save, to: :file
27
-
28
- delegate :load, to: :file
29
-
30
- def []=(entry_key, entry_value)
31
- write_entry(entry_key, entry_value)
32
- end
33
-
34
- def write_entry(entry_key, entry_value)
35
- file.write(entry_key, entry_value)
36
- end
37
-
38
- def [](entry_key)
39
- read_entry(entry_key)
40
- end
41
-
42
- def read_entry(entry_key)
43
- file.read(entry_key)
44
- end
45
-
46
- delegate :autosave?, to: :file
47
-
48
- private
49
-
50
- attr_accessor :data
51
-
52
- def file_uncached
53
- ::EacConfig::OldConfigs::File.new(
54
- storage_path, options
55
- )
56
- end
57
-
58
- def storage_path_uncached
59
- path = options_storage_path || default_storage_path
60
- return path if ::File.exist?(path) && ::File.size(path).positive?
61
-
62
- ::FileUtils.mkdir_p(::File.dirname(path))
63
- ::File.write(path, {}.to_yaml)
64
- path
65
- end
66
-
67
- def options_storage_path
68
- options[:storage_path]
69
- end
70
-
71
- def default_storage_path
72
- ::File.join(ENV['HOME'], '.config', configs_key, 'settings.yml')
73
- end
74
- end
75
- end
@@ -1,8 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module EacConfig
4
- class PathsHash
5
- class EntryKeyError < StandardError
6
- end
7
- end
8
- end
@@ -1,67 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_ruby_utils/core_ext'
4
- require 'eac_config/paths_hash/entry_key_error'
5
-
6
- module EacConfig
7
- class PathsHash
8
- class Node
9
- PATH_SEARCH_UNENDED_ERROR_MESSAGE = 'Path search is not a Node and is not ended'
10
-
11
- def initialize(source_hash)
12
- source_hash.assert_argument(Hash, 'source_hash')
13
- @data = source_hash.map { |k, v| [k.to_sym, v.is_a?(Hash) ? Node.new(v) : v] }.to_h
14
- end
15
-
16
- def entry?(path_search)
17
- return false unless data.key?(path_search.cursor)
18
- return true if path_search.ended?
19
- return data.fetch(path_search.cursor).entry?(path_search.succeeding) if
20
- data.fetch(path_search.cursor).is_a?(Node)
21
-
22
- false # Paths continue and there is not available nodes
23
- end
24
-
25
- def fetch(path_search)
26
- if data.key?(path_search.cursor)
27
- node = data.fetch(path_search.cursor)
28
- return (node.is_a?(Node) ? node.to_h : node) if path_search.ended?
29
- return nil if node.blank?
30
- return node.fetch(path_search.succeeding) if node.is_a?(Node)
31
- end
32
-
33
- path_search.raise_error(PATH_SEARCH_UNENDED_ERROR_MESSAGE)
34
- end
35
-
36
- def to_h
37
- data.transform_values { |v| v.is_a?(Node) ? v.to_h : v }
38
- end
39
-
40
- def read_entry(path_search)
41
- node = data[path_search.cursor]
42
- return (node.is_a?(Node) ? node.to_h : node) if path_search.ended?
43
- return nil if node.blank?
44
- return node.read_entry(path_search.succeeding) if node.is_a?(Node)
45
-
46
- path_search.raise_error(PATH_SEARCH_UNENDED_ERROR_MESSAGE)
47
- end
48
-
49
- def write_entry(path_search, value)
50
- if path_search.ended?
51
- data[path_search.cursor] = value.is_a?(Hash) ? self.class.new(value) : value
52
- else
53
- assert_data_node(path_search.cursor).write_entry(path_search.succeeding, value)
54
- end
55
- end
56
-
57
- private
58
-
59
- attr_reader :data
60
-
61
- def assert_data_node(key)
62
- data[key] = self.class.new({}) unless data[key].is_a?(Node)
63
- data[key]
64
- end
65
- end
66
- end
67
- end
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module EacConfig
4
- class PathsHash
5
- class PathSearch
6
- class << self
7
- def parse_entry_key(string)
8
- new(::EacConfig::PathsHash.parse_entry_key(string), [])
9
- end
10
- end
11
-
12
- common_constructor :current, :previous do
13
- self.current = current.assert_argument(Array, 'current').freeze
14
- self.previous = previous.assert_argument(Array, 'previous')
15
- raise ::EacConfig::PathsHash::EntryKeyError, 'Current is empty' if current.empty?
16
- end
17
-
18
- def cursor
19
- current.first
20
- end
21
-
22
- def ended?
23
- current.count <= 1
24
- end
25
-
26
- def raise_error(message)
27
- raise ::EacConfig::PathsHash::EntryKeyError, "#{message} (#{self})"
28
- end
29
-
30
- def succeeding
31
- self.class.new(current[1..-1], previous + [cursor])
32
- end
33
-
34
- def to_s
35
- "#{self.class}[Current: #{current}, Previous: #{previous}]"
36
- end
37
- end
38
- end
39
- end
@@ -1,63 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_ruby_utils/core_ext'
4
-
5
- module EacConfig
6
- class PathsHash
7
- require_sub __FILE__
8
-
9
- class << self
10
- def parse_entry_key(entry_key)
11
- r = entry_key.to_s.strip
12
- raise ::EacConfig::PathsHash::EntryKeyError, 'Entry key cannot start or end with dot' if
13
- r.start_with?('.') || r.end_with?('.')
14
-
15
- r = r.split('.').map(&:strip)
16
- if r.empty?
17
- raise ::EacConfig::PathsHash::EntryKeyError, "Entry key \"#{entry_key}\" is empty"
18
- end
19
- return r.map(&:to_sym) unless r.any?(&:blank?)
20
-
21
- raise ::EacConfig::PathsHash::EntryKeyError,
22
- "Entry key \"#{entry_key}\" has at least one blank part"
23
- end
24
- end
25
-
26
- attr_reader :root
27
-
28
- def initialize(source_hash = {})
29
- @root = Node.new(source_hash)
30
- end
31
-
32
- def [](entry_key)
33
- root.read_entry(::EacConfig::PathsHash::PathSearch.parse_entry_key(entry_key))
34
- end
35
-
36
- def []=(entry_key, entry_value)
37
- root.write_entry(
38
- ::EacConfig::PathsHash::PathSearch.parse_entry_key(entry_key), entry_value
39
- )
40
- end
41
-
42
- def fetch(entry_key)
43
- root.fetch(::EacConfig::PathsHash::PathSearch.parse_entry_key(entry_key))
44
- end
45
-
46
- def key?(entry_key)
47
- root.entry?(::EacConfig::PathsHash::PathSearch.parse_entry_key(entry_key))
48
- end
49
-
50
- delegate :to_h, to: :root
51
-
52
- # @return [EacConfig::PathsHash
53
- def write(entry_key, entry_value)
54
- self[entry_key] = entry_value
55
-
56
- self
57
- end
58
-
59
- private
60
-
61
- attr_reader :data
62
- end
63
- end