eac_ruby_utils 0.71.0 → 0.74.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: 5ac58b6068bc75fe11061fa1f801f9ad5968349e926091224a60b7f2e3ed035a
4
- data.tar.gz: 61d5b30e7d2e3c78c396024793dcc1666b062471793914910c2a787c717fc160
3
+ metadata.gz: c880b9a4d8c7f5bdeaeb79714b93d4cb06a27b60284351ce0efebc6604314a7f
4
+ data.tar.gz: 8f6673a2c76689929d05c263130013c5ac3194da3dd79308e5547f26106ff4f4
5
5
  SHA512:
6
- metadata.gz: eb8f48fff07497fb711ce0bff11268436073d191d94160c3f1c328a8330e55177b4697b4428bc3049ddf41ac9ebc13f8c3ebc4262898b17e7c2ce973d2a1bf30
7
- data.tar.gz: 2f12ec4daab1375f8d7165edc804e486dde44783b830dbe9d3d5c432d805658430e6674f9f2c5660ed1a07c5d2e53b4105d5905be3c61cfe902d6d2a434cb254
6
+ metadata.gz: b18f437b042599390df09581bbd8458598d9e1ed9db610393f5dae710c91414acf4363eab6d60f04fcb4612b9b20ffe340c3d24b050f4ea93512037196cebe18
7
+ data.tar.gz: 78c592a8a35f720d2cf4a6a7e97c920fb21ab98d1d6e5b6496cdc3ee1c8d97585d2e63125ff81d58a84a582b6e99f5f4adc96d565749c8a40bded6ba046fd7a5
@@ -28,9 +28,8 @@ module EacRubyUtils
28
28
 
29
29
  # @return [Array<EacRubyUtils::GemsRegistry::Gem>]
30
30
  def all_gems
31
- ::Gem::Specification.map do |gemspec|
32
- ::EacRubyUtils::GemsRegistry::Gem.new(self, gemspec)
33
- end
31
+ ::Gem::Specification.map { |gemspec| ::EacRubyUtils::GemsRegistry::Gem.new(self, gemspec) }
32
+ .sort
34
33
  end
35
34
  end
36
35
  end
@@ -1,10 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'active_support/core_ext/string/inflections'
4
+ require 'eac_ruby_utils/recursive_builder'
5
+ require 'eac_ruby_utils/simple_cache'
4
6
 
5
7
  module EacRubyUtils
6
8
  class GemsRegistry
7
9
  class Gem
10
+ include ::Comparable
11
+ include ::EacRubyUtils::SimpleCache
12
+
8
13
  attr_reader :registry, :gemspec
9
14
 
10
15
  def initialize(registry, gemspec)
@@ -12,6 +17,23 @@ module EacRubyUtils
12
17
  @gemspec = gemspec
13
18
  end
14
19
 
20
+ def depend_on(gem)
21
+ dependencies.lazy.map(&:name).include?(gem.gemspec.name)
22
+ end
23
+
24
+ def dependencies
25
+ @dependencies ||= dependencies_uncached # dependencies_uncached
26
+ end
27
+
28
+ def <=>(other)
29
+ sd = depend_on(other)
30
+ od = other.depend_on(self)
31
+ return 1 if sd && !od
32
+ return -1 if od && !sd
33
+
34
+ gemspec.name <=> other.gemspec.name
35
+ end
36
+
15
37
  def found?
16
38
  lib_file_found? && registered_module.is_a?(::Module)
17
39
  end
@@ -34,6 +56,20 @@ module EacRubyUtils
34
56
  def path_to_require
35
57
  gemspec.name.gsub('-', '/') + '/' + registry.module_suffix.underscore
36
58
  end
59
+
60
+ private
61
+
62
+ def dependencies_uncached
63
+ ::EacRubyUtils::RecursiveBuilder
64
+ .new(gemspec) { |item| gem_item_dependencies(item) }
65
+ .result
66
+ end
67
+
68
+ def gem_item_dependencies(item)
69
+ ::Gem::Specification.find_by_name(item.name).dependencies
70
+ rescue ::Gem::MissingSpecError
71
+ []
72
+ end
37
73
  end
38
74
  end
39
75
  end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/simple_cache'
4
+
5
+ module EacRubyUtils
6
+ class RecursiveBuilder
7
+ include ::EacRubyUtils::SimpleCache
8
+
9
+ attr_reader :root, :neighbors_block
10
+
11
+ def initialize(root, &neighbors_block)
12
+ @root = root
13
+ @neighbors_block = neighbors_block
14
+ end
15
+
16
+ private
17
+
18
+ attr_reader :added, :to_check
19
+
20
+ def result_uncached
21
+ @added = []
22
+ @to_check = []
23
+ item_try_add_to_check(root)
24
+ while check_next_item
25
+ # Do nothing
26
+ end
27
+ added
28
+ end
29
+
30
+ def item_try_add_to_check(item)
31
+ to_check << item unless item_added?(item)
32
+ end
33
+
34
+ def item_added?(item)
35
+ added.include?(item) || to_check.include?(item)
36
+ end
37
+
38
+ def check_next_item
39
+ return false unless to_check.any?
40
+
41
+ item = to_check.shift
42
+ added << item
43
+ item_neighborhs(item).each { |sub_item| item_try_add_to_check(sub_item) }
44
+ true
45
+ end
46
+
47
+ def item_neighborhs(item)
48
+ neighbors_block.call(item)
49
+ end
50
+ end
51
+ end
@@ -1,17 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'eac_ruby_utils/rspec/setup'
3
+ require 'eac_ruby_utils/rspec/setup_manager'
4
4
 
5
5
  module EacRubyUtils
6
6
  module Rspec
