eac_config 0.5.1 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6a404b0d89fc683f1632c29e760ac77ac204a89de0dc979f3dc4a14365443859
4
- data.tar.gz: 2efe809b7f1c5ccd6891c668ed35535d9096c26d3fd72eebbff0d3bae9c8e4a0
3
+ metadata.gz: f42b32f6fdf720e0c6896de2e624ea4072b9bd5f25ae4f9bedcd9cbae53c466e
4
+ data.tar.gz: a626301154320dec9a1fa48bf1b3f7e8ac69886eb1df02328209090d78d0a93c
5
5
  SHA512:
6
- metadata.gz: dbbbbd172244973867db06006fb0d5a2a6bf48675ef5806b742aeb7e9fdde0c83153f4de46d4ebe1bc9a38ebebf91fffd4d4d7e57d75a2ffee9958f1d6973e21
7
- data.tar.gz: 00d7a496a83302ed6ec13f691a18ef82947c1bf8f6b9d7dfd93e90fda649d2661aa1b4ed15b94602ff0caaa5bf9bc794aa817dc491cdfaa85c97932244d2a036
6
+ metadata.gz: 8fd767d65396eb954b750d919a47da556d6e99983a306b18d01ee51c19c94bd04c0ff508ffea69a03163919695e55f05a32108a794114352304c113b1e05c051
7
+ data.tar.gz: 6081fa3c82b0713fc21674512522092e0e13c2eb8c7c0d9a6546476b0acab476cf004a65a61866156099218fd8c4b1a62b8f74c2b8c08ce51f647ae59e1d192e
@@ -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,57 @@
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(target_example = nil, target_file = nil, &node_builder)
33
+ parent_self = self
34
+ (target_example || rspec_config).around do |example|
35
+ parent_self.stub_eac_config_node_on_file(target_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
+
48
+ def stub_eac_config_node_on_file(target_file)
49
+ if target_file
50
+ yield(target_file.to_pathname)
51
+ else
52
+ ::EacRubyUtils::Fs::Temp.on_file { |file| yield(file) }
53
+ end
54
+ end
55
+ end
56
+ end
57
+ 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.1'
4
+ VERSION = '0.7.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.1
4
+ version: 0.7.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-07-25 00:00:00.000000000 Z
11
+ date: 2021-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.70'
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.70'
40
+ version: '0.81'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: eac_ruby_gem_support
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -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