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.

Files changed (210) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +687 -574
  3. data/LICENSE.md +18 -19
  4. data/README.md +8 -7
  5. data/bundler.gemspec +5 -23
  6. data/exe/bundle +19 -3
  7. data/lib/bundler.rb +121 -68
  8. data/lib/bundler/build_metadata.rb +3 -3
  9. data/lib/bundler/capistrano.rb +5 -5
  10. data/lib/bundler/cli.rb +130 -124
  11. data/lib/bundler/cli/add.rb +27 -16
  12. data/lib/bundler/cli/common.rb +10 -11
  13. data/lib/bundler/cli/config.rb +161 -86
  14. data/lib/bundler/cli/console.rb +2 -2
  15. data/lib/bundler/cli/doctor.rb +4 -4
  16. data/lib/bundler/cli/exec.rb +4 -9
  17. data/lib/bundler/cli/gem.rb +5 -5
  18. data/lib/bundler/cli/info.rb +17 -5
  19. data/lib/bundler/cli/init.rb +1 -1
  20. data/lib/bundler/cli/install.rb +3 -3
  21. data/lib/bundler/cli/issue.rb +1 -1
  22. data/lib/bundler/cli/open.rb +10 -6
  23. data/lib/bundler/cli/outdated.rb +85 -81
  24. data/lib/bundler/cli/package.rb +8 -9
  25. data/lib/bundler/cli/plugin.rb +9 -2
  26. data/lib/bundler/cli/pristine.rb +1 -1
  27. data/lib/bundler/cli/show.rb +1 -1
  28. data/lib/bundler/cli/update.rb +32 -12
  29. data/lib/bundler/compact_index_client.rb +25 -9
  30. data/lib/bundler/compact_index_client/updater.rb +2 -6
  31. data/lib/bundler/current_ruby.rb +8 -7
  32. data/lib/bundler/definition.rb +33 -26
  33. data/lib/bundler/dependency.rb +16 -4
  34. data/lib/bundler/deployment.rb +2 -2
  35. data/lib/bundler/dsl.rb +18 -42
  36. data/lib/bundler/env.rb +6 -5
  37. data/lib/bundler/environment_preserver.rb +0 -1
  38. data/lib/bundler/feature_flag.rb +0 -12
  39. data/lib/bundler/fetcher.rb +14 -11
  40. data/lib/bundler/fetcher/compact_index.rb +26 -12
  41. data/lib/bundler/fetcher/dependency.rb +1 -1
  42. data/lib/bundler/fetcher/downloader.rb +3 -0
  43. data/lib/bundler/fetcher/index.rb +4 -2
  44. data/lib/bundler/friendly_errors.rb +4 -5
  45. data/lib/bundler/gem_helper.rb +8 -8
  46. data/lib/bundler/gem_helpers.rb +2 -4
  47. data/lib/bundler/gem_tasks.rb +1 -1
  48. data/lib/bundler/gem_version_promoter.rb +3 -3
  49. data/lib/bundler/graph.rb +2 -2
  50. data/lib/bundler/injector.rb +3 -1
  51. data/lib/bundler/inline.rb +19 -18
  52. data/lib/bundler/installer.rb +7 -14
  53. data/lib/bundler/installer/gem_installer.rb +5 -1
  54. data/lib/bundler/installer/parallel_installer.rb +4 -4
  55. data/lib/bundler/installer/standalone.rb +1 -2
  56. data/lib/bundler/lazy_specification.rb +2 -2
  57. data/lib/bundler/lockfile_parser.rb +13 -21
  58. data/lib/bundler/match_platform.rb +1 -1
  59. data/lib/bundler/plugin.rb +29 -18
  60. data/lib/bundler/plugin/api.rb +1 -1
  61. data/lib/bundler/plugin/api/source.rb +2 -2
  62. data/lib/bundler/plugin/index.rb +10 -2
  63. data/lib/bundler/plugin/installer.rb +28 -15
  64. data/lib/bundler/psyched_yaml.rb +1 -1
  65. data/lib/bundler/resolver.rb +72 -24
  66. data/lib/bundler/resolver/spec_group.rb +2 -2
  67. data/lib/bundler/retry.rb +2 -2
  68. data/lib/bundler/ruby_version.rb +4 -19
  69. data/lib/bundler/rubygems_ext.rb +10 -65
  70. data/lib/bundler/rubygems_gem_installer.rb +1 -1
  71. data/lib/bundler/rubygems_integration.rb +135 -403
  72. data/lib/bundler/runtime.rb +2 -9
  73. data/lib/bundler/settings.rb +15 -48
  74. data/lib/bundler/setup.rb +6 -5
  75. data/lib/bundler/shared_helpers.rb +53 -68
  76. data/lib/bundler/similarity_detector.rb +2 -2
  77. data/lib/bundler/source.rb +5 -5
  78. data/lib/bundler/source/git.rb +19 -12
  79. data/lib/bundler/source/git/git_proxy.rb +35 -39
  80. data/lib/bundler/source/metadata.rb +7 -2
  81. data/lib/bundler/source/path.rb +13 -8
  82. data/lib/bundler/source/rubygems.rb +11 -5
  83. data/lib/bundler/source/rubygems/remote.rb +1 -2
  84. data/lib/bundler/source_list.rb +9 -12
  85. data/lib/bundler/spec_set.rb +1 -6
  86. data/lib/bundler/stub_specification.rb +18 -30
  87. data/lib/bundler/templates/Executable.bundler +22 -13
  88. data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +3 -3
  89. data/lib/bundler/templates/newgem/Gemfile.tt +8 -0
  90. data/lib/bundler/templates/newgem/README.md.tt +4 -3
  91. data/lib/bundler/templates/newgem/newgem.gemspec.tt +2 -18
  92. data/lib/bundler/templates/newgem/test/test_helper.rb.tt +0 -4
  93. data/lib/bundler/templates/newgem/travis.yml.tt +0 -1
  94. data/lib/bundler/ui.rb +3 -3
  95. data/lib/bundler/ui/rg_proxy.rb +1 -1
  96. data/lib/bundler/ui/shell.rb +4 -8
  97. data/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +161 -0
  98. data/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +66 -0
  99. data/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +176 -0
  100. data/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
  101. data/lib/bundler/vendor/fileutils/lib/fileutils.rb +1 -1
  102. data/lib/bundler/vendor/molinillo/lib/molinillo.rb +6 -6
  103. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +2 -2
  104. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
  105. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
  106. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
  107. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
  108. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +6 -6
  109. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
  110. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +1 -1
  111. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +30 -8
  112. data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
  113. data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +4 -4
  114. data/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +2 -2
  115. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +248 -279
  116. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +40 -0
  117. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +53 -0
  118. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
  119. data/lib/bundler/vendor/thor/lib/thor.rb +1 -1
  120. data/lib/bundler/vendor/thor/lib/thor/actions.rb +7 -7
  121. data/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +1 -1
  122. data/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +1 -1
  123. data/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +1 -1
  124. data/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -1
  125. data/lib/bundler/vendor/thor/lib/thor/base.rb +13 -13
  126. data/lib/bundler/vendor/thor/lib/thor/group.rb +1 -1
  127. data/lib/bundler/vendor/thor/lib/thor/line_editor.rb +2 -2
  128. data/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
  129. data/lib/bundler/vendor/thor/lib/thor/runner.rb +4 -4
  130. data/lib/bundler/vendor/thor/lib/thor/shell.rb +3 -3
  131. data/lib/bundler/vendor/thor/lib/thor/shell/color.rb +1 -1
  132. data/lib/bundler/vendor/thor/lib/thor/shell/html.rb +1 -1
  133. data/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
  134. data/lib/bundler/vendored_fileutils.rb +1 -6
  135. data/lib/bundler/vendored_molinillo.rb +1 -1
  136. data/lib/bundler/vendored_persistent.rb +7 -5
  137. data/lib/bundler/vendored_thor.rb +2 -2
  138. data/lib/bundler/version.rb +1 -20
  139. data/lib/bundler/version_ranges.rb +51 -5
  140. data/lib/bundler/vlad.rb +3 -3
  141. data/lib/bundler/worker.rb +1 -3
  142. data/lib/bundler/yaml_serializer.rb +2 -3
  143. data/man/bundle-add.1 +10 -2
  144. data/man/bundle-add.1.txt +11 -5
  145. data/man/bundle-add.ronn +7 -1
  146. data/man/bundle-binstubs.1 +2 -2
  147. data/man/bundle-binstubs.1.txt +2 -2
  148. data/man/bundle-binstubs.ronn +1 -1
  149. data/man/bundle-check.1 +1 -1
  150. data/man/bundle-check.1.txt +6 -6
  151. data/man/bundle-clean.1 +1 -1
  152. data/man/bundle-clean.1.txt +1 -1
  153. data/man/bundle-config.1 +35 -35
  154. data/man/bundle-config.1.txt +65 -66
  155. data/man/bundle-config.ronn +41 -39
  156. data/man/bundle-doctor.1 +1 -1
  157. data/man/bundle-doctor.1.txt +1 -1
  158. data/man/bundle-exec.1 +1 -1
  159. data/man/bundle-exec.1.txt +1 -1
  160. data/man/bundle-gem.1 +1 -1
  161. data/man/bundle-gem.1.txt +3 -3
  162. data/man/bundle-info.1 +1 -1
  163. data/man/bundle-info.1.txt +1 -1
  164. data/man/bundle-init.1 +1 -1
  165. data/man/bundle-init.1.txt +1 -1
  166. data/man/bundle-inject.1 +1 -1
  167. data/man/bundle-inject.1.txt +1 -1
  168. data/man/bundle-install.1 +8 -5
  169. data/man/bundle-install.1.txt +56 -51
  170. data/man/bundle-install.ronn +9 -4
  171. data/man/bundle-list.1 +1 -1
  172. data/man/bundle-list.1.txt +1 -1
  173. data/man/bundle-lock.1 +1 -1
  174. data/man/bundle-lock.1.txt +16 -16
  175. data/man/bundle-open.1 +1 -1
  176. data/man/bundle-open.1.txt +1 -1
  177. data/man/bundle-outdated.1 +1 -1
  178. data/man/bundle-outdated.1.txt +1 -1
  179. data/man/bundle-package.1 +1 -1
  180. data/man/bundle-package.1.txt +1 -1
  181. data/man/bundle-platform.1 +1 -1
  182. data/man/bundle-platform.1.txt +1 -1
  183. data/man/bundle-pristine.1 +1 -1
  184. data/man/bundle-pristine.1.txt +1 -1
  185. data/man/bundle-remove.1 +1 -1
  186. data/man/bundle-remove.1.txt +1 -1
  187. data/man/bundle-show.1 +1 -1
  188. data/man/bundle-show.1.txt +1 -1
  189. data/man/bundle-update.1 +4 -4
  190. data/man/bundle-update.1.txt +64 -65
  191. data/man/bundle-update.ronn +3 -3
  192. data/man/bundle-viz.1 +1 -1
  193. data/man/bundle-viz.1.txt +1 -1
  194. data/man/bundle.1 +2 -2
  195. data/man/bundle.1.txt +7 -7
  196. data/man/bundle.ronn +1 -1
  197. data/man/gemfile.5 +12 -15
  198. data/man/gemfile.5.ronn +9 -13
  199. data/man/gemfile.5.txt +103 -107
  200. metadata +11 -112
  201. data/exe/bundle_ruby +0 -60
  202. data/lib/bundler/cli/cache.rb +0 -36
  203. data/lib/bundler/compatibility_guard.rb +0 -13
  204. data/lib/bundler/ssl_certs/.document +0 -1
  205. data/lib/bundler/ssl_certs/certificate_manager.rb +0 -66
  206. data/lib/bundler/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +0 -21
  207. data/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  208. data/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
  209. data/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +0 -27
  210. 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,5 +1,5 @@
