bundler-explain 0.1.0 → 0.2.0

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
  SHA256:
3
- metadata.gz: 71233be6dbcd5f33d7b78ba62fd540ab48ea6d678847f5e98c254f96771a13dd
4
- data.tar.gz: 8178fbaf874bd939475a7f27fdbc0c5a61779d7a1f56867f9fd059ce7da800cf
3
+ metadata.gz: e8d63967f4fd9dd1648af8eeb3330127d2ecd62e9f68e9584083f4cf7ad3034d
4
+ data.tar.gz: b9ac527443c2b9da6fc5eedd8cff907bd7e3169b47c210349f0ae7d06000eb72
5
5
  SHA512:
6
- metadata.gz: 6ccd871f7efa7dd3f4cf4539249fc3d5703332ad774d014004f49af062616c1b08425b996496ae6dab6969cee9be280e9fb94e1b40a7915923dddec0e5abd33f
7
- data.tar.gz: f1800d2772a5683d0dcacd5d4c1c891cd1e6d3e12eaf9a1834035ac6c310d2ebf8875713730666d7de2dfc40037f3a477d9a0e7cf0f5399d97a63581e3668998
6
+ metadata.gz: 57ca6ba698a1c3d180cf0b726d1f8b0cb445ecb58595d417438298e751a82df3ec85079a7c1af2e1d7992bc3466fae7e92204c81bb5530bcfb6f702bd7996232
7
+ data.tar.gz: 1cbfaa3d30afbf3c16297922d93d0ef85cb01a7418b05a06c144b6dbff46c4e0328601ec37d461a1d0fe5bad6e995d430acf2b0ee8df5f987b1d6311e79c048f
data/README.md CHANGED
@@ -56,6 +56,7 @@ determine the cause of the failure.
56
56
  ## Installation and Usage
57
57
 
58
58
  ```
59
+ $ gem i pub_grub # Needs to be installed first
59
60
  $ bundler plugin install bundler-explain
60
61
  ```
61
62
 
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.require_paths = ["lib"]
23
23
 
24
24
  spec.add_dependency "bundler", "~> 1.16"
25
- spec.add_dependency "pub_grub", "~> 0.2.0"
25
+ spec.add_dependency "pub_grub", "~> 0.3.0"
26
26
 
27
27
  spec.add_development_dependency "rake", "~> 10.0"
28
28
  spec.add_development_dependency "minitest", "~> 5.0"
@@ -17,12 +17,7 @@ module Bundler
17
17
  end
18
18
 
19
19
  @package_by_name = Hash.new do |h, name|
20
- h[name] =
21
- PubGrub::Package.new(name) do |package|
22
- @specs_by_name[name].each do |spec_group|
23
- package.add_version spec_group.version.to_s
24
- end
25
- end
20
+ h[name] = PubGrub::Package.new(name)
26
21
  end
27
22
 
28
23
  @deps_by_spec = Hash.new do |h, s|
@@ -32,13 +27,25 @@ module Bundler
32
27
  end
33
28
  end
34
29
 
35
- def incompatibilities_for(version)
36
- return enum_for(__method__, version) unless block_given?
30
+ def root_package
31
+ PubGrub::Package.root
32
+ end
33
+
34
+ def versions_for(package, range)
35
+ return [PubGrub::Package.root_version] if package == root_package
37
36
 
38
- package = version.package
37
+ @specs_by_name[package.name].map do |spec_group|
38
+ spec_group.version
39
+ end.select do |version|
40
+ range.include?(version)
41
+ end
42
+ end
39
43
 
40
- if version == PubGrub::Package.root_version
41
- source_constraint = PubGrub::VersionConstraint.exact(version)
44
+ def incompatibilities_for(package, version)
45
+ return enum_for(__method__, package, version) unless block_given?
46
+
47
+ if package == root_package
48
+ source_constraint = PubGrub::VersionConstraint.exact(package, version)
42
49
  source_term = PubGrub::Term.new(source_constraint, true)
