eac_ruby_utils 0.61.0 → 0.65.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 (51) hide show
  1. checksums.yaml +4 -4
  2. data/lib/eac_ruby_utils/envs/command.rb +10 -5
  3. data/lib/eac_ruby_utils/filesystem_cache.rb +6 -0
  4. data/lib/eac_ruby_utils/inflector.rb +9 -1
  5. data/lib/eac_ruby_utils/listable/list.rb +3 -2
  6. data/lib/eac_ruby_utils/patches/kernel/nyi.rb +4 -2
  7. data/lib/eac_ruby_utils/patches/module/common_concern.rb +0 -1
  8. data/lib/eac_ruby_utils/patches/regexp/to_parser.rb +10 -0
  9. data/lib/eac_ruby_utils/patches/string/inflector.rb +4 -2
  10. data/lib/eac_ruby_utils/regexp_parser.rb +34 -0
  11. data/lib/eac_ruby_utils/rspec/conditional.rb +1 -4
  12. data/lib/eac_ruby_utils/simple_cache.rb +18 -5
  13. data/lib/eac_ruby_utils/version.rb +1 -1
  14. metadata +6 -75
  15. data/lib/eac_ruby_utils/configs.rb +0 -74
  16. data/lib/eac_ruby_utils/configs/base.rb +0 -43
  17. data/lib/eac_ruby_utils/configs/file.rb +0 -47
  18. data/lib/eac_ruby_utils/console.rb +0 -5
  19. data/lib/eac_ruby_utils/console/configs.rb +0 -38
  20. data/lib/eac_ruby_utils/console/configs/entry_reader.rb +0 -81
  21. data/lib/eac_ruby_utils/console/configs/password_entry_reader.rb +0 -18
  22. data/lib/eac_ruby_utils/console/configs/read_entry_options.rb +0 -46
  23. data/lib/eac_ruby_utils/console/configs/store_passwords_entry_reader.rb +0 -27
  24. data/lib/eac_ruby_utils/console/docopt_runner.rb +0 -45
  25. data/lib/eac_ruby_utils/console/docopt_runner/_class_methods.rb +0 -18
  26. data/lib/eac_ruby_utils/console/docopt_runner/_doc.rb +0 -25
  27. data/lib/eac_ruby_utils/console/docopt_runner/_settings.rb +0 -19
  28. data/lib/eac_ruby_utils/console/docopt_runner/_subcommands.rb +0 -154
  29. data/lib/eac_ruby_utils/console/speaker.rb +0 -133
  30. data/lib/eac_ruby_utils/console/speaker/_class_methods.rb +0 -39
  31. data/lib/eac_ruby_utils/console/speaker/_constants.rb +0 -14
  32. data/lib/eac_ruby_utils/console/speaker/list.rb +0 -63
  33. data/lib/eac_ruby_utils/console/speaker/node.rb +0 -26
  34. data/lib/eac_ruby_utils/contextualizable.rb +0 -16
  35. data/lib/eac_ruby_utils/patches/module/console_speaker.rb +0 -10
  36. data/lib/eac_ruby_utils/patches/module/template.rb +0 -10
  37. data/lib/eac_ruby_utils/patches/object/template.rb +0 -9
  38. data/lib/eac_ruby_utils/paths_hash.rb +0 -56
  39. data/lib/eac_ruby_utils/paths_hash/entry_key_error.rb +0 -8
  40. data/lib/eac_ruby_utils/paths_hash/node.rb +0 -67
  41. data/lib/eac_ruby_utils/paths_hash/path_search.rb +0 -39
  42. data/lib/eac_ruby_utils/templates.rb +0 -9
  43. data/lib/eac_ruby_utils/templates/directory.rb +0 -110
  44. data/lib/eac_ruby_utils/templates/file.rb +0 -50
  45. data/lib/eac_ruby_utils/templates/searcher.rb +0 -55
  46. data/lib/eac_ruby_utils/templates/variable_not_found_error.rb +0 -7
  47. data/lib/eac_ruby_utils/templates/variable_providers.rb +0 -25
  48. data/lib/eac_ruby_utils/templates/variable_providers/base.rb +0 -23
  49. data/lib/eac_ruby_utils/templates/variable_providers/entries_reader.rb +0 -25
  50. data/lib/eac_ruby_utils/templates/variable_providers/generic.rb +0 -25
  51. data/lib/eac_ruby_utils/templates/variable_providers/hash.rb +0 -29
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9a49138197a3fe16cb9a5e1f22326be1240a10f568c3ddc913e9c6f2a7501475
4
- data.tar.gz: e218f41a27514ca27c634619ae7eecc3fe4d7442ba546a9c24f584d437ecfe77
3
+ metadata.gz: 823da035ba7b8dc287824ac361ede6806dc17dd19aeb1ae2cd4626f3d1883231
4
+ data.tar.gz: 44ad34e935574af466a3a3b9eb72859074f58b43759c2355423f7162bab9df66
5
5
  SHA512:
6
- metadata.gz: f3000972a617e1f15500506c4e61909c50418dd9794c6516154962dd5f55b1173b612aa9d1bf0c23dbaee205ccc01abd93b1349f80147c53bc4f3640bb7739e6
7
- data.tar.gz: 9a021a5edb6bb22208d22cfc45fd17a486f9cd6c919a8a9495b2afe3b75a51b238172fd350f6977edd02669f7e77beab1ed7e53f7070bd36ebfa058dc52273a4
6
+ metadata.gz: a98249defe02854ceb5b865b6ed1c63cb78cf93ec2e70340428dc0a7ebc5f864fddd30f57108b7892959a3bbc9ab9a00c574c73d2e827e59d105f927347df2d0
7
+ data.tar.gz: 414b7753c72ea221e05a9b41f2563fe5c01c82025658aae6ca13bd705c791a7c78400c45e0663c7118b24d8007fcd7164c9ad88864a45767f472fa52e31ba99d
@@ -10,7 +10,6 @@ module EacRubyUtils
10
10
  module Envs
11
11
  class Command
12
12
  require_sub __FILE__, include_modules: true
13
- enable_console_speaker
14
13
 
15
14
  def initialize(env, command, extra_options = {})
16
15
  @env = env
@@ -61,17 +60,17 @@ module EacRubyUtils
61
60
 
62
61
  def execute(options = {})
63
62
  c = command(options)
64
- puts "BEFORE: #{c}".light_red if debug?
63
+ debug_print("BEFORE: #{c}")
65
64
  t1 = Time.now
66
65
  r = ::EacRubyUtils::Envs::Process.new(c).to_h
67
66
  i = Time.now - t1
68
- puts "AFTER [#{i}]: #{c}".light_red if debug?
67
+ debug_print("AFTER [#{i}]: #{c}")
69
68
  r
70
69
  end
71
70
 
72
71
  def spawn(options = {})
73
72
  c = command(options)
74
- puts "SPAWN: #{c}".light_red if debug?
73
+ debug_print("SPAWN: #{c}")
75
74
  ::EacRubyUtils::Envs::Spawn.new(c)
76
75
  end
77
76
 
@@ -83,7 +82,7 @@ module EacRubyUtils
83
82
 
84
83
  def system(options = {})
85
84
  c = command(options)
86
- puts c.light_red if debug?
85
+ debug_print(c)
87
86
  Kernel.system(c)
88
87
  end
89
88
 
@@ -109,6 +108,12 @@ module EacRubyUtils
109
108
  ENV['DEBUG'].to_s.strip != ''
110
109
  end
111
110
 
111
+ # Print a message if debugging is enabled.
112
+ def debug_print(message)
113
+ message = message.to_s
114
+ puts message.if_respond(:light_red, message) if debug?
115
+ end
116
+
112
117
  def append_command_options(command, options)
113
118
  command = options[:input].command + ' | ' + command if options[:input]
114
119
  if options[:input_file]
@@ -24,6 +24,12 @@ module EacRubyUtils
24
24
  ::File.read(content_path)
25
25
  end
26
26
 
27
+ def read_or_cache
28
+ write(yield) unless cached?
29
+
30
+ read
31
+ end
32
+
27
33
  def write(value)
