eac_ruby_utils 0.68.0 → 0.71.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: e3efdb1a6b5314499bf9a4ea397ffbb6f60234d4300170f84f47f113cc530604
4
- data.tar.gz: 76d6c0005193c3c52c05bcf1c9d037908c909728fb5d51cae0a840de0fb06d6c
3
+ metadata.gz: 5ac58b6068bc75fe11061fa1f801f9ad5968349e926091224a60b7f2e3ed035a
4
+ data.tar.gz: 61d5b30e7d2e3c78c396024793dcc1666b062471793914910c2a787c717fc160
5
5
  SHA512:
6
- metadata.gz: dfe79da4c2ac368cc8db6e06f7ae2fafdc18987ab66ebd5a020cac638022bebb11fa1752e6e42bb15f01a2d93b612cf6e653bbf2569b377abacd82761fa761a1
7
- data.tar.gz: 6bbb5c7b6757fca0b4b0f66451cb318b4e73608c2c9ce16e6d02a65d85d8a12fe5d021790bf674a7d722517294f65e9667d7c66fdb624f085e1f3d96c1b1cc0b
6
+ metadata.gz: eb8f48fff07497fb711ce0bff11268436073d191d94160c3f1c328a8330e55177b4697b4428bc3049ddf41ac9ebc13f8c3ebc4262898b17e7c2ce973d2a1bf30
7
+ data.tar.gz: 2f12ec4daab1375f8d7165edc804e486dde44783b830dbe9d3d5c432d805658430e6674f9f2c5660ed1a07c5d2e53b4105d5905be3c61cfe902d6d2a434cb254
@@ -6,7 +6,7 @@ module EacRubyUtils
6
6
  def parse(value)
7
7
  return parse_string(value) if value.is_a?(::String)
8
8
  return parse_string(value.to_s) if value.is_a?(::Symbol)
9
- return parse_number(value) if value.is_a?(::Number)
9
+ return parse_number(value) if value.is_a?(::Numeric)
10
10
 
11
11
  value ? true : false
12
12
  end
@@ -22,7 +22,7 @@ module EacRubyUtils
22
22
  def validate
23
23
  return nil if exist?
24
24
 
25
- "Program \"#{name}\" not found in environment #{env}"
25
+ "Program \"#{::Shellwords.join(executable_args)}\" not found in environment #{env}"
26
26
  end
27
27
 
28
28
  def validate!
@@ -33,13 +33,25 @@ module EacRubyUtils
33
33
 
34
34
  def command(*command_args)
35
35
  validate!
36
- env.command(name, *command_args)
36
+ env.command(*executable_args, *command_args)
37
+ end
38
+
39
+ def executable_args
40
+ executable_args_from_envvar || [name]
41
+ end
42
+
43
+ def executable_args_envvar
44
+ "#{name}_command".variableize.upcase
45
+ end
46
+
47
+ def executable_args_from_envvar
48
+ ENV[executable_args_envvar].if_present { |v| ::Shellwords.split(v) }
37
49
  end
38
50
 
39
51
  private
40
52
 
41
53
  def exist_uncached
42
- env.command(name, *check_args).execute!
54
+ env.command(*executable_args, *check_args).execute!
43
55
  true
44
56
  rescue Errno::ENOENT