7
7
  class << self
8
+ # @return [EacRubyUtils::Rspec::SetupManager]
8
9
  def default_setup
9
10
  @default_setup ||
10
11
  raise("Default instance was not set. Use #{self.class.name}.default_setup_create")
11
12
  end
12
13
 
14
+ # @return [EacRubyUtils::Rspec::SetupManager]
13
15
  def default_setup_create(app_root_path, rspec_config = nil)
14
- @default_setup = ::EacRubyUtils::Rspec::Setup.create(app_root_path, rspec_config)
16
+ @default_setup = ::EacRubyUtils::Rspec::SetupManager.create(app_root_path, rspec_config)
15
17
  end
16
18
  end
17
19
  end
@@ -1,45 +1,12 @@
1
1
  # frozen_string_literal: true
2
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'
3
+ require 'eac_ruby_utils/core_ext'
6
4
 
7
5
  module EacRubyUtils
8
6
  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
7
+ module Setup
8
+ extend ::ActiveSupport::Concern
9
+ require_sub __FILE__, include_modules: true
43
10
  end
44
11
  end
45
12
  end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacRubyUtils
4
+ module Rspec
5
+ module Setup
6
+ module Conditionals
7
+ def conditional(tag, &condition)
8
+ message = condition.call
9
+ return if message.blank?
10
+
11
+ puts("[WARN] Excluded tag: #{tag}: #{message}")
12
+ rspec_config.filter_run_excluding tag
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,49 @@
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 SetupManager
10
+ GEMS_REGISTRY_SUFFIX = 'Rspec::Setup'
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
+ include_gem_registered(gem.registered_module)
40
+ end
41
+ end
42
+
43
+ # @param gem [EacRubyUtils::GemsRegistry::Gem]
44
+ def include_gem_registered(registered_module)
45
+ extend(registered_module)
46
+ end
47
+ end
48
+ end
49
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacRubyUtils
4
- VERSION = '0.71.0'
4
+ VERSION = '0.74.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.71.0
4
+ version: 0.74.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-07-29 00:00:00.000000000 Z
11
+ date: 2021-08-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -73,6 +73,9 @@ dependencies:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0.3'
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: 0.3.2
76
79
  type: :development
77
80
  prerelease: false
78
81
  version_requirements: !ruby/object:Gem::Requirement
@@ -80,6 +83,9 @@ dependencies:
80
83
  - - "~>"
81
84
  - !ruby/object:Gem::Version
82
85
  version: '0.3'
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: 0.3.2
83
89
  description:
84
90
  email:
85
91
  executables: []
@@ -196,13 +202,14 @@ files:
196
202
  - lib/eac_ruby_utils/patches/string/inflector.rb
197
203
  - lib/eac_ruby_utils/patches/time.rb
198
204
  - lib/eac_ruby_utils/patches/time/required_zone.rb
205
+ - lib/eac_ruby_utils/recursive_builder.rb
199
206
  - lib/eac_ruby_utils/regexp_parser.rb
200
207
  - lib/eac_ruby_utils/require_sub.rb
201
208
  - lib/eac_ruby_utils/rspec.rb
202
- - lib/eac_ruby_utils/rspec/conditional.rb
203
209
  - lib/eac_ruby_utils/rspec/default_setup.rb
204
210
  - lib/eac_ruby_utils/rspec/setup.rb
205
- - lib/eac_ruby_utils/rspec/stubbed_ssh.rb
211
+ - lib/eac_ruby_utils/rspec/setup/conditionals.rb
212
+ - lib/eac_ruby_utils/rspec/setup_manager.rb
206
213
  - lib/eac_ruby_utils/ruby.rb
207
214
  - lib/eac_ruby_utils/ruby/command.rb
208
215
  - lib/eac_ruby_utils/ruby/on_clean_environment.rb
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'active_support/core_ext/object/blank'
4
-
5
- module EacRubyUtils
6
- module Rspec
7
- class Conditional
8
- def self.default
9
- @default ||= new
10
- end
11
-
12
- def initialize
13
- @tags = {}
14
- end
15
-
16
- def add(tag, &condition)
17
- tags[tag] = condition
18
- end
19
-
20
- def configure(rspec_config)
21
- tags.each do |tag, condition|
22
- message = condition.call
23
- if message.present?
24
- puts("[WARN] Excluded tag: #{tag}: #{message}")
25
- rspec_config.filter_run_excluding tag
26
- end
27
- end
28
- end
29
-
30
- private
31
-
32
- attr_reader :tags
33
- end
34
- end
35
- end
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'active_support/core_ext/object/blank'
4
- require 'eac_ruby_utils/envs/ssh_env'
5
- require 'eac_ruby_utils/patches/object/if_present'
6
-
7
- module EacRubyUtils
8
- module Rspec
9
- class StubbedSsh
10
- DEFAULT_ENVVAR_NAME = 'STUBBED_SSH_URL'
11
-
12
- class << self
13
- def default
14
- @default ||= new(DEFAULT_ENVVAR_NAME)
15
- end
16
- end
17
-
18
- attr_reader :envvar_name
19
-
20
- def initialize(envvar_name)
21
- @envvar_name = envvar_name
22
- end
23
-
24
- def validate
25
- return nil if provided_url.present?
26
-
27
- "Environment variable \"#{envvar_name}\" unprovided or blank"
28
- end
29
-
30
- def validate!
31
- validate.if_present { |v| raise v }
32
- end
33
-
34
- def provided_url
35
- ENV[envvar_name]
36
- end
37
-
38
- def build_env
39
- validate!
40
- ::EacRubyUtils::Envs::SshEnv.new(provided_url)
41
- end
42
- end
43
- end
44
- end