gem_pre_unversioned_install 1.0.1 → 1.0.2

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
  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