bundler 2.0.2 → 2.1.0.pre.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of bundler might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +687 -574
- data/LICENSE.md +18 -19
- data/README.md +8 -7
- data/bundler.gemspec +5 -23
- data/exe/bundle +19 -3
- data/lib/bundler.rb +121 -68
- data/lib/bundler/build_metadata.rb +3 -3
- data/lib/bundler/capistrano.rb +5 -5
- data/lib/bundler/cli.rb +130 -124
- data/lib/bundler/cli/add.rb +27 -16
- data/lib/bundler/cli/common.rb +10 -11
- data/lib/bundler/cli/config.rb +161 -86
- data/lib/bundler/cli/console.rb +2 -2
- data/lib/bundler/cli/doctor.rb +4 -4
- data/lib/bundler/cli/exec.rb +4 -9
- data/lib/bundler/cli/gem.rb +5 -5
- data/lib/bundler/cli/info.rb +17 -5
- data/lib/bundler/cli/init.rb +1 -1
- data/lib/bundler/cli/install.rb +3 -3
- data/lib/bundler/cli/issue.rb +1 -1
- data/lib/bundler/cli/open.rb +10 -6
- data/lib/bundler/cli/outdated.rb +85 -81
- data/lib/bundler/cli/package.rb +8 -9
- data/lib/bundler/cli/plugin.rb +9 -2
- data/lib/bundler/cli/pristine.rb +1 -1
- data/lib/bundler/cli/show.rb +1 -1
- data/lib/bundler/cli/update.rb +32 -12
- data/lib/bundler/compact_index_client.rb +25 -9
- data/lib/bundler/compact_index_client/updater.rb +2 -6
- data/lib/bundler/current_ruby.rb +8 -7
- data/lib/bundler/definition.rb +33 -26
- data/lib/bundler/dependency.rb +16 -4
- data/lib/bundler/deployment.rb +2 -2
- data/lib/bundler/dsl.rb +18 -42
- data/lib/bundler/env.rb +6 -5
- data/lib/bundler/environment_preserver.rb +0 -1
- data/lib/bundler/feature_flag.rb +0 -12
- data/lib/bundler/fetcher.rb +14 -11
- data/lib/bundler/fetcher/compact_index.rb +26 -12
- data/lib/bundler/fetcher/dependency.rb +1 -1
- data/lib/bundler/fetcher/downloader.rb +3 -0
- data/lib/bundler/fetcher/index.rb +4 -2
- data/lib/bundler/friendly_errors.rb +4 -5
- data/lib/bundler/gem_helper.rb +8 -8
- data/lib/bundler/gem_helpers.rb +2 -4
- data/lib/bundler/gem_tasks.rb +1 -1
- data/lib/bundler/gem_version_promoter.rb +3 -3
- data/lib/bundler/graph.rb +2 -2
- data/lib/bundler/injector.rb +3 -1
- data/lib/bundler/inline.rb +19 -18
- data/lib/bundler/installer.rb +7 -14
- data/lib/bundler/installer/gem_installer.rb +5 -1
- data/lib/bundler/installer/parallel_installer.rb +4 -4
- data/lib/bundler/installer/standalone.rb +1 -2
- data/lib/bundler/lazy_specification.rb +2 -2
- data/lib/bundler/lockfile_parser.rb +13 -21
- data/lib/bundler/match_platform.rb +1 -1
- data/lib/bundler/plugin.rb +29 -18
- data/lib/bundler/plugin/api.rb +1 -1
- data/lib/bundler/plugin/api/source.rb +2 -2
- data/lib/bundler/plugin/index.rb +10 -2
- data/lib/bundler/plugin/installer.rb +28 -15
- data/lib/bundler/psyched_yaml.rb +1 -1
- data/lib/bundler/resolver.rb +72 -24
- data/lib/bundler/resolver/spec_group.rb +2 -2
- data/lib/bundler/retry.rb +2 -2
- data/lib/bundler/ruby_version.rb +4 -19
- data/lib/bundler/rubygems_ext.rb +10 -65
- data/lib/bundler/rubygems_gem_installer.rb +1 -1
- data/lib/bundler/rubygems_integration.rb +135 -403
- data/lib/bundler/runtime.rb +2 -9
- data/lib/bundler/settings.rb +15 -48
- data/lib/bundler/setup.rb +6 -5
- data/lib/bundler/shared_helpers.rb +53 -68
- data/lib/bundler/similarity_detector.rb +2 -2
- data/lib/bundler/source.rb +5 -5
- data/lib/bundler/source/git.rb +19 -12
- data/lib/bundler/source/git/git_proxy.rb +35 -39
- data/lib/bundler/source/metadata.rb +7 -2
- data/lib/bundler/source/path.rb +13 -8
- data/lib/bundler/source/rubygems.rb +11 -5
- data/lib/bundler/source/rubygems/remote.rb +1 -2
- data/lib/bundler/source_list.rb +9 -12
- data/lib/bundler/spec_set.rb +1 -6
- data/lib/bundler/stub_specification.rb +18 -30
- data/lib/bundler/templates/Executable.bundler +22 -13
- data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +3 -3
- data/lib/bundler/templates/newgem/Gemfile.tt +8 -0
- data/lib/bundler/templates/newgem/README.md.tt +4 -3
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +2 -18
- data/lib/bundler/templates/newgem/test/test_helper.rb.tt +0 -4
- data/lib/bundler/templates/newgem/travis.yml.tt +0 -1
- data/lib/bundler/ui.rb +3 -3
- data/lib/bundler/ui/rg_proxy.rb +1 -1
- data/lib/bundler/ui/shell.rb +4 -8
- data/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +161 -0
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +66 -0
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +176 -0
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
- data/lib/bundler/vendor/fileutils/lib/fileutils.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo.rb +6 -6
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +2 -2
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +6 -6
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +30 -8
- data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +4 -4
- data/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +2 -2
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +248 -279
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +40 -0
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +53 -0
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
- data/lib/bundler/vendor/thor/lib/thor.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/actions.rb +7 -7
- data/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/base.rb +13 -13
- data/lib/bundler/vendor/thor/lib/thor/group.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/line_editor.rb +2 -2
- data/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
- data/lib/bundler/vendor/thor/lib/thor/runner.rb +4 -4
- data/lib/bundler/vendor/thor/lib/thor/shell.rb +3 -3
- data/lib/bundler/vendor/thor/lib/thor/shell/color.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/shell/html.rb +1 -1
- data/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
- data/lib/bundler/vendored_fileutils.rb +1 -6
- data/lib/bundler/vendored_molinillo.rb +1 -1
- data/lib/bundler/vendored_persistent.rb +7 -5
- data/lib/bundler/vendored_thor.rb +2 -2
- data/lib/bundler/version.rb +1 -20
- data/lib/bundler/version_ranges.rb +51 -5
- data/lib/bundler/vlad.rb +3 -3
- data/lib/bundler/worker.rb +1 -3
- data/lib/bundler/yaml_serializer.rb +2 -3
- data/man/bundle-add.1 +10 -2
- data/man/bundle-add.1.txt +11 -5
- data/man/bundle-add.ronn +7 -1
- data/man/bundle-binstubs.1 +2 -2
- data/man/bundle-binstubs.1.txt +2 -2
- data/man/bundle-binstubs.ronn +1 -1
- data/man/bundle-check.1 +1 -1
- data/man/bundle-check.1.txt +6 -6
- data/man/bundle-clean.1 +1 -1
- data/man/bundle-clean.1.txt +1 -1
- data/man/bundle-config.1 +35 -35
- data/man/bundle-config.1.txt +65 -66
- data/man/bundle-config.ronn +41 -39
- data/man/bundle-doctor.1 +1 -1
- data/man/bundle-doctor.1.txt +1 -1
- data/man/bundle-exec.1 +1 -1
- data/man/bundle-exec.1.txt +1 -1
- data/man/bundle-gem.1 +1 -1
- data/man/bundle-gem.1.txt +3 -3
- data/man/bundle-info.1 +1 -1
- data/man/bundle-info.1.txt +1 -1
- data/man/bundle-init.1 +1 -1
- data/man/bundle-init.1.txt +1 -1
- data/man/bundle-inject.1 +1 -1
- data/man/bundle-inject.1.txt +1 -1
- data/man/bundle-install.1 +8 -5
- data/man/bundle-install.1.txt +56 -51
- data/man/bundle-install.ronn +9 -4
- data/man/bundle-list.1 +1 -1
- data/man/bundle-list.1.txt +1 -1
- data/man/bundle-lock.1 +1 -1
- data/man/bundle-lock.1.txt +16 -16
- data/man/bundle-open.1 +1 -1
- data/man/bundle-open.1.txt +1 -1
- data/man/bundle-outdated.1 +1 -1
- data/man/bundle-outdated.1.txt +1 -1
- data/man/bundle-package.1 +1 -1
- data/man/bundle-package.1.txt +1 -1
- data/man/bundle-platform.1 +1 -1
- data/man/bundle-platform.1.txt +1 -1
- data/man/bundle-pristine.1 +1 -1
- data/man/bundle-pristine.1.txt +1 -1
- data/man/bundle-remove.1 +1 -1
- data/man/bundle-remove.1.txt +1 -1
- data/man/bundle-show.1 +1 -1
- data/man/bundle-show.1.txt +1 -1
- data/man/bundle-update.1 +4 -4
- data/man/bundle-update.1.txt +64 -65
- data/man/bundle-update.ronn +3 -3
- data/man/bundle-viz.1 +1 -1
- data/man/bundle-viz.1.txt +1 -1
- data/man/bundle.1 +2 -2
- data/man/bundle.1.txt +7 -7
- data/man/bundle.ronn +1 -1
- data/man/gemfile.5 +12 -15
- data/man/gemfile.5.ronn +9 -13
- data/man/gemfile.5.txt +103 -107
- metadata +11 -112
- data/exe/bundle_ruby +0 -60
- data/lib/bundler/cli/cache.rb +0 -36
- data/lib/bundler/compatibility_guard.rb +0 -13
- data/lib/bundler/ssl_certs/.document +0 -1
- data/lib/bundler/ssl_certs/certificate_manager.rb +0 -66
- data/lib/bundler/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +0 -21
- data/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +0 -27
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb +0 -129
@@ -0,0 +1,40 @@
|
|
1
|
+
##
|
2
|
+
# A Net::HTTP connection wrapper that holds extra information for managing the
|
3
|
+
# connection's lifetime.
|
4
|
+
|
5
|
+
class Bundler::Persistent::Net::HTTP::Persistent::Connection # :nodoc:
|
6
|
+
|
7
|
+
attr_accessor :http
|
8
|
+
|
9
|
+
attr_accessor :last_use
|
10
|
+
|
11
|
+
attr_accessor :requests
|
12
|
+
|
13
|
+
attr_accessor :ssl_generation
|
14
|
+
|
15
|
+
def initialize http_class, http_args, ssl_generation
|
16
|
+
@http = http_class.new(*http_args)
|
17
|
+
@ssl_generation = ssl_generation
|
18
|
+
|
19
|
+
reset
|
20
|
+
end
|
21
|
+
|
22
|
+
def finish
|
23
|
+
@http.finish
|
24
|
+
rescue IOError
|
25
|
+
ensure
|
26
|
+
reset
|
27
|
+
end
|
28
|
+
|
29
|
+
def reset
|
30
|
+
@last_use = Bundler::Persistent::Net::HTTP::Persistent::EPOCH
|
31
|
+
@requests = 0
|
32
|
+
end
|
33
|
+
|
34
|
+
def ressl ssl_generation
|
35
|
+
@ssl_generation = ssl_generation
|
36
|
+
|
37
|
+
finish
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
class Bundler::Persistent::Net::HTTP::Persistent::Pool < Bundler::ConnectionPool # :nodoc:
|
2
|
+
|
3
|
+
attr_reader :available # :nodoc:
|
4
|
+
attr_reader :key # :nodoc:
|
5
|
+
|
6
|
+
def initialize(options = {}, &block)
|
7
|
+
super
|
8
|
+
|
9
|
+
@available = Bundler::Persistent::Net::HTTP::Persistent::TimedStackMulti.new(@size, &block)
|
10
|
+
@key = "current-#{@available.object_id}"
|
11
|
+
end
|
12
|
+
|
13
|
+
def checkin net_http_args
|
14
|
+
stack = Thread.current[@key][net_http_args] ||= []
|
15
|
+
|
16
|
+
raise Bundler::ConnectionPool::Error, 'no connections are checked out' if
|
17
|
+
stack.empty?
|
18
|
+
|
19
|
+
conn = stack.pop
|
20
|
+
|
21
|
+
if stack.empty?
|
22
|
+
@available.push conn, connection_args: net_http_args
|
23
|
+
|
24
|
+
Thread.current[@key].delete(net_http_args)
|
25
|
+
Thread.current[@key] = nil if Thread.current[@key].empty?
|
26
|
+
end
|
27
|
+
|
28
|
+
nil
|
29
|
+
end
|
30
|
+
|
31
|
+
def checkout net_http_args
|
32
|
+
stacks = Thread.current[@key] ||= {}
|
33
|
+
stack = stacks[net_http_args] ||= []
|
34
|
+
|
35
|
+
if stack.empty? then
|
36
|
+
conn = @available.pop connection_args: net_http_args
|
37
|
+
else
|
38
|
+
conn = stack.last
|
39
|
+
end
|
40
|
+
|
41
|
+
stack.push conn
|
42
|
+
|
43
|
+
conn
|
44
|
+
end
|
45
|
+
|
46
|
+
def shutdown
|
47
|
+
Thread.current[@key] = nil
|
48
|
+
super
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
require_relative 'timed_stack_multi'
|
53
|
+
|
@@ -0,0 +1,79 @@
|
|
1
|
+
class Bundler::Persistent::Net::HTTP::Persistent::TimedStackMulti < Bundler::ConnectionPool::TimedStack # :nodoc:
|
2
|
+
|
3
|
+
##
|
4
|
+
# Returns a new hash that has arrays for keys
|
5
|
+
#
|
6
|
+
# Using a class method to limit the bindings referenced by the hash's
|
7
|
+
# default_proc
|
8
|
+
|
9
|
+
def self.hash_of_arrays # :nodoc:
|
10
|
+
Hash.new { |h,k| h[k] = [] }
|
11
|
+
end
|
12
|
+
|
13
|
+
def initialize(size = 0, &block)
|
14
|
+
super
|
15
|
+
|
16
|
+
@enqueued = 0
|
17
|
+
@ques = self.class.hash_of_arrays
|
18
|
+
@lru = {}
|
19
|
+
@key = :"connection_args-#{object_id}"
|
20
|
+
end
|
21
|
+
|
22
|
+
def empty?
|
23
|
+
(@created - @enqueued) >= @max
|
24
|
+
end
|
25
|
+
|
26
|
+
def length
|
27
|
+
@max - @created + @enqueued
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def connection_stored? options = {} # :nodoc:
|
33
|
+
!@ques[options[:connection_args]].empty?
|
34
|
+
end
|
35
|
+
|
36
|
+
def fetch_connection options = {} # :nodoc:
|
37
|
+
connection_args = options[:connection_args]
|
38
|
+
|
39
|
+
@enqueued -= 1
|
40
|
+
lru_update connection_args
|
41
|
+
@ques[connection_args].pop
|
42
|
+
end
|
43
|
+
|
44
|
+
def lru_update connection_args # :nodoc:
|
45
|
+
@lru.delete connection_args
|
46
|
+
@lru[connection_args] = true
|
47
|
+
end
|
48
|
+
|
49
|
+
def shutdown_connections # :nodoc:
|
50
|
+
@ques.each_key do |key|
|
51
|
+
super connection_args: key
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def store_connection obj, options = {} # :nodoc:
|
56
|
+
@ques[options[:connection_args]].push obj
|
57
|
+
@enqueued += 1
|
58
|
+
end
|
59
|
+
|
60
|
+
def try_create options = {} # :nodoc:
|
61
|
+
connection_args = options[:connection_args]
|
62
|
+
|
63
|
+
if @created >= @max && @enqueued >= 1
|
64
|
+
oldest, = @lru.first
|
65
|
+
@lru.delete oldest
|
66
|
+
@ques[oldest].pop
|
67
|
+
|
68
|
+
@created -= 1
|
69
|
+
end
|
70
|
+
|
71
|
+
if @created < @max
|
72
|
+
@created += 1
|
73
|
+
lru_update connection_args
|
74
|
+
return @create_block.call(connection_args)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
|
@@ -1,11 +1,11 @@
|
|
1
1
|
require "uri"
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
2
|
+
require_relative "core_ext/io_binary_read"
|
3
|
+
require_relative "actions/create_file"
|
4
|
+
require_relative "actions/create_link"
|
5
|
+
require_relative "actions/directory"
|
6
|
+
require_relative "actions/empty_directory"
|
7
|
+
require_relative "actions/file_manipulation"
|
8
|
+
require_relative "actions/inject_into_file"
|
9
9
|
|
10
10
|
class Bundler::Thor
|
11
11
|
module Actions
|
@@ -1,17 +1,17 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
1
|
+
require_relative "command"
|
2
|
+
require_relative "core_ext/hash_with_indifferent_access"
|
3
|
+
require_relative "core_ext/ordered_hash"
|
4
|
+
require_relative "error"
|
5
|
+
require_relative "invocation"
|
6
|
+
require_relative "parser"
|
7
|
+
require_relative "shell"
|
8
|
+
require_relative "line_editor"
|
9
|
+
require_relative "util"
|
10
10
|
|
11
11
|
class Bundler::Thor
|
12
|
-
autoload :Actions, "
|
13
|
-
autoload :RakeCompat, "
|
14
|
-
autoload :Group, "
|
12
|
+
autoload :Actions, File.expand_path("actions", __dir__)
|
13
|
+
autoload :RakeCompat, File.expand_path("rake_compat", __dir__)
|
14
|
+
autoload :Group, File.expand_path("group", __dir__)
|
15
15
|
|
16
16
|
# Shortcuts for help.
|
17
17
|
HELP_MAPPINGS = %w(-h -? --help -D)
|
@@ -113,7 +113,7 @@ class Bundler::Thor
|
|
113
113
|
end
|
114
114
|
|
115
115
|
# Whenever a class inherits from Bundler::Thor or Bundler::Thor::Group, we should track the
|
116
|
-
# class and the file on Bundler::Thor::Base. This is the method
|
116
|
+
# class and the file on Bundler::Thor::Base. This is the method responsible for it.
|
117
117
|
#
|
118
118
|
def register_klass_file(klass) #:nodoc:
|
119
119
|
file = caller[1].match(/(.*):\d+/)[1]
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
require_relative "parser/argument"
|
2
|
+
require_relative "parser/arguments"
|
3
|
+
require_relative "parser/option"
|
4
|
+
require_relative "parser/options"
|
@@ -1,6 +1,6 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
require_relative "../thor"
|
2
|
+
require_relative "group"
|
3
|
+
require_relative "core_ext/io_binary_read"
|
4
4
|
|
5
5
|
require "yaml"
|
6
6
|
require "digest/md5"
|
@@ -111,7 +111,7 @@ class Bundler::Thor::Runner < Bundler::Thor #:nodoc: # rubocop:disable ClassLeng
|
|
111
111
|
|
112
112
|
desc "version", "Show Bundler::Thor version"
|
113
113
|
def version
|
114
|
-
|
114
|
+
require_relative "version"
|
115
115
|
say "Bundler::Thor #{Bundler::Thor::VERSION}"
|
116
116
|
end
|
117
117
|
|
@@ -24,9 +24,9 @@ class Bundler::Thor
|
|
24
24
|
SHELL_DELEGATED_METHODS = [:ask, :error, :set_color, :yes?, :no?, :say, :say_status, :print_in_columns, :print_table, :print_wrapped, :file_collision, :terminal_width]
|
25
25
|
attr_writer :shell
|
26
26
|
|
27
|
-
autoload :Basic, "
|
28
|
-
autoload :Color, "
|
29
|
-
autoload :HTML, "
|
27
|
+
autoload :Basic, File.expand_path("shell/basic", __dir__)
|
28
|
+
autoload :Color, File.expand_path("shell/color", __dir__)
|
29
|
+
autoload :HTML, File.expand_path("shell/html", __dir__)
|
30
30
|
|
31
31
|
# Add shell to initialize config values.
|
32
32
|
#
|
@@ -27,7 +27,7 @@ class Bundler::Thor
|
|
27
27
|
end
|
28
28
|
|
29
29
|
# Receives a constant and converts it to a Bundler::Thor namespace. Since Bundler::Thor
|
30
|
-
# commands can be added to a sandbox, this method is also
|
30
|
+
# commands can be added to a sandbox, this method is also responsible for
|
31
31
|
# removing the sandbox namespace.
|
32
32
|
#
|
33
33
|
# This method should not be used in general because it's used to deal with
|
@@ -15,18 +15,20 @@ module Bundler
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
18
|
-
|
18
|
+
require_relative "vendor/net-http-persistent/lib/net/http/persistent"
|
19
19
|
|
20
20
|
module Bundler
|
21
21
|
class PersistentHTTP < Persistent::Net::HTTP::Persistent
|
22
22
|
def connection_for(uri)
|
23
|
-
|
24
|
-
|
25
|
-
|
23
|
+
super(uri) do |connection|
|
24
|
+
result = yield connection
|
25
|
+
warn_old_tls_version_rubygems_connection(uri, connection)
|
26
|
+
result
|
27
|
+
end
|
26
28
|
end
|
27
29
|
|
28
30
|
def warn_old_tls_version_rubygems_connection(uri, connection)
|
29
|
-
return unless connection.use_ssl?
|
31
|
+
return unless connection.http.use_ssl?
|
30
32
|
return unless (uri.host || "").end_with?("rubygems.org")
|
31
33
|
|
32
34
|
socket = connection.instance_variable_get(:@socket)
|
data/lib/bundler/version.rb
CHANGED
@@ -1,26 +1,7 @@
|
|
1
1
|
# frozen_string_literal: false
|
2
2
|
|
3
|
-
# Ruby 1.9.3 and old RubyGems don't play nice with frozen version strings
|
4
|
-
# rubocop:disable MutableConstant
|
5
|
-
|
6
3
|
module Bundler
|
7
|
-
|
8
|
-
# with other versions of bundler and we are unsure how to
|
9
|
-
# handle this better.
|
10
|
-
VERSION = "2.0.2" unless defined?(::Bundler::VERSION)
|
11
|
-
|
12
|
-
def self.overwrite_loaded_gem_version
|
13
|
-
begin
|
14
|
-
require "rubygems"
|
15
|
-
rescue LoadError
|
16
|
-
return
|
17
|
-
end
|
18
|
-
return unless bundler_spec = Gem.loaded_specs["bundler"]
|
19
|
-
return if bundler_spec.version == VERSION
|
20
|
-
bundler_spec.version = Bundler::VERSION
|
21
|
-
end
|
22
|
-
private_class_method :overwrite_loaded_gem_version
|
23
|
-
overwrite_loaded_gem_version
|
4
|
+
VERSION = "2.1.0.pre.1".freeze
|
24
5
|
|
25
6
|
def self.bundler_major_version
|
26
7
|
@bundler_major_version ||= VERSION.split(".").first.to_i
|
@@ -5,11 +5,42 @@ module Bundler
|
|
5
5
|
NEq = Struct.new(:version)
|
6
6
|
ReqR = Struct.new(:left, :right)
|
7
7
|
class ReqR
|
8
|
-
Endpoint = Struct.new(:version, :inclusive)
|
8
|
+
Endpoint = Struct.new(:version, :inclusive) do
|
9
|
+
def <=>(other)
|
10
|
+
if version.equal?(INFINITY)
|
11
|
+
return 0 if other.version.equal?(INFINITY)
|
12
|
+
return 1
|
13
|
+
elsif other.version.equal?(INFINITY)
|
14
|
+
return -1
|
15
|
+
end
|
16
|
+
|
17
|
+
comp = version <=> other.version
|
18
|
+
return comp unless comp.zero?
|
19
|
+
|
20
|
+
if inclusive && !other.inclusive
|
21
|
+
1
|
22
|
+
elsif !inclusive && other.inclusive
|
23
|
+
-1
|
24
|
+
else
|
25
|
+
0
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
9
30
|
def to_s
|
10
31
|
"#{left.inclusive ? "[" : "("}#{left.version}, #{right.version}#{right.inclusive ? "]" : ")"}"
|
11
32
|
end
|
12
|
-
INFINITY =
|
33
|
+
INFINITY = begin
|
34
|
+
inf = Object.new
|
35
|
+
def inf.to_s
|
36
|
+
"∞"
|
37
|
+
end
|
38
|
+
def inf.<=>(other)
|
39
|
+
return 0 if other.equal?(self)
|
40
|
+
1
|
41
|
+
end
|
42
|
+
inf.freeze
|
43
|
+
end
|
13
44
|
ZERO = Gem::Version.new("0.a")
|
14
45
|
|
15
46
|
def cover?(v)
|
@@ -32,6 +63,15 @@ module Bundler
|
|
32
63
|
left.version == right.version
|
33
64
|
end
|
34
65
|
|
66
|
+
def <=>(other)
|
67
|
+
return -1 if other.equal?(INFINITY)
|
68
|
+
|
69
|
+
comp = left <=> other.left
|
70
|
+
return comp unless comp.zero?
|
71
|
+
|
72
|
+
right <=> other.right
|
73
|
+
end
|
74
|
+
|
35
75
|
UNIVERSAL = ReqR.new(ReqR::Endpoint.new(Gem::Version.new("0.a"), true), ReqR::Endpoint.new(ReqR::INFINITY, false)).freeze
|
36
76
|
end
|
37
77
|
|
@@ -57,7 +97,7 @@ module Bundler
|
|
57
97
|
end.uniq
|
58
98
|
ranges, neqs = ranges.partition {|r| !r.is_a?(NEq) }
|
59
99
|
|
60
|
-
[ranges.
|
100
|
+
[ranges.sort, neqs.map(&:version)]
|
61
101
|
end
|
62
102
|
|
63
103
|
def self.empty?(ranges, neqs)
|
@@ -66,8 +106,14 @@ module Bundler
|
|
66
106
|
next false if curr_range.single? && neqs.include?(curr_range.left.version)
|
67
107
|
next curr_range if last_range.right.version == ReqR::INFINITY
|
68
108
|
case last_range.right.version <=> curr_range.left.version
|
69
|
-
|
70
|
-
when
|
109
|
+
# higher
|
110
|
+
when 1 then next ReqR.new(curr_range.left, last_range.right)
|
111
|
+
# equal
|
112
|
+
when 0
|
113
|
+
if last_range.right.inclusive && curr_range.left.inclusive && !neqs.include?(curr_range.left.version)
|
114
|
+
ReqR.new(curr_range.left, [curr_range.right, last_range.right].max)
|
115
|
+
end
|
116
|
+
# lower
|
71
117
|
when -1 then next false
|
72
118
|
end
|
73
119
|
end
|