eac_ruby_utils 0.57.0 → 0.59.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: 65af57191dbd9317c68eb8e171e53e4c39877f88d7ce212e0701703b6ff83d11
4
- data.tar.gz: c6caa9d9461c8055f1977cfb9ea4446bc2cef0fd2c1c0e919fcde296512aff30
3
+ metadata.gz: 548ad31ed6381e0a51802ea856dfa885fdaef16080305285698872baa9dc9b24
4
+ data.tar.gz: ee4ddee8e898704ef248d82296d7cb63093a3ff8a72e929b6815c854e8e66e70
5
5
  SHA512:
6
- metadata.gz: e1e8ed1d73a37aff540712171468c9f03107cf956a1d52ef0b66a4518e679bc0f156ba06027afd0a450a94995445f6806432f2295f774d81442f76467b34180e
7
- data.tar.gz: cbd75d3662cc207ac95750b3248d1904c96886c62b55494dedfbd1de22238359801cc8d49c01e51c075a376a95da445022def8546e3672401dc41796d136e3cd
6
+ metadata.gz: 2dcbd2e28932d4a287e94798511973b1ec0803838294f2eba2d5fb7ea5e7399ee5092d2bde598e5f403195c3832bdc57a4de2a9ba7514ac4f3c9ff5f23523243
7
+ data.tar.gz: 8a3259581c69448604dcc452f7ede39ef6ba1eaf9081d609c837e16377aa11bdd0bba9100256226334b7863149a5d93ad43d4410b4d7b660ce61f6498850612c
@@ -57,8 +57,6 @@ module EacRubyUtils
57
57
  user_check_file(path)
58
58
  elsif path.directory?
59
59
  inner_check_directory(path, level)
60
- else
61
- raise "Unknown filesystem object: #{path}"
62
60
  end
63
61
  end
64
62
 
@@ -1,12 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'active_support/inflector'
4
+
3
5
  module EacRubyUtils
4
6
  class Inflector
5
7
  class << self
6
8
  VARIABLE_NAME_PATTERN = /[_a-z][_a-z0-9]*/i.freeze
7
9
 
8
10
  def variableize(string)
9
- r = string.gsub(/[^_a-z0-9]/i, '_').gsub(/_+/, '_').gsub(/_\z/, '').gsub(/\A_/, '').downcase
11
+ r = ::ActiveSupport::Inflector.transliterate(string).gsub(/[^_a-z0-9]/i, '_')
12
+ .gsub(/_+/, '_').gsub(/_\z/, '').gsub(/\A_/, '').downcase
10
13
  m = VARIABLE_NAME_PATTERN.match(r)
11
14
  return r if m
12
15
 
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/core_ext/object/blank'
4
+ require 'active_support/values/time_zone'
5
+
6
+ module EacRubyUtils
7
+ module LocalTimeZone
8
+ DEBIAN_CONFIG_PATH = '/etc/timezone'
9
+
10
+ class << self
11
+ TIMEDATECTL_TIMEZONE_LINE_PATTERN = %r{\s*Time zone:\s*(\S+/\S+)\s}.freeze
12
+
13
+ # @return [ActiveSupport::TimeZone]
14
+ def auto
15
+ %w[tz_env debian_config offset].lazy.map { |s| send("by_#{s}") }.find(&:present?)
16
+ end
17
+
18
+ def auto_set
19
+ ::Time.zone = auto
20
+ end
21
+
22
+ # @return [ActiveSupport::TimeZone]
23
+ def by_debian_config
24
+ path = ::Pathname.new(DEBIAN_CONFIG_PATH)
25
+ path.exist? ? path.read.strip.if_present { |v| ::ActiveSupport::TimeZone[v] } : nil
26
+ end
27
+
28
+ # @return [ActiveSupport::TimeZone]
29
+ def by_offset
30
+ ::ActiveSupport::TimeZone[::Time.now.getlocal.gmt_offset]
31
+ end
32
+
33
+ # @return [ActiveSupport::TimeZone]
34
+ def by_timedatectl
35
+ executable = ::EacRubyUtils::Envs.local.executable('timedatectl', '--version')
36
+ return nil unless executable.exist?
37
+
38
+ TIMEDATECTL_TIMEZONE_LINE_PATTERN.if_match(executable.command.execute!) { |m| m[1] }
39
+ .if_present { |v| ::ActiveSupport::TimeZone[v] }
40
+ end
41
+
42
+ # @return [ActiveSupport::TimeZone]
43
+ def by_tz_env
44
+ ENV['TZ'].presence
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/patch'
4
+ require 'eac_ruby_utils/settings_provider'
5
+
6
+ class Class
7
+ def enable_settings_provider
8
+ ::EacRubyUtils.patch(self, ::EacRubyUtils::SettingsProvider)
9
+ end
10
+ end
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/require_sub'
4
+ ::EacRubyUtils.require_sub(__FILE__)
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Kernel
4
+ # Raise exception with text "Not yet implemented".
5
+ def nyi
6
+ raise "Not yet implemented (Called in #{caller.first})"
7
+ end
8
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Object
4
+ # @return +block.call(self)+ if +self+ is not nil, +default_value+ otherwise.
5
+ def if_not_nil(default_value = nil)
6
+ return default_value if nil?
7
+
8
+ block_given? ? yield(self) : self
9
+ end
10
+
11
+ # @return +yield+ if +self+ is nil, +self+ otherwise.
12
+ def if_nil
13
+ return yield if nil? && block_given?
14
+
15
+ self
16
+ end
17
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/local_time_zone'
4
+
5
+ class Time
6
+ class << self
7
+ def required_zone
8
+ zone || ::EacRubyUtils::LocalTimeZone.auto || raise('No zone set or discovered')
9
+ end
10
+ end
11
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacRubyUtils
4
- VERSION = '0.57.0'
4
+ VERSION = '0.59.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.57.0
4
+ version: 0.59.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-01-02 00:00:00.000000000 Z
11
+ date: 2021-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -186,12 +186,14 @@ files:
186
186
  - lib/eac_ruby_utils/listable/string_list.rb