28
34
  assert_directory_on_path
29
35
  ::File.write(content_path, value)
@@ -7,11 +7,19 @@ module EacRubyUtils
7
7
  class << self
8
8
  VARIABLE_NAME_PATTERN = /[_a-z][_a-z0-9]*/i.freeze
9
9
 
10
- def variableize(string)
10
+ # Convert a string to a variable format: first character as a lowercase letter or underscore
11
+ # and other as a lowercase letter, underscore or numbers.
12
+ # @param string [String] The source string.
13
+ # @param validate [Boolean] Affect the outcome when the result builded is not in a valid
14
+ # variable format. If `true`, it raises a {ArgumentError}. If `false`, return `nil`.
15
+ # @return [String, nil]
16
+ # @raise [ArgumentError]
17
+ def variableize(string, validate = true)
11
18
  r = ::ActiveSupport::Inflector.transliterate(string).gsub(/[^_a-z0-9]/i, '_')
12
19
  .gsub(/_+/, '_').gsub(/_\z/, '').gsub(/\A_/, '').downcase
13
20
  m = VARIABLE_NAME_PATTERN.match(r)
14
21
  return r if m
22
+ return nil unless validate
15
23
 
16
24
  raise ::ArgumentError, "Invalid variable name \"#{r}\" was generated " \
17
25
  "from string \"#{string}\""
@@ -54,8 +54,9 @@ module EacRubyUtils
54
54
  end
55
55
 
56
56
  def value_validate!(value, error_class = ::StandardError)
57
- value_valid?(value) ||
58
- raise(error_class, "Invalid value: \"#{value}\" (Valid: #{values_to_s})")
57
+ return value if value_valid?(value)
58
+
59
+ raise(error_class, "Invalid value: \"#{value}\" (Valid: #{values_to_s})")
59
60
  end
60
61
 
61
62
  def values_to_s
@@ -2,7 +2,9 @@
2
2
 
3
3
  module Kernel
4
4
  # Raise exception with text "Not yet implemented".
5
- def nyi
6
- raise "Not yet implemented (Called in #{caller.first})"
5
+ def nyi(message = nil)
6
+ s = "Not yet implemented (Called in #{caller.first})"
7
+ s += ": #{message}" if message
8
+ raise s
7
9
  end
8
10
  end
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'eac_ruby_utils/common_concern'
4
- require 'eac_ruby_utils/console/speaker'
5
4
 
6
5
  class Module
7
6
  def common_concern(&after_callback)
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/regexp_parser'
4
+
5
+ class Regexp
6
+ # @return [::EacRubyUtils::RegexpParser]
7
+ def to_parser(&block)
8
+ ::EacRubyUtils::RegexpParser.new(self, &block)
9
+ end
10
+ end
@@ -3,7 +3,9 @@
3
3
  require 'eac_ruby_utils/inflector'
4
4
 
5
5
  class String
6
- def variableize
7
- ::EacRubyUtils::Inflector.variableize(self)
6
+ # Shortcut to `EacRubyUtils::Inflector.variableize(self, ...)`.
7
+ # @see EacRubyUtils::Inflector.variableize
8
+ def variableize(validate = true)
9
+ ::EacRubyUtils::Inflector.variableize(self, validate)
8
10
  end
9
11
  end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacRubyUtils
4
+ class RegexpParser
5
+ attr_reader :pattern, :builder_proc
6
+
7
+ def initialize(pattern, &builder_proc)
8
+ @pattern = pattern
9
+ @builder_proc = builder_proc
10
+ end
11
+
12
+ def parse(string)
13
+ internal_parse(string)[1]
14
+ end
15
+
16
+ def parse!(string)
17
+ match, result = internal_parse(string)
18
+ return result if match
19
+
20
+ raise ::ArgumentError, "String \"#{string}\" does not match pattern \"#{pattern}\""
21
+ end
22
+
23
+ private
24
+
25
+ def internal_parse(string)
26
+ m = pattern.match(string)
27
+ if m
28
+ [true, builder_proc ? builder_proc.call(m) : m]
29
+ else
30
+ [false, nil]
31
+ end
32
+ end
33
+ end
34
+ end
@@ -1,13 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'active_support/core_ext/object/blank'
4
- require 'eac_ruby_utils/console/speaker'
5
4
 
