eac_config 0.5.0 → 0.6.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: feff3824330eb08ebf9bbfabc71d667daf854fa32843459af48d6b23c1fe2071
4
- data.tar.gz: fcc142b1fbe378352dfb3925a4a84480d15f13307d47cbc250ff0ae7c187d362
3
+ metadata.gz: 8ac2dc8e897b518ae3ff7c683d486380fa6cf76ad835a718e01436f4dbc4571d
4
+ data.tar.gz: 7dbefbb66b1912343c4e2e5b529828dea1f1d5165fea20e390ede6de4d7ea3d7
5
5
  SHA512:
6
- metadata.gz: 03e62f397f4ba9a412742b0a90384814a0a81bb5f402885468de79f758a6719d6a0723716d0d6075ec8a01c5d654242bb8657f29939c3bc9b4f18e1a69222f4c
7
- data.tar.gz: 5983f6b699f60a3006de7015c01308b5371410884ac2d66f93004c2a4d5b82063bbc92080ee8a6e03374a7c1bd31e3870baa05f0e7a71806b27c786c47642f66
6
+ metadata.gz: 5048086be008f75628f187fc588a804a41ac6903f97d8ea60f3ca07e930d823e24d5193a14fbccde27b6a8ff2e328417e2a8cc2bd45960f268031557ac5cd566
7
+ data.tar.gz: 9fe7946dcb40890a213fba6fab0af3bda15456e00b277f1eb578f69ec6f62d45c0fced3139ea61afadfe491b8bf504ed526ab36ff5298aac29ec75c2798280a4
@@ -49,6 +49,13 @@ module EacConfig
49
49
 
50
50
  delegate :to_h, to: :root
51
51
 
52
+ # @return [EacConfig::PathsHash
53
+ def write(entry_key, entry_value)
54
+ self[entry_key] = entry_value
55
+
56
+ self
57
+ end
58
+
52
59
  private
53
60
 
54
61
  attr_reader :data
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'eac_ruby_utils/fs/temp'
5
+ require 'eac_config/envvars_node'
6
+ require 'eac_config/node'
7
+ require 'eac_config/yaml_file_node'
8
+
9
+ module EacConfig
10
+ module Rspec
11
+ module Setup
12
+ def self.extended(obj)
13
+ obj.rspec_config.around do |example|
14
+ obj.on_envvars_load_path_clean(example)
15
+ end
16
+ end
17
+
18
+ def on_envvars_load_path_clean(example)
19
+ old_value = envvars_load_path_entry.value
20
+ begin
21
+ envvars_load_path_entry.value = old_value = []
22
+ example.run
23
+ ensure
24
+ envvars_load_path_entry.value = old_value
25
+ end
26
+ end
27
+
28
+ def envvars_load_path_entry
29
+ ::EacConfig::EnvvarsNode.new.load_path.entry
30
+ end
31
+
32
+ def stub_eac_config_node(&node_builder)
33
+ parent_self = self
34
+ rspec_config.around do |example|
35
+ ::EacRubyUtils::Fs::Temp.on_file do |file|
36
+ ::EacConfig::Node
37
+ .context.on(parent_self.stub_eac_config_node_build(file, &node_builder)) do
38
+ example.run
39
+ end
40
+ end
41
+ end
42
+ end
43
+
44
+ def stub_eac_config_node_build(file, &node_builder)
45
+ node_builder.present? ? node_builder.call(file) : ::EacConfig::YamlFileNode.new(file)
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_exts'
4
+
5
+ module EacConfig
6
+ module Rspec
7
+ require_sub __FILE__
8
+ end
9
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacConfig
4
- VERSION = '0.5.0'
4
+ VERSION = '0.6.0'
5
5
  end
@@ -18,14 +18,13 @@ module EacConfig
18
18
  end
19
19
 
20
20
  def value=(a_value)
21
- paths_hash[to_paths_hash_key] = a_value
22
- node.persist_data(paths_hash.root.to_h)
21
+ node.persist_data(paths_hash.write(to_paths_hash_key, a_value).root.to_h)
23
22
  end
24
23
 
25
24
  private
26
25
 
27
26
  # @return [EacConfig::PathsHash]
28
- def paths_hash_uncached
27
+ def paths_hash
29
28
  ::EacConfig::PathsHash.new(node.data)
30
29
  end
31
30
 
@@ -9,6 +9,7 @@ module EacConfig
9
9
  class YamlFileNode
10
10
  require_sub __FILE__
11
11
  include ::EacConfig::Node
12
+ enable_simple_cache
12
13
 
13
14
  class << self
14
15
  def from_uri(uri)
@@ -20,14 +21,10 @@ module EacConfig
20
21
  self.path = path.to_pathname
21
22
  end
22
23
 
23
- def data
24
- @data ||= ::EacRubyUtils::Yaml.load_file(assert_path) || {}
25
- end
26
-
27
24
  def persist_data(new_data)
28
25
  path.parent.mkpath
29
26
  ::EacRubyUtils::Yaml.dump_file(path, new_data)
30
- @data = nil
27
+ reset_cache(:data)
31
28
  end
32
29
 
33
30
  def url
@@ -36,13 +33,15 @@ module EacConfig
36
33
 
37
34
  private
38
35
 
39
- def assert_path
40
- unless path.file?
41
- raise("\"#{path}\" is a not a file") if path.exist?
42
-
43
- persist_data({})
36
+ def data_uncached
37
+ r = nil
38
+ if path.file?
39
+ r = ::EacRubyUtils::Yaml.load_file(path)
40
+ elsif path.exist?
41
+ raise("\"#{path}\" is a not a file")
44
42
  end
45
- path
43
+
44
+ r.is_a?(::Hash) ? r : {}
46
45
  end
47
46
  end
48
47
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eac_config
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Put here the authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-27 00:00:00.000000000 Z
11
+ date: 2021-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -30,28 +30,28 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.64'
33
+ version: '0.81'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0.64'
40
+ version: '0.81'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: eac_ruby_gem_support
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0.2'
47
+ version: '0.3'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0.2'
54
+ version: '0.3'
55
55
  description:
56
56
  email:
57
57
  executables: []
@@ -75,6 +75,8 @@ files:
75
75
  - lib/eac_config/paths_hash/entry_key_error.rb
76
76
  - lib/eac_config/paths_hash/node.rb
77
77
  - lib/eac_config/paths_hash/path_search.rb
78
+ - lib/eac_config/rspec.rb
79
+ - lib/eac_config/rspec/setup.rb
78
80
  - lib/eac_config/version.rb
79
81
  - lib/eac_config/yaml_file_node.rb
80
82
  - lib/eac_config/yaml_file_node/entry.rb
@@ -96,7 +98,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
96
98
  - !ruby/object:Gem::Version
97
99
  version: '0'
98
100
  requirements: []
99
- rubygems_version: 3.0.9
101
+ rubygems_version: 3.1.6
100
102
  signing_key:
101
103
  specification_version: 4
102
104
  summary: Put here de description.