187
187
  - lib/eac_ruby_utils/listable/symbol_list.rb
188
188
  - lib/eac_ruby_utils/listable/value.rb
189
+ - lib/eac_ruby_utils/local_time_zone.rb
189
190
  - lib/eac_ruby_utils/on_clean_ruby_environment.rb
190
191
  - lib/eac_ruby_utils/options_consumer.rb
191
192
  - lib/eac_ruby_utils/patch.rb
192
193
  - lib/eac_ruby_utils/patches.rb
193
194
  - lib/eac_ruby_utils/patches/class.rb
194
195
  - lib/eac_ruby_utils/patches/class/common_constructor.rb
196
+ - lib/eac_ruby_utils/patches/class/settings_provider.rb
195
197
  - lib/eac_ruby_utils/patches/enumerable.rb
196
198
  - lib/eac_ruby_utils/patches/enumerable/boolean_combinations.rb
197
199
  - lib/eac_ruby_utils/patches/enumerator.rb
@@ -200,6 +202,8 @@ files:
200
202
  - lib/eac_ruby_utils/patches/hash.rb
201
203
  - lib/eac_ruby_utils/patches/hash/options_consumer.rb
202
204
  - lib/eac_ruby_utils/patches/hash/sym_keys_hash.rb
205
+ - lib/eac_ruby_utils/patches/kernel.rb
206
+ - lib/eac_ruby_utils/patches/kernel/nyi.rb
203
207
  - lib/eac_ruby_utils/patches/module.rb
204
208
  - lib/eac_ruby_utils/patches/module/abstract_methods.rb
205
209
  - lib/eac_ruby_utils/patches/module/common_concern.rb
@@ -213,6 +217,7 @@ files:
213
217
  - lib/eac_ruby_utils/patches/object.rb
214
218
  - lib/eac_ruby_utils/patches/object/asserts.rb
215
219
  - lib/eac_ruby_utils/patches/object/debug.rb
220
+ - lib/eac_ruby_utils/patches/object/if_nil.rb
216
221
  - lib/eac_ruby_utils/patches/object/if_present.rb
217
222
  - lib/eac_ruby_utils/patches/object/if_respond.rb
218
223
  - lib/eac_ruby_utils/patches/object/template.rb
@@ -224,8 +229,7 @@ files:
224
229
  - lib/eac_ruby_utils/patches/string.rb
225
230
  - lib/eac_ruby_utils/patches/string/inflector.rb
226
231
  - lib/eac_ruby_utils/patches/time.rb
227
- - lib/eac_ruby_utils/patches/time/default_time_zone_set.rb
228
- - lib/eac_ruby_utils/patches/time/local_time_zone.rb
232
+ - lib/eac_ruby_utils/patches/time/required_zone.rb
229
233
  - lib/eac_ruby_utils/paths_hash.rb
230
234
  - lib/eac_ruby_utils/paths_hash/entry_key_error.rb
231
235
  - lib/eac_ruby_utils/paths_hash/node.rb
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_ruby_utils/patches/time/local_time_zone'
4
-
5
- ::Time.zone = ::Time.local_time_zone
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'active_support/core_ext/time/zones'
4
- require 'eac_ruby_utils/envs'
5
-
6
- class Time
7
- class << self
8
- TIMEDATECTL_TIMEZONE_LINE_PATTERN = %r{\s*Time zone:\s*(\S+/\S+)\s}.freeze
9
-
10
- def local_time_zone
11
- local_time_zone_by_timedatectl || local_time_zone_by_offset
12
- end
13
-
14
- def local_time_zone_by_timedatectl
15
- executable = ::EacRubyUtils::Envs.local.executable('timedatectl', '--version')
16
- return nil unless executable.exist?
17
-
18
- TIMEDATECTL_TIMEZONE_LINE_PATTERN.if_match(executable.command.execute!) { |m| m[1] }
19
- end
20
-
21
- def local_time_zone_by_offset
22
- ::ActiveSupport::TimeZone[::Time.now.getlocal.gmt_offset].name
23
- end
24
- end
25
- end