1
1
  require "set"
2
- require "bundler/vendor/thor/lib/thor/base"
2
+ require_relative "thor/base"
3
3
 
4
4
  class Bundler::Thor
5
5
  class << self
@@ -1,11 +1,11 @@
1
1
  require "uri"
2
- require "bundler/vendor/thor/lib/thor/core_ext/io_binary_read"
3
- require "bundler/vendor/thor/lib/thor/actions/create_file"
4
- require "bundler/vendor/thor/lib/thor/actions/create_link"
5
- require "bundler/vendor/thor/lib/thor/actions/directory"
6
- require "bundler/vendor/thor/lib/thor/actions/empty_directory"
7
- require "bundler/vendor/thor/lib/thor/actions/file_manipulation"
8
- require "bundler/vendor/thor/lib/thor/actions/inject_into_file"
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,4 +1,4 @@
1
- require "bundler/vendor/thor/lib/thor/actions/empty_directory"
1
+ require_relative "empty_directory"
2
2
 
3
3
  class Bundler::Thor
4
4
  module Actions
@@ -1,4 +1,4 @@
1
- require "bundler/vendor/thor/lib/thor/actions/create_file"
1
+ require_relative "create_file"
2
2
 
3
3
  class Bundler::Thor
4
4
  module Actions
@@ -1,4 +1,4 @@
1
- require "bundler/vendor/thor/lib/thor/actions/empty_directory"
1
+ require_relative "empty_directory"
2
2
 
