bundler 2.3.26 → 2.4.13
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 +4 -4
- data/CHANGELOG.md +228 -1
- data/README.md +3 -6
- data/bundler.gemspec +2 -2
- data/exe/bundle +1 -4
- data/lib/bundler/build_metadata.rb +2 -2
- data/lib/bundler/cli/add.rb +1 -1
- data/lib/bundler/cli/binstubs.rb +5 -1
- data/lib/bundler/cli/check.rb +1 -1
- data/lib/bundler/cli/common.rb +1 -0
- data/lib/bundler/cli/console.rb +2 -2
- data/lib/bundler/cli/doctor.rb +4 -6
- data/lib/bundler/cli/gem.rb +62 -40
- data/lib/bundler/cli/init.rb +2 -2
- data/lib/bundler/cli/install.rb +2 -3
- data/lib/bundler/cli/lock.rb +8 -5
- data/lib/bundler/cli/open.rb +6 -4
- data/lib/bundler/cli/outdated.rb +1 -3
- data/lib/bundler/cli/viz.rb +1 -1
- data/lib/bundler/cli.rb +45 -2
- data/lib/bundler/compact_index_client/cache.rb +1 -1
- data/lib/bundler/compact_index_client/updater.rb +40 -39
- data/lib/bundler/constants.rb +1 -1
- data/lib/bundler/current_ruby.rb +2 -0
- data/lib/bundler/definition.rb +99 -51
- data/lib/bundler/dependency.rb +13 -12
- data/lib/bundler/digest.rb +1 -1
- data/lib/bundler/dsl.rb +3 -3
- data/lib/bundler/endpoint_specification.rb +0 -4
- data/lib/bundler/env.rb +1 -1
- data/lib/bundler/environment_preserver.rb +3 -2
- data/lib/bundler/errors.rb +1 -11
- data/lib/bundler/fetcher/compact_index.rb +9 -11
- data/lib/bundler/fetcher/dependency.rb +2 -6
- data/lib/bundler/fetcher/downloader.rb +2 -5
- data/lib/bundler/fetcher.rb +4 -8
- data/lib/bundler/force_platform.rb +18 -0
- data/lib/bundler/friendly_errors.rb +0 -3
- data/lib/bundler/gem_version_promoter.rb +52 -86
- data/lib/bundler/graph.rb +3 -3
- data/lib/bundler/index.rb +7 -15
- data/lib/bundler/injector.rb +2 -2
- data/lib/bundler/inline.rb +8 -10
- data/lib/bundler/installer/parallel_installer.rb +3 -33
- data/lib/bundler/installer/standalone.rb +12 -8
- data/lib/bundler/installer.rb +9 -23
- data/lib/bundler/lazy_specification.rb +42 -42
- data/lib/bundler/lockfile_generator.rb +1 -1
- data/lib/bundler/lockfile_parser.rb +16 -16
- data/lib/bundler/man/bundle-add.1 +1 -1
- data/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/lib/bundler/man/bundle-cache.1 +3 -3
- data/lib/bundler/man/bundle-cache.1.ronn +2 -2
- data/lib/bundler/man/bundle-check.1 +1 -1
- data/lib/bundler/man/bundle-clean.1 +1 -1
- data/lib/bundler/man/bundle-config.1 +2 -2
- data/lib/bundler/man/bundle-config.1.ronn +1 -1
- data/lib/bundler/man/bundle-console.1 +1 -1
- data/lib/bundler/man/bundle-doctor.1 +1 -1
- data/lib/bundler/man/bundle-exec.1 +5 -5
- data/lib/bundler/man/bundle-exec.1.ronn +5 -5
- data/lib/bundler/man/bundle-gem.1 +27 -37
- data/lib/bundler/man/bundle-gem.1.ronn +5 -5
- data/lib/bundler/man/bundle-help.1 +1 -1
- data/lib/bundler/man/bundle-info.1 +1 -1
- data/lib/bundler/man/bundle-init.1 +5 -1
- data/lib/bundler/man/bundle-init.1.ronn +2 -0
- data/lib/bundler/man/bundle-inject.1 +1 -1
- data/lib/bundler/man/bundle-install.1 +1 -30
- data/lib/bundler/man/bundle-install.1.ronn +0 -29
- data/lib/bundler/man/bundle-list.1 +1 -1
- data/lib/bundler/man/bundle-lock.1 +1 -1
- data/lib/bundler/man/bundle-open.1 +22 -2
- data/lib/bundler/man/bundle-open.1.ronn +9 -1
- data/lib/bundler/man/bundle-outdated.1 +1 -1
- data/lib/bundler/man/bundle-platform.1 +2 -2
- data/lib/bundler/man/bundle-platform.1.ronn +1 -1
- data/lib/bundler/man/bundle-plugin.1 +1 -1
- data/lib/bundler/man/bundle-pristine.1 +1 -1
- data/lib/bundler/man/bundle-remove.1 +1 -1
- data/lib/bundler/man/bundle-show.1 +1 -1
- data/lib/bundler/man/bundle-update.1 +1 -1
- data/lib/bundler/man/bundle-version.1 +1 -1
- data/lib/bundler/man/bundle-viz.1 +1 -1
- data/lib/bundler/man/bundle.1 +1 -1
- data/lib/bundler/man/gemfile.5 +1 -1
- data/lib/bundler/mirror.rb +5 -7
- data/lib/bundler/plugin/index.rb +4 -4
- data/lib/bundler/plugin/installer/rubygems.rb +0 -4
- data/lib/bundler/plugin/installer.rb +5 -2
- data/lib/bundler/plugin.rb +1 -1
- data/lib/bundler/remote_specification.rb +2 -6
- data/lib/bundler/resolver/base.rb +72 -15
- data/lib/bundler/resolver/candidate.rb +94 -0
- data/lib/bundler/resolver/incompatibility.rb +15 -0
- data/lib/bundler/resolver/package.rb +72 -0
- data/lib/bundler/resolver/root.rb +25 -0
- data/lib/bundler/resolver/spec_group.rb +26 -36
- data/lib/bundler/resolver.rb +311 -278
- data/lib/bundler/ruby_version.rb +1 -1
- data/lib/bundler/rubygems_ext.rb +16 -9
- data/lib/bundler/rubygems_gem_installer.rb +4 -2
- data/lib/bundler/rubygems_integration.rb +10 -14
- data/lib/bundler/runtime.rb +1 -5
- data/lib/bundler/safe_marshal.rb +31 -0
- data/lib/bundler/settings.rb +1 -7
- data/lib/bundler/setup.rb +4 -1
- data/lib/bundler/shared_helpers.rb +2 -1
- data/lib/bundler/source/git/git_proxy.rb +214 -69
- data/lib/bundler/source/git.rb +17 -18
- data/lib/bundler/source/metadata.rb +0 -1
- data/lib/bundler/source/path/installer.rb +1 -22
- data/lib/bundler/source/path.rb +6 -6
- data/lib/bundler/source/rubygems.rb +19 -77
- data/lib/bundler/source_list.rb +8 -2
- data/lib/bundler/spec_set.rb +22 -14
- data/lib/bundler/templates/Executable +1 -1
- data/lib/bundler/templates/Executable.bundler +5 -10
- data/lib/bundler/templates/Executable.standalone +2 -0
- data/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
- data/lib/bundler/templates/newgem/Gemfile.tt +3 -0
- data/lib/bundler/templates/newgem/README.md.tt +6 -4
- data/lib/bundler/templates/newgem/Rakefile.tt +12 -1
- data/lib/bundler/templates/newgem/bin/console.tt +0 -4
- data/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
- data/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
- data/lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt +10 -0
- data/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
- data/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +1 -1
- data/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
- data/lib/bundler/templates/newgem/github/workflows/main.yml.tt +10 -0
- data/lib/bundler/templates/newgem/gitignore.tt +3 -0
- data/lib/bundler/templates/newgem/gitlab-ci.yml.tt +8 -0
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +8 -2
- data/lib/bundler/ui/shell.rb +35 -12
- data/lib/bundler/ui/silent.rb +21 -5
- data/lib/bundler/uri_normalizer.rb +23 -0
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
- data/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
- data/lib/bundler/vendor/fileutils/lib/fileutils.rb +1350 -408
- data/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
- data/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +243 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
- data/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +1 -1
- data/lib/bundler/vendor/uri/lib/uri/common.rb +64 -16
- data/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
- data/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -1
- data/lib/bundler/vendor/uri/lib/uri/generic.rb +27 -7
- data/lib/bundler/vendor/uri/lib/uri/http.rb +40 -2
- data/lib/bundler/vendor/uri/lib/uri/https.rb +2 -1
- data/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
- data/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
- data/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -2
- data/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +13 -7
- data/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +10 -5
- data/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
- data/lib/bundler/vendor/uri/lib/uri/ws.rb +1 -2
- data/lib/bundler/vendor/uri/lib/uri/wss.rb +2 -1
- data/lib/bundler/vendor/uri/lib/uri.rb +3 -2
- data/lib/bundler/vendored_persistent.rb +1 -33
- data/lib/bundler/{vendored_tmpdir.rb → vendored_pub_grub.rb} +1 -1
- data/lib/bundler/version.rb +5 -1
- data/lib/bundler/worker.rb +5 -7
- data/lib/bundler.rb +17 -69
- metadata +35 -33
- data/lib/bundler/templates/gems.rb +0 -5
- data/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +0 -5
- data/lib/bundler/templates/newgem/travis.yml.tt +0 -6
- data/lib/bundler/vendor/molinillo/LICENSE +0 -9
- data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
- data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
- data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -149
- data/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
- data/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
- data/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
- data/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
- data/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
- data/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
- data/lib/bundler/vendored_molinillo.rb +0 -4
- data/lib/bundler/version_ranges.rb +0 -122
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "spec_group"
|
|
4
|
+
|
|
5
|
+
module Bundler
|
|
6
|
+
class Resolver
|
|
7
|
+
#
|
|
8
|
+
# This class is a PubGrub compatible "Version" class that takes Bundler
|
|
9
|
+
# resolution complexities into account.
|
|
10
|
+
#
|
|
11
|
+
# Each Resolver::Candidate has a underlying `Gem::Version` plus a set of
|
|
12
|
+
# platforms. For example, 1.1.0-x86_64-linux is a different resolution candidate
|
|
13
|
+
# from 1.1.0 (generic). This is because different platform variants of the
|
|
14
|
+
# same gem version can bring different dependencies, so they need to be
|
|
15
|
+
# considered separately.
|
|
16
|
+
#
|
|
17
|
+
# Some candidates may also keep some information explicitly about the
|
|
18
|
+
# package the refer to. These candidates are referred to as "canonical" and
|
|
19
|
+
# are used when materializing resolution results back into RubyGems
|
|
20
|
+
# specifications that can be installed, written to lock files, and so on.
|
|
21
|
+
#
|
|
22
|
+
class Candidate
|
|
23
|
+
include Comparable
|
|
24
|
+
|
|
25
|
+
attr_reader :version
|
|
26
|
+
|
|
27
|
+
def initialize(version, specs: [])
|
|
28
|
+
@spec_group = Resolver::SpecGroup.new(specs)
|
|
29
|
+
@version = Gem::Version.new(version)
|
|
30
|
+
@ruby_only = specs.map(&:platform).uniq == [Gem::Platform::RUBY]
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def dependencies
|
|
34
|
+
@spec_group.dependencies
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def to_specs(package)
|
|
38
|
+
return [] if package.meta?
|
|
39
|
+
|
|
40
|
+
@spec_group.to_specs(package.force_ruby_platform?)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def generic!
|
|
44
|
+
@ruby_only = true
|
|
45
|
+
|
|
46
|
+
self
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def platform_specific!
|
|
50
|
+
@ruby_only = false
|
|
51
|
+
|
|
52
|
+
self
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def prerelease?
|
|
56
|
+
@version.prerelease?
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def segments
|
|
60
|
+
@version.segments
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def sort_obj
|
|
64
|
+
[@version, @ruby_only ? -1 : 1]
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def <=>(other)
|
|
68
|
+
return unless other.is_a?(self.class)
|
|
69
|
+
|
|
70
|
+
sort_obj <=> other.sort_obj
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def ==(other)
|
|
74
|
+
return unless other.is_a?(self.class)
|
|
75
|
+
|
|
76
|
+
sort_obj == other.sort_obj
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def eql?(other)
|
|
80
|
+
return unless other.is_a?(self.class)
|
|
81
|
+
|
|
82
|
+
sort_obj.eql?(other.sort_obj)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def hash
|
|
86
|
+
sort_obj.hash
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def to_s
|
|
90
|
+
@version.to_s
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Bundler
|
|
4
|
+
class Resolver
|
|
5
|
+
class Incompatibility < PubGrub::Incompatibility
|
|
6
|
+
attr_reader :extended_explanation
|
|
7
|
+
|
|
8
|
+
def initialize(terms, cause:, custom_explanation: nil, extended_explanation: nil)
|
|
9
|
+
@extended_explanation = extended_explanation
|
|
10
|
+
|
|
11
|
+
super(terms, :cause => cause, :custom_explanation => custom_explanation)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Bundler
|
|
4
|
+
class Resolver
|
|
5
|
+
#
|
|
6
|
+
# Represents a gem being resolved, in a format PubGrub likes.
|
|
7
|
+
#
|
|
8
|
+
# The class holds the following information:
|
|
9
|
+
#
|
|
10
|
+
# * Platforms this gem will be resolved on.
|
|
11
|
+
# * The locked version of this gem resolution should favor (if any).
|
|
12
|
+
# * Whether the gem should be unlocked to its latest version.
|
|
13
|
+
# * The dependency explicit set in the Gemfile for this gem (if any).
|
|
14
|
+
#
|
|
15
|
+
class Package
|
|
16
|
+
attr_reader :name, :platforms, :dependency, :locked_version
|
|
17
|
+
|
|
18
|
+
def initialize(name, platforms, locked_specs:, unlock:, prerelease: false, dependency: nil)
|
|
19
|
+
@name = name
|
|
20
|
+
@platforms = platforms
|
|
21
|
+
@locked_version = locked_specs[name].first&.version
|
|
22
|
+
@unlock = unlock
|
|
23
|
+
@dependency = dependency || Dependency.new(name, @locked_version)
|
|
24
|
+
@prerelease = @dependency.prerelease? || @locked_version&.prerelease? || prerelease ? :consider_first : :ignore
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def to_s
|
|
28
|
+
@name.delete("\0")
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def root?
|
|
32
|
+
false
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def meta?
|
|
36
|
+
@name.end_with?("\0")
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def ==(other)
|
|
40
|
+
self.class == other.class && @name == other.name
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def hash
|
|
44
|
+
@name.hash
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def unlock?
|
|
48
|
+
@unlock.empty? || @unlock.include?(name)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def ignores_prereleases?
|
|
52
|
+
@prerelease == :ignore
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def prerelease_specified?
|
|
56
|
+
@prerelease == :consider_first
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def consider_prereleases!
|
|
60
|
+
@prerelease = :consider_last
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def force_ruby_platform?
|
|
64
|
+
@dependency.force_ruby_platform
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def current_platform?
|
|
68
|
+
@dependency.current_platform?
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "package"
|
|
4
|
+
|
|
5
|
+
module Bundler
|
|
6
|
+
class Resolver
|
|
7
|
+
#
|
|
8
|
+
# Represents the Gemfile from the resolver's perspective. It's the root
|
|
9
|
+
# package and Gemfile entries depend on it.
|
|
10
|
+
#
|
|
11
|
+
class Root < Package
|
|
12
|
+
def initialize(name)
|
|
13
|
+
@name = name
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def meta?
|
|
17
|
+
true
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def root?
|
|
21
|
+
true
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -3,20 +3,27 @@
|
|
|
3
3
|
module Bundler
|
|
4
4
|
class Resolver
|
|
5
5
|
class SpecGroup
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
def initialize(specs)
|
|
7
|
+
@specs = specs
|
|
8
|
+
end
|
|
8
9
|
|
|
9
|
-
def
|
|
10
|
-
@
|
|
11
|
-
|
|
12
|
-
@version = @exemplary_spec.version
|
|
13
|
-
@source = @exemplary_spec.source
|
|
10
|
+
def empty?
|
|
11
|
+
@specs.empty?
|
|
12
|
+
end
|
|
14
13
|
|
|
15
|
-
|
|
16
|
-
@
|
|
14
|
+
def name
|
|
15
|
+
@name ||= exemplary_spec.name
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def version
|
|
19
|
+
@version ||= exemplary_spec.version
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def source
|
|
23
|
+
@source ||= exemplary_spec.source
|
|
17
24
|
end
|
|
18
25
|
|
|
19
|
-
def to_specs
|
|
26
|
+
def to_specs(force_ruby_platform)
|
|
20
27
|
@specs.map do |s|
|
|
21
28
|
lazy_spec = LazySpecification.new(name, version, s.platform, source)
|
|
22
29
|
lazy_spec.force_ruby_platform = force_ruby_platform
|
|
@@ -26,44 +33,27 @@ module Bundler
|
|
|
26
33
|
end
|
|
27
34
|
|
|
28
35
|
def to_s
|
|
29
|
-
|
|
30
|
-
"#{name} (#{version}) (#{activated_platforms_string})"
|
|
36
|
+
sorted_spec_names.join(", ")
|
|
31
37
|
end
|
|
32
38
|
|
|
33
|
-
def
|
|
34
|
-
@
|
|
39
|
+
def dependencies
|
|
40
|
+
@dependencies ||= @specs.map do |spec|
|
|
35
41
|
__dependencies(spec) + metadata_dependencies(spec)
|
|
36
42
|
end.flatten.uniq
|
|
37
43
|
end
|
|
38
44
|
|
|
39
|
-
def ==(other)
|
|
40
|
-
return unless other.is_a?(SpecGroup)
|
|
41
|
-
name == other.name &&
|
|
42
|
-
version == other.version &&
|
|
43
|
-
sorted_activated_platforms == other.sorted_activated_platforms &&
|
|
44
|
-
source == other.source
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def eql?(other)
|
|
48
|
-
return unless other.is_a?(SpecGroup)
|
|
49
|
-
name.eql?(other.name) &&
|
|
50
|
-
version.eql?(other.version) &&
|
|
51
|
-
sorted_activated_platforms.eql?(other.sorted_activated_platforms) &&
|
|
52
|
-
source.eql?(other.source)
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def hash
|
|
56
|
-
name.hash ^ version.hash ^ sorted_activated_platforms.hash ^ source.hash
|
|
57
|
-
end
|
|
58
|
-
|
|
59
45
|
protected
|
|
60
46
|
|
|
61
|
-
def
|
|
62
|
-
|
|
47
|
+
def sorted_spec_names
|
|
48
|
+
@sorted_spec_names ||= @specs.map(&:full_name).sort
|
|
63
49
|
end
|
|
64
50
|
|
|
65
51
|
private
|
|
66
52
|
|
|
53
|
+
def exemplary_spec
|
|
54
|
+
@specs.first
|
|
55
|
+
end
|
|
56
|
+
|
|
67
57
|
def __dependencies(spec)
|
|
68
58
|
dependencies = []
|
|
69
59
|
spec.dependencies.each do |dep|
|