6
5
  module EacRubyUtils
7
6
  module Rspec
8
7
  class Conditional
9
- include ::EacRubyUtils::Console::Speaker
10
-
11
8
  def self.default
12
9
  @default ||= new
13
10
  end
@@ -24,7 +21,7 @@ module EacRubyUtils
24
21
  tags.each do |tag, condition|
25
22
  message = condition.call
26
23
  if message.present?
27
- warn("Excluded tag: #{tag}: #{message}")
24
+ puts("[WARN] Excluded tag: #{tag}: #{message}")
28
25
  rspec_config.filter_run_excluding tag
29
26
  end
30
27
  end
@@ -2,12 +2,18 @@
2
2
 
3
3
  module EacRubyUtils
4
4
  module SimpleCache
5
- UNCACHED_METHOD_PATTERN = /\A(\s+)_uncached\z/.freeze
5
+ UNCACHED_METHOD_NAME_SUFFIX = '_uncached'
6
+ UNCACHED_METHOD_PATTERN = /\A(\s+)_#{::Regexp.quote(UNCACHED_METHOD_NAME_SUFFIX)}\z/.freeze
7
+
8
+ class << self
9
+ def uncached_method_name(method_name)
10
+ "#{method_name}#{UNCACHED_METHOD_NAME_SUFFIX}"
11
+ end
12
+ end
6
13
 
7
14
  def method_missing(method, *args, &block)
8
- uncached_method = "#{method}_uncached"
9
- if respond_to?(uncached_method, true)
10
- call_method_with_cache(uncached_method, args, &block)
15
+ if respond_to?(::EacRubyUtils::SimpleCache.uncached_method_name(method), true)
16
+ call_method_with_cache(method, args, &block)
11
17
  else
12
18
  super
13
19
  end
@@ -35,10 +41,17 @@ module EacRubyUtils
35
41
  raise 'Não é possível realizar o cache de métodos com bloco' if block
36
42
 
37
43
  key = ([method] + args).join('@@@')
38
- cache_keys[key] = send(method, *args) unless cache_keys.key?(key)
44
+ unless cache_keys.key?(key)
45
+ uncached_value = call_uncached_method(method, args)
46
+ cache_keys[key] = uncached_value
47
+ end
39
48
  cache_keys[key]
40
49
  end
41
50
 
51
+ def call_uncached_method(method, args)
52
+ send(::EacRubyUtils::SimpleCache.uncached_method_name(method), *args)
53
+ end
54
+
42
55
  def cache_keys
43
56
  @cache_keys ||= {}
44
57
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacRubyUtils
4
- VERSION = '0.61.0'
4
+ VERSION = '0.65.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eac_ruby_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.61.0
4
+ version: 0.65.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esquilo Azul Company
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-17 00:00:00.000000000 Z
11
+ date: 2021-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -38,34 +38,6 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2.6'
41
- - !ruby/object:Gem::Dependency
42
- name: colorize
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: 0.8.1
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: 0.8.1
55
- - !ruby/object:Gem::Dependency
56
- name: docopt
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: 0.6.1
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: 0.6.1
69
41
  - !ruby/object:Gem::Dependency
70
42
  name: filesize
71
43
  requirement: !ruby/object:Gem::Requirement
@@ -100,20 +72,14 @@ dependencies:
100
72
  requirements:
101
73
  - - "~>"
102
74
  - !ruby/object:Gem::Version
103
- version: '0.1'
104
- - - ">="
105
- - !ruby/object:Gem::Version
106
- version: 0.1.1
75
+ version: '0.2'
107
76
  type: :development
108
77
  prerelease: false
109
78
  version_requirements: !ruby/object:Gem::Requirement
110
79
  requirements:
111
80
  - - "~>"
112
81
  - !ruby/object:Gem::Version