3
3
  class Bundler::Thor
4
4
  module Actions
@@ -1,4 +1,4 @@
1
- require "bundler/vendor/thor/lib/thor/actions/empty_directory"
1
+ require_relative "empty_directory"
2
2
 
3
3
  class Bundler::Thor
4
4
  module Actions
@@ -1,17 +1,17 @@
1
- require "bundler/vendor/thor/lib/thor/command"
2
- require "bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access"
3
- require "bundler/vendor/thor/lib/thor/core_ext/ordered_hash"
4
- require "bundler/vendor/thor/lib/thor/error"
5
- require "bundler/vendor/thor/lib/thor/invocation"
6
- require "bundler/vendor/thor/lib/thor/parser"
7
- require "bundler/vendor/thor/lib/thor/shell"
8
- require "bundler/vendor/thor/lib/thor/line_editor"
9
- require "bundler/vendor/thor/lib/thor/util"
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, "bundler/vendor/thor/lib/thor/actions"
13
- autoload :RakeCompat, "bundler/vendor/thor/lib/thor/rake_compat"
14
- autoload :Group, "bundler/vendor/thor/lib/thor/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 responsable for it.
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
- require "bundler/vendor/thor/lib/thor/base"
1
+ require_relative "base"
2
2
 
3
3
  # Bundler::Thor has a special class called Bundler::Thor::Group. The main difference to Bundler::Thor class