45
57
  false
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rubygems'
4
+ require 'eac_ruby_utils/gems_registry/gem'
5
+
6
+ module EacRubyUtils
7
+ # Search in each gem for a class determined by registry and run the method "register" on each
8
+ # found.
9
+ #
10
+ # Example:
11
+ # * The module suffix is `TheClass`;
12
+ # * A gem with name "my-lib" is being analyzed
13
+ # * If a require for "my/lib/the_class" is succesful the class/module `My::Lib::TheClass` will
14
+ # be collected.
15
+ class GemsRegistry
16
+ attr_reader :module_suffix
17
+
18
+ def initialize(module_suffix)
19
+ @module_suffix = module_suffix
20
+ end
21
+
22
+ # @return [Array<EacRubyUtils::GemsRegistry::Gem>]
23
+ def registered
24
+ @registered ||= all_gems.select(&:found?)
25
+ end
26
+
27
+ private
28
+
29
+ # @return [Array<EacRubyUtils::GemsRegistry::Gem>]
30
+ def all_gems
31
+ ::Gem::Specification.map do |gemspec|
32
+ ::EacRubyUtils::GemsRegistry::Gem.new(self, gemspec)
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/core_ext/string/inflections'
4
+
5
+ module EacRubyUtils
6
+ class GemsRegistry
7
+ class Gem
8
+ attr_reader :registry, :gemspec
9
+
10
+ def initialize(registry, gemspec)
11
+ @registry = registry
12
+ @gemspec = gemspec
13
+ end
14
+
15
+ def found?
16
+ lib_file_found? && registered_module.is_a?(::Module)
17
+ end
18
+
19
+ def lib_file_found?
20
+ gemspec.require_paths.any? do |require_path|
21
+ ::Pathname.new(require_path).expand_path(gemspec.gem_dir).join(path_to_require + '.rb')
22
+ .file?
23
+ end
24
+ end
25
+
26
+ def registered_module
27
+ return nil unless lib_file_found?
28
+
29
+ require path_to_require
30
+ path_to_require.classify.constantize
31
+ end
32
+
33
+ # @return [String]
34
+ def path_to_require
35
+ gemspec.name.gsub('-', '/') + '/' + registry.module_suffix.underscore
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'pathname'
4
+
5
+ class Pathname
6
+ # Apply .parent n times.
7
+ # @return [Pathname]
8
+ def parent_n(n) # rubocop:disable Naming/MethodParameterName
9
+ n.times.inject(self) { |a, _e| a.parent }
10
+ end
11
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/rspec/setup'
4
+
5
+ module EacRubyUtils
6
+ module Rspec
7
+ class << self
8
+ def default_setup
9
+ @default_setup ||
10
+ raise("Default instance was not set. Use #{self.class.name}.default_setup_create")
11
+ end
12
+
13
+ def default_setup_create(app_root_path, rspec_config = nil)
14
+ @default_setup = ::EacRubyUtils::Rspec::Setup.create(app_root_path, rspec_config)
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/gems_registry'
4
+ require 'eac_ruby_utils/patches/object/if_respond'
5
+ require 'eac_ruby_utils/patches/object/to_pathname'
6
+
7
+ module EacRubyUtils
8
+ module Rspec
9
+ class Setup
10
+ GEMS_REGISTRY_SUFFIX = 'Rspec::SetupInclude'
11
+
12
+ class << self
13
+ def create(app_root_path, rspec_config = nil)
14
+ if rspec_config
15
+ new(app_root_path, rspec_config)
16
+ else
17
+ ::RSpec.configure { |new_rspec_config| new(app_root_path, new_rspec_config) }
18
+ end
19
+ end
20
+ end
21
+
22
+ attr_reader :app_root_path, :rspec_config
23
+
24
+ def initialize(app_root_path, rspec_config)
25
+ @app_root_path = app_root_path.to_pathname
26
+ @rspec_config = rspec_config
27
+ include_registry
28
+ end
29
+
30
+ # @return [EacRubyUtils::GemsRegistry]
31
+ def gems_registry
32
+ @gems_registry ||= ::EacRubyUtils::GemsRegistry.new(GEMS_REGISTRY_SUFFIX)
33
+ end
34
+
35
+ protected
36
+
37
+ def include_registry
38
+ gems_registry.registered.each do |gem|
39
+ singleton_class.include(gem.registered_module)
40
+ gem.registered_module.setup(self) if gem.registered_module.respond_to?(:setup)
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacRubyUtils
4
- VERSION = '0.68.0'
4
+ VERSION = '0.71.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.68.0
4
+ version: 0.71.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-06-11 00:00:00.000000000 Z
11
+ date: 2021-07-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0.2'
75
+ version: '0.3'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0.2'
82
+ version: '0.3'
83
83
  description:
84
84
  email:
85
85
  executables: []
@@ -131,6 +131,8 @@ files:
131
131
  - lib/eac_ruby_utils/fs/traversable.rb
132
132
  - lib/eac_ruby_utils/fs/traverser.rb
133
133
  - lib/eac_ruby_utils/fs_cache.rb
134
+ - lib/eac_ruby_utils/gems_registry.rb
135
+ - lib/eac_ruby_utils/gems_registry/gem.rb
134
136
  - lib/eac_ruby_utils/immutable.rb
135
137
  - lib/eac_ruby_utils/immutable/array_accessor.rb
136
138
  - lib/eac_ruby_utils/immutable/base_accessor.rb
@@ -186,6 +188,7 @@ files:
186
188
  - lib/eac_ruby_utils/patches/object/to_pathname.rb
187
189
  - lib/eac_ruby_utils/patches/pathname.rb
188
190
  - lib/eac_ruby_utils/patches/pathname/basename_sub.rb
191
+ - lib/eac_ruby_utils/patches/pathname/parent_n.rb
189
192
  - lib/eac_ruby_utils/patches/regexp.rb
190
193
  - lib/eac_ruby_utils/patches/regexp/if_match.rb
191
194
  - lib/eac_ruby_utils/patches/regexp/to_parser.rb
@@ -197,6 +200,8 @@ files:
197
200
  - lib/eac_ruby_utils/require_sub.rb
198
201
  - lib/eac_ruby_utils/rspec.rb
199
202
  - lib/eac_ruby_utils/rspec/conditional.rb
203
+ - lib/eac_ruby_utils/rspec/default_setup.rb
204
+ - lib/eac_ruby_utils/rspec/setup.rb
200
205
  - lib/eac_ruby_utils/rspec/stubbed_ssh.rb
201
206
  - lib/eac_ruby_utils/ruby.rb
202
207
  - lib/eac_ruby_utils/ruby/command.rb
@@ -229,7 +234,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
229
234
  - !ruby/object:Gem::Version
230
235
  version: '0'
231
236
  requirements: []
232
- rubygems_version: 3.0.9
237
+ rubygems_version: 3.1.6
233
238
  signing_key:
234
239
  specification_version: 4
235
240
  summary: Utilities for E.A.C.'s Ruby projects.