113
- version: '0.1'
114
- - - ">="
115
- - !ruby/object:Gem::Version
116
- version: 0.1.1
82
+ version: '0.2'
117
83
  description:
118
84
  email:
119
85
  executables: []
@@ -134,26 +100,6 @@ files:
134
100
  - lib/eac_ruby_utils/common_constructor/class_initialize.rb
135
101
  - lib/eac_ruby_utils/common_constructor/instance_initialize.rb
136
102
  - lib/eac_ruby_utils/common_constructor/super_args.rb
137
- - lib/eac_ruby_utils/configs.rb
138
- - lib/eac_ruby_utils/configs/base.rb
139
- - lib/eac_ruby_utils/configs/file.rb
140
- - lib/eac_ruby_utils/console.rb
141
- - lib/eac_ruby_utils/console/configs.rb
142
- - lib/eac_ruby_utils/console/configs/entry_reader.rb
143
- - lib/eac_ruby_utils/console/configs/password_entry_reader.rb
144
- - lib/eac_ruby_utils/console/configs/read_entry_options.rb
145
- - lib/eac_ruby_utils/console/configs/store_passwords_entry_reader.rb
146
- - lib/eac_ruby_utils/console/docopt_runner.rb
147
- - lib/eac_ruby_utils/console/docopt_runner/_class_methods.rb
148
- - lib/eac_ruby_utils/console/docopt_runner/_doc.rb
149
- - lib/eac_ruby_utils/console/docopt_runner/_settings.rb
150
- - lib/eac_ruby_utils/console/docopt_runner/_subcommands.rb
151
- - lib/eac_ruby_utils/console/speaker.rb
152
- - lib/eac_ruby_utils/console/speaker/_class_methods.rb
153
- - lib/eac_ruby_utils/console/speaker/_constants.rb
154
- - lib/eac_ruby_utils/console/speaker/list.rb
155
- - lib/eac_ruby_utils/console/speaker/node.rb
156
- - lib/eac_ruby_utils/contextualizable.rb
157
103
  - lib/eac_ruby_utils/core_ext.rb
158
104
  - lib/eac_ruby_utils/custom_format.rb
159
105
  - lib/eac_ruby_utils/envs.rb
@@ -222,33 +168,28 @@ files:
222
168
  - lib/eac_ruby_utils/patches/module.rb
223
169
  - lib/eac_ruby_utils/patches/module/abstract_methods.rb
224
170
  - lib/eac_ruby_utils/patches/module/common_concern.rb
225
- - lib/eac_ruby_utils/patches/module/console_speaker.rb
226
171
  - lib/eac_ruby_utils/patches/module/immutable.rb
227
172
  - lib/eac_ruby_utils/patches/module/listable.rb
228
173
  - lib/eac_ruby_utils/patches/module/patch.rb
229
174
  - lib/eac_ruby_utils/patches/module/require_sub.rb
230
175
  - lib/eac_ruby_utils/patches/module/simple_cache.rb
231
- - lib/eac_ruby_utils/patches/module/template.rb
232
176
  - lib/eac_ruby_utils/patches/object.rb
233
177
  - lib/eac_ruby_utils/patches/object/asserts.rb
234
178
  - lib/eac_ruby_utils/patches/object/debug.rb
235
179
  - lib/eac_ruby_utils/patches/object/if_nil.rb
236
180
  - lib/eac_ruby_utils/patches/object/if_present.rb
237
181
  - lib/eac_ruby_utils/patches/object/if_respond.rb
238
- - lib/eac_ruby_utils/patches/object/template.rb
239
182
  - lib/eac_ruby_utils/patches/object/to_pathname.rb
240
183
  - lib/eac_ruby_utils/patches/pathname.rb
241
184
  - lib/eac_ruby_utils/patches/pathname/basename_sub.rb
242
185
  - lib/eac_ruby_utils/patches/regexp.rb
243
186
  - lib/eac_ruby_utils/patches/regexp/if_match.rb
187
+ - lib/eac_ruby_utils/patches/regexp/to_parser.rb
244
188
  - lib/eac_ruby_utils/patches/string.rb