4
4
  # is that it invokes all commands at once. It also include some methods that allows
@@ -1,5 +1,5 @@
1
- require "bundler/vendor/thor/lib/thor/line_editor/basic"
2
- require "bundler/vendor/thor/lib/thor/line_editor/readline"
1
+ require_relative "line_editor/basic"
2
+ require_relative "line_editor/readline"
3
3
 
4
4
  class Bundler::Thor
5
5
  module LineEditor
@@ -1,4 +1,4 @@
1
- require "bundler/vendor/thor/lib/thor/parser/argument"
2
- require "bundler/vendor/thor/lib/thor/parser/arguments"
3
- require "bundler/vendor/thor/lib/thor/parser/option"
4
- require "bundler/vendor/thor/lib/thor/parser/options"
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
- require "bundler/vendor/thor/lib/thor"
2
- require "bundler/vendor/thor/lib/thor/group"
3
- require "bundler/vendor/thor/lib/thor/core_ext/io_binary_read"
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
- require "bundler/vendor/thor/lib/thor/version"
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, "bundler/vendor/thor/lib/thor/shell/basic"
28
- autoload :Color, "bundler/vendor/thor/lib/thor/shell/color"
29
- autoload :HTML, "bundler/vendor/thor/lib/thor/shell/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
  #
@@ -1,4 +1,4 @@
1
- require "bundler/vendor/thor/lib/thor/shell/basic"
1
+ require_relative "basic"
2
2
 
3
3
  class Bundler::Thor
4
4
  module Shell
@@ -1,4 +1,4 @@
1
- require "bundler/vendor/thor/lib/thor/shell/basic"
1
+ require_relative "basic"
2
2
 
3
3
  class Bundler::Thor
4
4
  module Shell
@@ -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 responsable for
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
@@ -1,9 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bundler; end
4
- if RUBY_VERSION >= "2.4"
5
- require "bundler/vendor/fileutils/lib/fileutils"
6
- else
7
- # the version we vendor is 2.4+
8
- require "fileutils"
9
- end
4
+ require_relative "vendor/fileutils/lib/fileutils"
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bundler; end
4
- require "bundler/vendor/molinillo/lib/molinillo"
4
+ require_relative "vendor/molinillo/lib/molinillo"
@@ -15,18 +15,20 @@ module Bundler
15
15
  end
16
16
  end
17
17
  end
18
- require "bundler/vendor/net-http-persistent/lib/net/http/persistent"
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
- connection = super
24
- warn_old_tls_version_rubygems_connection(uri, connection)
25
- connection
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)
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Bundler
4
4
  def self.require_thor_actions
5
- Kernel.send(:require, "bundler/vendor/thor/lib/thor/actions")
5
+ require_relative "vendor/thor/lib/thor/actions"
6
6
  end
7
7
  end
8
- require "bundler/vendor/thor/lib/thor"
8
+ require_relative "vendor/thor/lib/thor"
@@ -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
- # We're doing this because we might write tests that deal
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 = Object.new.freeze
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.sort_by {|range| [range.left.version, range.left.inclusive ? 0 : 1] }, neqs.map(&:version)]
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
- when 1 then next curr_range
70
- when 0 then next(last_range.right.inclusive && curr_range.left.inclusive && !neqs.include?(curr_range.left.version) && curr_range)
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