gem_pre_unversioned_install 1.0.1 → 1.0.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8c542b773abbd9ced9de46952b65180c28b0a3e1
4
- data.tar.gz: 6d42201996f0d11a65ee60d1ee0e7b7f03bff047
3
+ metadata.gz: 47600b79f1ce0e5464b3e17ff16a1469e7474bc2
4
+ data.tar.gz: ad49a17321ea12ec9f1c31d4be0b945383f0e3a8
5
5
  SHA512:
6
- metadata.gz: 92514f1d3bcbedaff847076d9ba2809c3fb8f1ab1c58c3ed4f45ef83ed4862289550f66d970f4c2e12e088417c82b62249eeeb3a1dea4e7c692cfbed5d2e1b48
7
- data.tar.gz: 31d53c3e0abaff93898b85aa5daf978c49e41d0f23b367d0c1eac1f56a7280d8c85ff3f0acf4c10356548e58dc41834df352d3cc29c359e47d6607487a9f34ef
6
+ metadata.gz: 51ca024efbe8af603931725b722cc44c5f9db8f75f3a5f5c57ca78ac0c82c68058c4ccf9b378634b29e25bc696d196da3b44f6e25ee2593548525800275f2782
7
+ data.tar.gz: 7d4eb996d3cf6b7e5b391dcf5b540b404937d7ea41e7cb2b6e83a24e0d16e2443458dad4db2dafabd5e277e3d29460bbaa639ba26e8a135cf6a9e310a3dc817c
@@ -9,7 +9,7 @@ $LOAD_PATH.merge! [File.expand_path('../lib', __FILE__)]
9
9
  Gem::Specification.new do |spec|
10
10
  raise 'RubyGems 2.0 or newer is required.' unless spec.respond_to?(:metadata)
11
11
  spec.name = 'gem_pre_unversioned_install'
12
- spec.version = '1.0.1'
12
+ spec.version = '1.0.2'
13
13
  spec.authors = ['Andrew Smith']
14
14
  spec.email = ['andrew.smith at moneysupermarket.com']
15
15
 
@@ -1,5 +1,6 @@
1
1
  # Gem.pre_unversioned_install hook
2
2
  require 'rubygems'
3
+ require 'rubygems/dependency'
3
4
 
4
5
  # Extend Gem module
5
6
  module Gem
@@ -22,19 +23,32 @@ module Gem
22
23
  @_unversioned_hooks |= [hook]
23
24
  end
24
25
 
25
- # Reader only
26
- def self._unversioned_hooks
27
- # dup to protect collection integrity
28
- @_unversioned_hooks.dup
26
+ # Dispatch unversioned hooks
27
+ def self.fire_unversioned_hooks(name, version)
28
+ rval = nil
29
+ # pre_install hooks can cause gem install to abort if they return false
30
+ # so we allow our plugins to do the same and trigger this behaviour
31
+ @_unversioned_hooks.each do |hook|
32
+ break if (rval = hook.call(name, version)) == false
33
+ end
34
+ rval
29
35
  end
30
36
 
31
- # Monkey patch to capture gem name if latest_version? true
32
- class Dependency
33
- alias _latest_version? latest_version?
37
+ # Monkey patch through subclassing
38
+ class Dependency < remove_const(:Dependency)
34
39
 
35
- # Stash any unversioned dependencies encountered
40
+ # Newer RubyGems use >=0 as a default requirement
41
+ def initialize(_name, *requirements)
42
+ super
43
+ return unless requirements.find do |req|
44
+ req.is_a?(Requirement) && req.none?
45
+ end
46
+ Gem.unversioned(@name)
47
+ end
48
+
49
+ # For older RubyGems versions
36
50
  def latest_version?
37
- if (res = _latest_version?)
51
+ if (res = super)
38
52
  Gem.unversioned(@name)
39
53
  end
40
54
  res
@@ -46,11 +60,5 @@ end
46
60
  Gem.pre_install do |installer|
47
61
  spec = installer.spec
48
62
  next unless Gem.unversioned?(spec.name)
49
- # pre_install hooks can cause gem install to abort if they return false
50
- # so we allow our plugins to do the same and trigger this behaviour
51
- rval = nil
52
- Gem._unversioned_hooks.each do |hook|
53
- break if (rval = hook.call(spec.name, spec.version)) == false
54
- end
55
- rval
63
+ Gem.fire_unversioned_hooks(spec.name, spec.version)
56
64
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gem_pre_unversioned_install
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Smith
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-07 00:00:00.000000000 Z
11
+ date: 2018-03-08 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Allows custom actions in delivery pipelines for RubyGem installations
14
14
  that have no version specifications