245
189
  - lib/eac_ruby_utils/patches/string/inflector.rb
246
190
  - lib/eac_ruby_utils/patches/time.rb
247
191
  - lib/eac_ruby_utils/patches/time/required_zone.rb
248
- - lib/eac_ruby_utils/paths_hash.rb
249
- - lib/eac_ruby_utils/paths_hash/entry_key_error.rb
250
- - lib/eac_ruby_utils/paths_hash/node.rb
251
- - lib/eac_ruby_utils/paths_hash/path_search.rb
192
+ - lib/eac_ruby_utils/regexp_parser.rb
252
193
  - lib/eac_ruby_utils/require_sub.rb
253
194
  - lib/eac_ruby_utils/rspec.rb
254
195
  - lib/eac_ruby_utils/rspec/conditional.rb
@@ -260,16 +201,6 @@ files:
260
201
  - lib/eac_ruby_utils/settings_provider/setting_value.rb
261
202
  - lib/eac_ruby_utils/simple_cache.rb
262
203
  - lib/eac_ruby_utils/struct.rb
263
- - lib/eac_ruby_utils/templates.rb
264
- - lib/eac_ruby_utils/templates/directory.rb
265
- - lib/eac_ruby_utils/templates/file.rb
266
- - lib/eac_ruby_utils/templates/searcher.rb
267
- - lib/eac_ruby_utils/templates/variable_not_found_error.rb
268
- - lib/eac_ruby_utils/templates/variable_providers.rb
269
- - lib/eac_ruby_utils/templates/variable_providers/base.rb
270
- - lib/eac_ruby_utils/templates/variable_providers/entries_reader.rb
271
- - lib/eac_ruby_utils/templates/variable_providers/generic.rb
272
- - lib/eac_ruby_utils/templates/variable_providers/hash.rb
273
204
  - lib/eac_ruby_utils/version.rb
274
205
  - lib/eac_ruby_utils/yaml.rb
275
206
  homepage:
@@ -1,74 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'active_support/core_ext/string'
4
- require 'yaml'
5
- require 'eac_ruby_utils/configs/file'
6
- require 'eac_ruby_utils/patches/hash/sym_keys_hash'
7
- require 'eac_ruby_utils/paths_hash'
8
- require 'eac_ruby_utils/simple_cache'
9
-
10
- module EacRubyUtils
11
- class Configs
12
- include ::EacRubyUtils::SimpleCache
13
-
14
- attr_reader :configs_key, :options
15
-
16
- # Valid options: [:storage_path]
17
- def initialize(configs_key, options = {})
18
- @configs_key = configs_key
19
- @options = options.to_sym_keys_hash.freeze
20
- load
21
- end
22
-
23
- delegate :clear, to: :file
24
-
25
- delegate :save, to: :file
26
-
27
- delegate :load, to: :file
28
-
29
- def []=(entry_key, entry_value)
30
- write_entry(entry_key, entry_value)
31
- end
32
-
33
- def write_entry(entry_key, entry_value)
34
- file.write(entry_key, entry_value)
35
- end
36
-
37
- def [](entry_key)
38
- read_entry(entry_key)
39
- end
40
-
41
- def read_entry(entry_key)
42
- file.read(entry_key)
43
- end
44
-
45
- delegate :autosave?, to: :file
46
-
47
- private
48
-
49
- attr_accessor :data
50
-
51
- def file_uncached
52
- ::EacRubyUtils::Configs::File.new(
53
- storage_path, options
54
- )
55
- end
56
-
57
- def storage_path_uncached
58
- path = options_storage_path || default_storage_path
59
- return path if ::File.exist?(path) && ::File.size(path).positive?
60
-
61
- ::FileUtils.mkdir_p(::File.dirname(path))
62
- ::File.write(path, {}.to_yaml)
63
- path
64
- end
65
-
66
- def options_storage_path
67
- options[:storage_path]
68
- end
69
-
70
- def default_storage_path
71
- ::File.join(ENV['HOME'], '.config', configs_key, 'settings.yml')
72
- end
73
- end
74
- end