43
50
 
44
51
  @requirements.each do |dependency|
@@ -48,8 +55,8 @@ module Bundler
48
55
  yield PubGrub::Incompatibility.new([source_term, target_term], cause: :dependency)
49
56
  end
50
57
  else
51
- specs = @specs_by_name[version.package.name]
52
- spec = specs.detect { |s| s.version.to_s == version.name }
58
+ specs = @specs_by_name[package.name]
59
+ spec = specs.detect { |s| s.version == version }
53
60
  raise "can't find spec" unless spec
54
61
 
55
62
  @deps_by_spec[spec].each do |dep_name, dep_requirement|
@@ -92,7 +99,7 @@ module Bundler
92
99
  v = original_version
93
100
  s = original_version.segments
94
101
 
95
- return [] unless s.length == 3
102
+ return [] unless s.length >= 3
96
103
 
97
104
  yield Gem::Requirement.new(">= #{s[0]}.#{s[1]}.a", "< #{v.release}")
98
105
  yield Gem::Requirement.new(["~> #{s[0]}.#{s[1]}.0"])
@@ -121,11 +128,10 @@ module Bundler
121
128
  if !low_spec && !high_spec
122
129
  PubGrub::VersionConstraint.any(package)
123
130
  elsif low_spec == high_spec
124
- PubGrub::VersionConstraint.exact(package.version(low_version.to_s))
131
+ PubGrub::VersionConstraint.exact(package, low_version)
125
132
  else
126
- low = ">= #{low_version}" if low_spec
127
- high = "<= #{high_version}" if high_spec
128
- PubGrub::VersionConstraint.new(package, [low, high].compact)
133
+ range = PubGrub::VersionRange.new(min: low_version, max: high_version, include_min: true)
134
+ PubGrub::VersionConstraint.new(package, range: range)
129
135
  end
130
136
  end
131
137
 
@@ -152,16 +158,13 @@ module Bundler
152
158
  break unless yield(sorted_list[low])
153
159
  end
154
160
 
155
- [low && low + 1, high && high - 1]
161
+ [low && low + 1, high]
156
162
  end
157
163
 
158
164
  def constraint_for_dep(name, requirement)
159
165
  package = @package_by_name[name]
160
166
 
161
- # This is awful. We should try to reuse Gem::Requirement
162
- requirement = requirement.to_s.split(", ")
163
-
164
- PubGrub::VersionConstraint.new(package, requirement)
167
+ PubGrub::RubyGems.requirement_to_constraint(package, requirement)
165
168
  end
166
169
  end
167
170
  end
@@ -1,5 +1,5 @@
1
1
  module Bundler
2
2
  module Explain
3
- VERSION = "0.1.0"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
data/test.rb CHANGED
@@ -1,8 +1,8 @@
1
- $LOAD_PATH.unshift "./lib"
1
+ $LOAD_PATH.unshift "#{__dir__}/lib"
2
+ $LOAD_PATH.unshift "#{__dir__}/../pub_grub/lib"
2
3
  require 'bundler/explain'
3
4
  require 'pub_grub'
4
-
5
- ENV['DEBUG'] = 'true'
5
+ require 'pub_grub/rubygems'
6
6
 
7
7
  Bundler.ui = Bundler::UI::Shell.new
8
8
  PubGrub.logger.level = Logger::DEBUG
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bundler-explain
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Hawthorn
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-08-15 00:00:00.000000000 Z
11
+ date: 2018-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.2.0
33
+ version: 0.3.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.2.0
40
+ version: 0.3.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -109,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
109
109
  version: '0'
110
110
  requirements: []
111
111
  rubyforge_project:
112
- rubygems_version: 2.7.3
112
+ rubygems_version: 2.7.7
113
113
  signing_key:
114
114
  specification_version: 4
115
115
  summary: Explains bundle update conflicts