eac_ruby_utils 0.61.0 → 0.65.0

Sign up to get free protection for your applications and to get access to all the features.
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