bundler 2.2.11 → 2.3.26

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.
Files changed (211) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +721 -5
  3. data/README.md +1 -1
  4. data/bundler.gemspec +8 -11
  5. data/exe/bundle +7 -8
  6. data/exe/bundler +1 -1
  7. data/lib/bundler/.document +1 -0
  8. data/lib/bundler/build_metadata.rb +3 -3
  9. data/lib/bundler/cli/cache.rb +1 -1
  10. data/lib/bundler/cli/check.rb +4 -2
  11. data/lib/bundler/cli/common.rb +17 -3
  12. data/lib/bundler/cli/config.rb +10 -1
  13. data/lib/bundler/cli/doctor.rb +24 -5
  14. data/lib/bundler/cli/exec.rb +1 -6
  15. data/lib/bundler/cli/gem.rb +130 -26
  16. data/lib/bundler/cli/info.rb +27 -6
  17. data/lib/bundler/cli/init.rb +5 -1
  18. data/lib/bundler/cli/install.rb +23 -54
  19. data/lib/bundler/cli/issue.rb +4 -3
  20. data/lib/bundler/cli/list.rb +7 -1
  21. data/lib/bundler/cli/lock.rb +5 -1
  22. data/lib/bundler/cli/open.rb +1 -2
  23. data/lib/bundler/cli/outdated.rb +22 -14
  24. data/lib/bundler/cli/platform.rb +2 -2
  25. data/lib/bundler/cli/remove.rb +1 -2
  26. data/lib/bundler/cli/show.rb +1 -1
  27. data/lib/bundler/cli/update.rb +17 -8
  28. data/lib/bundler/cli.rb +51 -63
  29. data/lib/bundler/compact_index_client/cache.rb +0 -9
  30. data/lib/bundler/compact_index_client/updater.rb +26 -14
  31. data/lib/bundler/compact_index_client.rb +2 -8
  32. data/lib/bundler/current_ruby.rb +17 -6
  33. data/lib/bundler/definition.rb +260 -362
  34. data/lib/bundler/dependency.rb +23 -71
  35. data/lib/bundler/digest.rb +71 -0
  36. data/lib/bundler/dsl.rb +72 -76
  37. data/lib/bundler/endpoint_specification.rb +19 -13
  38. data/lib/bundler/env.rb +1 -1
  39. data/lib/bundler/environment_preserver.rb +4 -1
  40. data/lib/bundler/errors.rb +29 -3
  41. data/lib/bundler/feature_flag.rb +0 -5
  42. data/lib/bundler/fetcher/base.rb +6 -8
  43. data/lib/bundler/fetcher/compact_index.rb +10 -15
  44. data/lib/bundler/fetcher/downloader.rb +9 -6
  45. data/lib/bundler/fetcher/index.rb +0 -27
  46. data/lib/bundler/fetcher.rb +22 -23
  47. data/lib/bundler/friendly_errors.rb +26 -36
  48. data/lib/bundler/gem_helper.rb +21 -16
  49. data/lib/bundler/gem_helpers.rb +9 -2
  50. data/lib/bundler/gem_version_promoter.rb +14 -25
  51. data/lib/bundler/index.rb +11 -46
  52. data/lib/bundler/injector.rb +18 -4
  53. data/lib/bundler/inline.rb +4 -13
  54. data/lib/bundler/installer/gem_installer.rb +16 -21
  55. data/lib/bundler/installer/parallel_installer.rb +36 -15
  56. data/lib/bundler/installer/standalone.rb +42 -10
  57. data/lib/bundler/installer.rb +25 -41
  58. data/lib/bundler/lazy_specification.rb +52 -30
  59. data/lib/bundler/lockfile_generator.rb +2 -2
  60. data/lib/bundler/lockfile_parser.rb +18 -43
  61. data/lib/bundler/man/bundle-add.1 +21 -5
  62. data/lib/bundler/man/bundle-add.1.ronn +16 -4
  63. data/lib/bundler/man/bundle-binstubs.1 +1 -1
  64. data/lib/bundler/man/bundle-cache.1 +7 -1
  65. data/lib/bundler/man/bundle-cache.1.ronn +7 -0
  66. data/lib/bundler/man/bundle-check.1 +1 -1
  67. data/lib/bundler/man/bundle-clean.1 +2 -2
  68. data/lib/bundler/man/bundle-clean.1.ronn +1 -1
  69. data/lib/bundler/man/bundle-config.1 +49 -22
  70. data/lib/bundler/man/bundle-config.1.ronn +49 -30
  71. data/lib/bundler/man/bundle-console.1 +53 -0
  72. data/lib/bundler/man/bundle-console.1.ronn +44 -0
  73. data/lib/bundler/man/bundle-doctor.1 +1 -1
  74. data/lib/bundler/man/bundle-exec.1 +2 -2
  75. data/lib/bundler/man/bundle-exec.1.ronn +1 -1
  76. data/lib/bundler/man/bundle-gem.1 +14 -1
  77. data/lib/bundler/man/bundle-gem.1.ronn +16 -0
  78. data/lib/bundler/man/bundle-help.1 +13 -0
  79. data/lib/bundler/man/bundle-help.1.ronn +12 -0
  80. data/lib/bundler/man/bundle-info.1 +1 -1
  81. data/lib/bundler/man/bundle-init.1 +1 -1
  82. data/lib/bundler/man/bundle-inject.1 +5 -2
  83. data/lib/bundler/man/bundle-inject.1.ronn +3 -1
  84. data/lib/bundler/man/bundle-install.1 +6 -2
  85. data/lib/bundler/man/bundle-install.1.ronn +8 -2
  86. data/lib/bundler/man/bundle-list.1 +1 -1
  87. data/lib/bundler/man/bundle-lock.1 +1 -1
  88. data/lib/bundler/man/bundle-open.1 +1 -1
  89. data/lib/bundler/man/bundle-outdated.1 +3 -10
  90. data/lib/bundler/man/bundle-outdated.1.ronn +1 -10
  91. data/lib/bundler/man/bundle-platform.1 +16 -6
  92. data/lib/bundler/man/bundle-platform.1.ronn +14 -7
  93. data/lib/bundler/man/bundle-plugin.1 +81 -0
  94. data/lib/bundler/man/bundle-plugin.1.ronn +59 -0
  95. data/lib/bundler/man/bundle-pristine.1 +1 -1
  96. data/lib/bundler/man/bundle-remove.1 +1 -1
  97. data/lib/bundler/man/bundle-show.1 +1 -1
  98. data/lib/bundler/man/bundle-update.1 +5 -5
  99. data/lib/bundler/man/bundle-update.1.ronn +5 -4
  100. data/lib/bundler/man/bundle-version.1 +35 -0
  101. data/lib/bundler/man/bundle-version.1.ronn +24 -0
  102. data/lib/bundler/man/bundle-viz.1 +4 -1
  103. data/lib/bundler/man/bundle-viz.1.ronn +2 -0
  104. data/lib/bundler/man/bundle.1 +15 -10
  105. data/lib/bundler/man/bundle.1.ronn +12 -7
  106. data/lib/bundler/man/gemfile.5 +117 -80
  107. data/lib/bundler/man/gemfile.5.ronn +105 -84
  108. data/lib/bundler/man/index.txt +4 -0
  109. data/lib/bundler/match_metadata.rb +13 -0
  110. data/lib/bundler/match_platform.rb +0 -1
  111. data/lib/bundler/match_remote_metadata.rb +29 -0
  112. data/lib/bundler/plugin/api/source.rb +24 -8
  113. data/lib/bundler/plugin/index.rb +4 -1
  114. data/lib/bundler/plugin/installer/git.rb +0 -4
  115. data/lib/bundler/plugin/installer/rubygems.rb +0 -4
  116. data/lib/bundler/plugin/installer.rb +10 -10
  117. data/lib/bundler/plugin/source_list.rb +4 -0
  118. data/lib/bundler/plugin.rb +30 -8
  119. data/lib/bundler/process_lock.rb +1 -1
  120. data/lib/bundler/remote_specification.rb +10 -4
  121. data/lib/bundler/resolver/base.rb +50 -0
  122. data/lib/bundler/resolver/spec_group.rb +31 -73
  123. data/lib/bundler/resolver.rb +193 -292
  124. data/lib/bundler/retry.rb +1 -1
  125. data/lib/bundler/ruby_dsl.rb +1 -1
  126. data/lib/bundler/ruby_version.rb +5 -18
  127. data/lib/bundler/rubygems_ext.rb +160 -26
  128. data/lib/bundler/rubygems_gem_installer.rb +86 -9
  129. data/lib/bundler/rubygems_integration.rb +46 -93
  130. data/lib/bundler/runtime.rb +18 -12
  131. data/lib/bundler/self_manager.rb +168 -0
  132. data/lib/bundler/settings.rb +98 -22
  133. data/lib/bundler/setup.rb +2 -2
  134. data/lib/bundler/shared_helpers.rb +15 -31
  135. data/lib/bundler/source/git/git_proxy.rb +8 -6
  136. data/lib/bundler/source/git.rb +29 -13
  137. data/lib/bundler/source/metadata.rb +3 -7
  138. data/lib/bundler/source/path/installer.rb +1 -1
  139. data/lib/bundler/source/path.rb +3 -1
  140. data/lib/bundler/source/rubygems.rb +199 -182
  141. data/lib/bundler/source/rubygems_aggregate.rb +68 -0
  142. data/lib/bundler/source.rb +24 -4
  143. data/lib/bundler/source_list.rb +104 -60
  144. data/lib/bundler/source_map.rb +71 -0
  145. data/lib/bundler/spec_set.rb +58 -52
  146. data/lib/bundler/stub_specification.rb +13 -3
  147. data/lib/bundler/templates/Executable +2 -4
  148. data/lib/bundler/templates/Executable.bundler +8 -8
  149. data/lib/bundler/templates/Executable.standalone +2 -4
  150. data/lib/bundler/templates/Gemfile +0 -2
  151. data/lib/bundler/templates/gems.rb +0 -3
  152. data/lib/bundler/templates/newgem/Gemfile.tt +5 -2
  153. data/lib/bundler/templates/newgem/README.md.tt +8 -12
  154. data/lib/bundler/templates/newgem/Rakefile.tt +15 -2
  155. data/lib/bundler/templates/newgem/github/workflows/main.yml.tt +16 -7
  156. data/lib/bundler/templates/newgem/gitlab-ci.yml.tt +5 -4
  157. data/lib/bundler/templates/newgem/newgem.gemspec.tt +19 -17
  158. data/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
  159. data/lib/bundler/templates/newgem/standard.yml.tt +3 -0
  160. data/lib/bundler/templates/newgem/test/minitest/{newgem_test.rb.tt → test_newgem.rb.tt} +1 -1
  161. data/lib/bundler/ui/shell.rb +1 -1
  162. data/lib/bundler/vendor/.document +1 -0
  163. data/lib/bundler/vendor/connection_pool/LICENSE +20 -0
  164. data/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +19 -21
  165. data/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  166. data/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +57 -0
  167. data/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +39 -74
  168. data/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
  169. data/lib/bundler/vendor/molinillo/LICENSE +9 -0
  170. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +3 -3
  171. data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +32 -26
  172. data/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  173. data/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +1 -1
  174. data/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
  175. data/lib/bundler/vendor/thor/LICENSE.md +20 -0
  176. data/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +5 -5
  177. data/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -2
  178. data/lib/bundler/vendor/thor/lib/thor/actions.rb +6 -2
  179. data/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +6 -0
  180. data/lib/bundler/vendor/thor/lib/thor/error.rb +9 -4
  181. data/lib/bundler/vendor/thor/lib/thor/parser/options.rb +19 -1
  182. data/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +22 -4
  183. data/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
  184. data/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
  185. data/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  186. data/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +1 -1
  187. data/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
  188. data/lib/bundler/vendor/tsort/lib/tsort.rb +452 -0
  189. data/lib/bundler/vendor/uri/LICENSE.txt +22 -0
  190. data/lib/bundler/vendor/uri/lib/uri/common.rb +17 -80
  191. data/lib/bundler/vendor/uri/lib/uri/ftp.rb +0 -1
  192. data/lib/bundler/vendor/uri/lib/uri/generic.rb +5 -6
  193. data/lib/bundler/vendor/uri/lib/uri/http.rb +0 -1
  194. data/lib/bundler/vendor/uri/lib/uri/https.rb +0 -1
  195. data/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
  196. data/lib/bundler/vendor/uri/lib/uri/mailto.rb +0 -1
  197. data/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +1 -14
  198. data/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +1 -12
  199. data/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  200. data/lib/bundler/vendor/uri/lib/uri/ws.rb +84 -0
  201. data/lib/bundler/vendor/uri/lib/uri/wss.rb +22 -0
  202. data/lib/bundler/vendor/uri/lib/uri.rb +0 -1
  203. data/lib/bundler/vendored_tsort.rb +4 -0
  204. data/lib/bundler/version.rb +1 -1
  205. data/lib/bundler/worker.rb +19 -4
  206. data/lib/bundler.rb +46 -39
  207. metadata +39 -12
  208. data/lib/bundler/dep_proxy.rb +0 -55
  209. data/lib/bundler/gemdeps.rb +0 -29
  210. data/lib/bundler/psyched_yaml.rb +0 -22
  211. data/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +0 -66
@@ -3,7 +3,6 @@
3
3
  #
4
4
  # Author:: Akira Yamada <akira@ruby-lang.org>
5
5
  # License:: You can redistribute it and/or modify it under the same term as Ruby.
6
- # Revision:: $Id$
7
6
  #
8
7
  # See Bundler::URI for general documentation
9
8
  #
@@ -3,7 +3,6 @@
3
3
  # = uri/common.rb
4
4
  #
5
5
  # Author:: Akira Yamada <akira@ruby-lang.org>
6
- # Revision:: $Id$
7
6
  # License::
8
7
  # You can redistribute it and/or modify it under the same term as Ruby.
9
8
  #
@@ -208,21 +207,9 @@ module Bundler::URI
208
207
  # #=> #<Bundler::URI::LDAP ldap://ldap.example.com/dc=example?user=john>
209
208
  #
210
209
  def parse(uri)
211
- scheme, userinfo, host, port,
212
- registry, path, opaque, query, fragment = self.split(uri)
213
-
214
- if scheme && Bundler::URI.scheme_list.include?(scheme.upcase)
215
- Bundler::URI.scheme_list[scheme.upcase].new(scheme, userinfo, host, port,
216
- registry, path, opaque, query,
217
- fragment, self)
218
- else
219
- Generic.new(scheme, userinfo, host, port,
220
- registry, path, opaque, query,
221
- fragment, self)
222
- end
210
+ Bundler::URI.for(*self.split(uri), self)
223
211
  end
224
212
 
225
-
226
213
  #
227
214
  # == Args
228
215
  #
@@ -69,18 +69,7 @@ module Bundler::URI
69
69
  end
70
70
 
71
71
  def parse(uri) # :nodoc:
72
- scheme, userinfo, host, port,
73
- registry, path, opaque, query, fragment = self.split(uri)
74
- scheme_list = Bundler::URI.scheme_list
75
- if scheme && scheme_list.include?(uc = scheme.upcase)
76
- scheme_list[uc].new(scheme, userinfo, host, port,
77
- registry, path, opaque, query,
78
- fragment, self)
79
- else
80
- Generic.new(scheme, userinfo, host, port,
81
- registry, path, opaque, query,
82
- fragment, self)
83
- end
72
+ Bundler::URI.for(*self.split(uri), self)
84
73
  end
85
74
 
86
75
 
@@ -1,6 +1,6 @@
1
1
  module Bundler::URI
2
2
  # :stopdoc:
3
- VERSION_CODE = '001000'.freeze
3
+ VERSION_CODE = '001001'.freeze
4
4
  VERSION = VERSION_CODE.scan(/../).collect{|n| n.to_i}.join('.').freeze
5
5
  # :startdoc:
6
6
  end
@@ -0,0 +1,84 @@
1
+ # frozen_string_literal: false
2
+ # = uri/ws.rb
3
+ #
4
+ # Author:: Matt Muller <mamuller@amazon.com>
5
+ # License:: You can redistribute it and/or modify it under the same term as Ruby.
6
+ #
7
+ # See Bundler::URI for general documentation
8
+ #
9
+
10
+ require_relative 'generic'
11
+
12
+ module Bundler::URI
13
+
14
+ #
15
+ # The syntax of WS URIs is defined in RFC6455 section 3.
16
+ #
17
+ # Note that the Ruby Bundler::URI library allows WS URLs containing usernames and
18
+ # passwords. This is not legal as per the RFC, but used to be
19
+ # supported in Internet Explorer 5 and 6, before the MS04-004 security
20
+ # update. See <URL:http://support.microsoft.com/kb/834489>.
21
+ #
22
+ class WS < Generic
23
+ # A Default port of 80 for Bundler::URI::WS.
24
+ DEFAULT_PORT = 80
25
+
26
+ # An Array of the available components for Bundler::URI::WS.
27
+ COMPONENT = %i[
28
+ scheme
29
+ userinfo host port
30
+ path
31
+ query
32
+ ].freeze
33
+
34
+ #
35
+ # == Description
36
+ #
37
+ # Creates a new Bundler::URI::WS object from components, with syntax checking.
38
+ #
39
+ # The components accepted are userinfo, host, port, path, and query.
40
+ #
41
+ # The components should be provided either as an Array, or as a Hash
42
+ # with keys formed by preceding the component names with a colon.
43
+ #
44
+ # If an Array is used, the components must be passed in the
45
+ # order <code>[userinfo, host, port, path, query]</code>.
46
+ #
47
+ # Example:
48
+ #
49
+ # uri = Bundler::URI::WS.build(host: 'www.example.com', path: '/foo/bar')
50
+ #
51
+ # uri = Bundler::URI::WS.build([nil, "www.example.com", nil, "/path", "query"])
52
+ #
53
+ # Currently, if passed userinfo components this method generates
54
+ # invalid WS URIs as per RFC 1738.
55
+ #
56
+ def self.build(args)
57
+ tmp = Util.make_components_hash(self, args)
58
+ super(tmp)
59
+ end
60
+
61
+ #
62
+ # == Description
63
+ #
64
+ # Returns the full path for a WS Bundler::URI, as required by Net::HTTP::Get.
65
+ #
66
+ # If the Bundler::URI contains a query, the full path is Bundler::URI#path + '?' + Bundler::URI#query.
67
+ # Otherwise, the path is simply Bundler::URI#path.
68
+ #
69
+ # Example:
70
+ #
71
+ # uri = Bundler::URI::WS.build(path: '/foo/bar', query: 'test=true')
72
+ # uri.request_uri # => "/foo/bar?test=true"
73
+ #
74
+ def request_uri
75
+ return unless @path
76
+
77
+ url = @query ? "#@path?#@query" : @path.dup
78
+ url.start_with?(?/.freeze) ? url : ?/ + url
79
+ end
80
+ end
81
+
82
+ @@schemes['WS'] = WS
83
+
84
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: false
2
+ # = uri/wss.rb
3
+ #
4
+ # Author:: Matt Muller <mamuller@amazon.com>
5
+ # License:: You can redistribute it and/or modify it under the same term as Ruby.
6
+ #
7
+ # See Bundler::URI for general documentation
8
+ #
9
+
10
+ require_relative 'ws'
11
+
12
+ module Bundler::URI
13
+
14
+ # The default port for WSS URIs is 443, and the scheme is 'wss:' rather
15
+ # than 'ws:'. Other than that, WSS URIs are identical to WS URIs;
16
+ # see Bundler::URI::WS.
17
+ class WSS < WS
18
+ # A Default port of 443 for Bundler::URI::WSS
19
+ DEFAULT_PORT = 443
20
+ end
21
+ @@schemes['WSS'] = WSS
22
+ end
@@ -86,7 +86,6 @@
86
86
  # License::
87
87
  # Copyright (c) 2001 akira yamada <akira@ruby-lang.org>
88
88
  # You can redistribute it and/or modify it under the same term as Ruby.
89
- # Revision:: $Id$
90
89
  #
91
90
 
92
91
  module Bundler::URI
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bundler; end
4
+ require_relative "vendor/tsort/lib/tsort"
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: false
2
2
 
3
3
  module Bundler
4
- VERSION = "2.2.11".freeze
4
+ VERSION = "2.3.26".freeze
5
5
 
6
6
  def self.bundler_major_version
7
7
  @bundler_major_version ||= VERSION.split(".").first.to_i
@@ -21,12 +21,12 @@ module Bundler
21
21
  # @param func [Proc] job to run in inside the worker pool
22
22
  def initialize(size, name, func)
23
23
  @name = name
24
- @request_queue = Queue.new
25
- @response_queue = Queue.new
24
+ @request_queue = Thread::Queue.new
25
+ @response_queue = Thread::Queue.new
26
26
  @func = func
27
27
  @size = size
28
28
  @threads = nil
29
- SharedHelpers.trap("INT") { abort_threads }
29
+ @previous_interrupt_handler = nil
30
30
  end
31
31
 
32
32
  # Enqueue a request to be executed in the worker pool
@@ -68,13 +68,16 @@ module Bundler
68
68
  # so as worker threads after retrieving it, shut themselves down
69
69
  def stop_threads
70
70
  return unless @threads
71
+
71
72
  @threads.each { @request_queue.enq POISON }
72
73
  @threads.each(&:join)
74
+
75
+ remove_interrupt_handler
76
+
73
77
  @threads = nil
74
78
  end
75
79
 
76
80
  def abort_threads
77
- return unless @threads
78
81
  Bundler.ui.debug("\n#{caller.join("\n")}")
79
82
  @threads.each(&:exit)
80
83
  exit 1
@@ -94,11 +97,23 @@ module Bundler
94
97
  end
95
98
  end.compact
96
99
 
100
+ add_interrupt_handler unless @threads.empty?
101
+
97
102
  return if creation_errors.empty?
98
103
 
99
104
  message = "Failed to create threads for the #{name} worker: #{creation_errors.map(&:to_s).uniq.join(", ")}"
100
105
  raise ThreadCreationError, message if @threads.empty?
101
106
  Bundler.ui.info message
102
107
  end
108
+
109
+ def add_interrupt_handler
110
+ @previous_interrupt_handler = trap("INT") { abort_threads }
111
+ end
112
+
113
+ def remove_interrupt_handler
114
+ return unless @previous_interrupt_handler
115
+
116
+ trap "INT", @previous_interrupt_handler
117
+ end
103
118
  end
104
119
  end
data/lib/bundler.rb CHANGED
@@ -19,7 +19,7 @@ require_relative "bundler/build_metadata"
19
19
  #
20
20
  # Since Ruby 2.6, Bundler is a part of Ruby's standard library.
21
21
  #
22
- # Bunder is used by creating _gemfiles_ listing all the project dependencies
22
+ # Bundler is used by creating _gemfiles_ listing all the project dependencies
23
23
  # and (optionally) their versions and then using
24
24
  #
25
25
  # require 'bundler/setup'
@@ -37,12 +37,12 @@ module Bundler
37
37
  environment_preserver = EnvironmentPreserver.from_env
38
38
  ORIGINAL_ENV = environment_preserver.restore
39
39
  environment_preserver.replace_with_backup
40
- SUDO_MUTEX = Mutex.new
40
+ SUDO_MUTEX = Thread::Mutex.new
41
41
 
42
42
  autoload :Definition, File.expand_path("bundler/definition", __dir__)
43
43
  autoload :Dependency, File.expand_path("bundler/dependency", __dir__)
44
- autoload :DepProxy, File.expand_path("bundler/dep_proxy", __dir__)
45
44
  autoload :Deprecate, File.expand_path("bundler/deprecate", __dir__)
45
+ autoload :Digest, File.expand_path("bundler/digest", __dir__)
46
46
  autoload :Dsl, File.expand_path("bundler/dsl", __dir__)
47
47
  autoload :EndpointSpecification, File.expand_path("bundler/endpoint_specification", __dir__)
48
48
  autoload :Env, File.expand_path("bundler/env", __dir__)
@@ -57,7 +57,7 @@ module Bundler
57
57
  autoload :Installer, File.expand_path("bundler/installer", __dir__)
58
58
  autoload :LazySpecification, File.expand_path("bundler/lazy_specification", __dir__)
59
59
  autoload :LockfileParser, File.expand_path("bundler/lockfile_parser", __dir__)
60
- autoload :MatchPlatform, File.expand_path("bundler/match_platform", __dir__)
60
+ autoload :MatchRemoteMetadata, File.expand_path("bundler/match_remote_metadata", __dir__)
61
61
  autoload :ProcessLock, File.expand_path("bundler/process_lock", __dir__)
62
62
  autoload :RemoteSpecification, File.expand_path("bundler/remote_specification", __dir__)
63
63
  autoload :Resolver, File.expand_path("bundler/resolver", __dir__)
@@ -65,10 +65,12 @@ module Bundler
65
65
  autoload :RubyDsl, File.expand_path("bundler/ruby_dsl", __dir__)
66
66
  autoload :RubyVersion, File.expand_path("bundler/ruby_version", __dir__)
67
67
  autoload :Runtime, File.expand_path("bundler/runtime", __dir__)
68
+ autoload :SelfManager, File.expand_path("bundler/self_manager", __dir__)
68
69
  autoload :Settings, File.expand_path("bundler/settings", __dir__)
69
70
  autoload :SharedHelpers, File.expand_path("bundler/shared_helpers", __dir__)
70
71
  autoload :Source, File.expand_path("bundler/source", __dir__)
71
72
  autoload :SourceList, File.expand_path("bundler/source_list", __dir__)
73
+ autoload :SourceMap, File.expand_path("bundler/source_map", __dir__)
72
74
  autoload :SpecSet, File.expand_path("bundler/spec_set", __dir__)
73
75
  autoload :StubSpecification, File.expand_path("bundler/stub_specification", __dir__)
74
76
  autoload :UI, File.expand_path("bundler/ui", __dir__)
@@ -94,6 +96,17 @@ module Bundler
94
96
  @bundle_path ||= Pathname.new(configured_bundle_path.path).expand_path(root)
95
97
  end
96
98
 
99
+ def create_bundle_path
100
+ SharedHelpers.filesystem_access(bundle_path.to_s) do |p|
101
+ mkdir_p(p)
102
+ end unless bundle_path.exist?
103
+
104
+ @bundle_path = bundle_path.realpath
105
+ rescue Errno::EEXIST
106
+ raise PathError, "Could not install to path `#{bundle_path}` " \
107
+ "because a file already exists at that path. Either remove or rename the file so the directory can be created."
108
+ end
109
+
97
110
  def configured_bundle_path
98
111
  @configured_bundle_path ||= settings.path.tap(&:validate!)
99
112
  end
@@ -197,7 +210,7 @@ module Bundler
197
210
 
198
211
  def frozen_bundle?
199
212
  frozen = settings[:deployment]
200
- frozen ||= settings[:frozen] unless feature_flag.deployment_means_frozen?
213
+ frozen ||= settings[:frozen]
201
214
  frozen
202
215
  end
203
216
 
@@ -235,8 +248,9 @@ module Bundler
235
248
  end
236
249
 
237
250
  if warning
238
- user_home = tmp_home_path(warning)
239
- Bundler.ui.warn "#{warning}\nBundler will use `#{user_home}' as your home directory temporarily.\n"
251
+ Bundler.ui.warn "#{warning}\n"
252
+ user_home = tmp_home_path
253
+ Bundler.ui.warn "Bundler will use `#{user_home}' as your home directory temporarily.\n"
240
254
  user_home
241
255
  else
242
256
  Pathname.new(home)
@@ -316,9 +330,9 @@ module Bundler
316
330
  FileUtils.remove_entry_secure(path) if path && File.exist?(path)
317
331
  rescue ArgumentError
318
332
  message = <<EOF
319
- It is a security vulnerability to allow your home directory to be world-writable, and bundler can not continue.
333
+ It is a security vulnerability to allow your home directory to be world-writable, and bundler cannot continue.
320
334
  You should probably consider fixing this issue by running `chmod o-w ~` on *nix.
321
- Please refer to https://ruby-doc.org/stdlib-2.1.2/libdoc/fileutils/rdoc/FileUtils.html#method-c-remove_entry_secure for details.
335
+ Please refer to https://ruby-doc.org/stdlib-3.1.2/libdoc/fileutils/rdoc/FileUtils.html#method-c-remove_entry_secure for details.
322
336
  EOF
323
337
  File.world_writable?(path) ? Bundler.ui.warn(message) : raise
324
338
  raise PathError, "Please fix the world-writable issue with your #{path} directory"
@@ -366,7 +380,7 @@ EOF
366
380
 
367
381
  if env.key?("RUBYLIB")
368
382
  rubylib = env["RUBYLIB"].split(File::PATH_SEPARATOR)
369
- rubylib.delete(File.expand_path("..", __FILE__))
383
+ rubylib.delete(__dir__)
370
384
  env["RUBYLIB"] = rubylib.join(File::PATH_SEPARATOR)
371
385
  end
372
386
 
@@ -557,7 +571,7 @@ EOF
557
571
 
558
572
  def load_marshal(data)
559
573
  Marshal.load(data)
560
- rescue StandardError => e
574
+ rescue TypeError => e
561
575
  raise MarshalError, "#{e.class}: #{e.message}"
562
576
  end
563
577
 
@@ -634,15 +648,26 @@ EOF
634
648
  @rubygems = nil
635
649
  end
636
650
 
651
+ def configure_gem_home_and_path(path = bundle_path)
652
+ configure_gem_path
653
+ configure_gem_home(path)
654
+ Bundler.rubygems.clear_paths
655
+ end
656
+
657
+ def self_manager
658
+ @self_manager ||= begin
659
+ require_relative "bundler/self_manager"
660
+ Bundler::SelfManager.new
661
+ end
662
+ end
663
+
637
664
  private
638
665
 
639
666
  def eval_yaml_gemspec(path, contents)
640
- require_relative "bundler/psyched_yaml"
667
+ Kernel.require "psych"
641
668
 
642
- # If the YAML is invalid, Syck raises an ArgumentError, and Psych
643
- # raises a Psych::SyntaxError. See psyched_yaml.rb for more info.
644
669
  Gem::Specification.from_yaml(contents)
645
- rescue YamlLibrarySyntaxError, ArgumentError, Gem::EndOfYAMLException, Gem::Exception
670
+ rescue ::Psych::SyntaxError, ArgumentError, Gem::EndOfYAMLException, Gem::Exception
646
671
  eval_gemspec(path, contents)
647
672
  end
648
673
 
@@ -651,47 +676,29 @@ EOF
651
676
  rescue ScriptError, StandardError => e
652
677
  msg = "There was an error while loading `#{path.basename}`: #{e.message}"
653
678
 
654
- if e.is_a?(LoadError)
655
- msg += "\nDoes it try to require a relative path? That's been removed in Ruby 1.9"
656
- end
657
-
658
679
  raise GemspecError, Dsl::DSLError.new(msg, path, e.backtrace, contents)
659
680
  end
660
681
 
661
- def configure_gem_home_and_path
662
- configure_gem_path
663
- configure_gem_home
664
- bundle_path
665
- end
666
-
667
- def configure_gem_path(env = ENV)
668
- blank_home = env["GEM_HOME"].nil? || env["GEM_HOME"].empty?
669
- if !use_system_gems?
682
+ def configure_gem_path
683
+ unless use_system_gems?
670
684
  # this needs to be empty string to cause
671
685
  # PathSupport.split_gem_path to only load up the
672
686
  # Bundler --path setting as the GEM_PATH.
673
- env["GEM_PATH"] = ""
674
- elsif blank_home
675
- possibles = [Bundler.rubygems.gem_dir, Bundler.rubygems.gem_path]
676
- paths = possibles.flatten.compact.uniq.reject(&:empty?)
677
- env["GEM_PATH"] = paths.join(File::PATH_SEPARATOR)
687
+ Bundler::SharedHelpers.set_env "GEM_PATH", ""
678
688
  end
679
689
  end
680
690
 
681
- def configure_gem_home
682
- Bundler::SharedHelpers.set_env "GEM_HOME", File.expand_path(bundle_path, root)
683
- Bundler.rubygems.clear_paths
691
+ def configure_gem_home(path)
692
+ Bundler::SharedHelpers.set_env "GEM_HOME", path.to_s
684
693
  end
685
694
 
686
- def tmp_home_path(warning)
695
+ def tmp_home_path
687
696
  Kernel.send(:require, "tmpdir")
688
697
  SharedHelpers.filesystem_access(Dir.tmpdir) do
689
698
  path = Bundler.tmp
690
699
  at_exit { Bundler.rm_rf(path) }
691
700
  path
692
701
  end
693
- rescue RuntimeError => e
694
- raise e.exception("#{warning}\nBundler also failed to create a temporary home directory':\n#{e}")
695
702
  end
696
703
 
697
704
  # @param env [Hash]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bundler
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.11
4
+ version: 2.3.26
5
5
  platform: ruby
6
6
  authors:
7
7
  - André Arko
@@ -19,10 +19,10 @@ authors:
19
19
  - Terence Lee
20
20
  - Carl Lerche
21
21
  - Yehuda Katz
22
- autorequire:
22
+ autorequire:
23
23
  bindir: exe
24
24
  cert_chain: []
25
- date: 2021-02-17 00:00:00.000000000 Z
25
+ date: 2022-11-17 00:00:00.000000000 Z
26
26
  dependencies: []
27
27
  description: Bundler manages an application's dependencies through its entire life,
28
28
  across many machines, systematically and repeatably
@@ -41,6 +41,7 @@ files:
41
41
  - exe/bundle
42
42
  - exe/bundler
43
43
  - lib/bundler.rb
44
+ - lib/bundler/.document
44
45
  - lib/bundler/build_metadata.rb
45
46
  - lib/bundler/capistrano.rb
46
47
  - lib/bundler/cli.rb
@@ -79,10 +80,10 @@ files:
79
80
  - lib/bundler/constants.rb
80
81
  - lib/bundler/current_ruby.rb
81
82
  - lib/bundler/definition.rb
82
- - lib/bundler/dep_proxy.rb
83
83
  - lib/bundler/dependency.rb
84
84
  - lib/bundler/deployment.rb
85
85
  - lib/bundler/deprecate.rb
86
+ - lib/bundler/digest.rb
86
87
  - lib/bundler/dsl.rb
87
88
  - lib/bundler/endpoint_specification.rb
88
89
  - lib/bundler/env.rb
@@ -100,7 +101,6 @@ files:
100
101
  - lib/bundler/gem_helpers.rb
101
102
  - lib/bundler/gem_tasks.rb
102
103
  - lib/bundler/gem_version_promoter.rb
103
- - lib/bundler/gemdeps.rb
104
104
  - lib/bundler/graph.rb
105
105
  - lib/bundler/index.rb
106
106
  - lib/bundler/injector.rb
@@ -125,12 +125,16 @@ files:
125
125
  - lib/bundler/man/bundle-clean.1.ronn
126
126
  - lib/bundler/man/bundle-config.1
127
127
  - lib/bundler/man/bundle-config.1.ronn
128
+ - lib/bundler/man/bundle-console.1
129
+ - lib/bundler/man/bundle-console.1.ronn
128
130
  - lib/bundler/man/bundle-doctor.1
129
131
  - lib/bundler/man/bundle-doctor.1.ronn
130
132
  - lib/bundler/man/bundle-exec.1
131
133
  - lib/bundler/man/bundle-exec.1.ronn
132
134
  - lib/bundler/man/bundle-gem.1
133
135
  - lib/bundler/man/bundle-gem.1.ronn
136
+ - lib/bundler/man/bundle-help.1
137
+ - lib/bundler/man/bundle-help.1.ronn
134
138
  - lib/bundler/man/bundle-info.1
135
139
  - lib/bundler/man/bundle-info.1.ronn
136
140
  - lib/bundler/man/bundle-init.1
@@ -149,6 +153,8 @@ files:
149
153
  - lib/bundler/man/bundle-outdated.1.ronn
150
154
  - lib/bundler/man/bundle-platform.1
151
155
  - lib/bundler/man/bundle-platform.1.ronn
156
+ - lib/bundler/man/bundle-plugin.1
157
+ - lib/bundler/man/bundle-plugin.1.ronn
152
158
  - lib/bundler/man/bundle-pristine.1
153
159
  - lib/bundler/man/bundle-pristine.1.ronn
154
160
  - lib/bundler/man/bundle-remove.1
@@ -157,6 +163,8 @@ files:
157
163
  - lib/bundler/man/bundle-show.1.ronn
158
164
  - lib/bundler/man/bundle-update.1
159
165
  - lib/bundler/man/bundle-update.1.ronn
166
+ - lib/bundler/man/bundle-version.1
167
+ - lib/bundler/man/bundle-version.1.ronn
160
168
  - lib/bundler/man/bundle-viz.1
161
169
  - lib/bundler/man/bundle-viz.1.ronn
162
170
  - lib/bundler/man/bundle.1
@@ -164,7 +172,9 @@ files:
164
172
  - lib/bundler/man/gemfile.5
165
173
  - lib/bundler/man/gemfile.5.ronn
166
174
  - lib/bundler/man/index.txt
175
+ - lib/bundler/match_metadata.rb
167
176
  - lib/bundler/match_platform.rb
177
+ - lib/bundler/match_remote_metadata.rb
168
178
  - lib/bundler/mirror.rb
169
179
  - lib/bundler/plugin.rb
170
180
  - lib/bundler/plugin/api.rb
@@ -177,9 +187,9 @@ files:
177
187
  - lib/bundler/plugin/installer/rubygems.rb
178
188
  - lib/bundler/plugin/source_list.rb
179
189
  - lib/bundler/process_lock.rb
180
- - lib/bundler/psyched_yaml.rb
181
190
  - lib/bundler/remote_specification.rb
182
191
  - lib/bundler/resolver.rb
192
+ - lib/bundler/resolver/base.rb
183
193
  - lib/bundler/resolver/spec_group.rb
184
194
  - lib/bundler/retry.rb
185
195
  - lib/bundler/ruby_dsl.rb
@@ -188,6 +198,7 @@ files:
188
198
  - lib/bundler/rubygems_gem_installer.rb
189
199
  - lib/bundler/rubygems_integration.rb
190
200
  - lib/bundler/runtime.rb
201
+ - lib/bundler/self_manager.rb
191
202
  - lib/bundler/settings.rb
192
203
  - lib/bundler/settings/validator.rb
193
204
  - lib/bundler/setup.rb
@@ -202,7 +213,9 @@ files:
202
213
  - lib/bundler/source/path/installer.rb
203
214
  - lib/bundler/source/rubygems.rb
204
215
  - lib/bundler/source/rubygems/remote.rb
216
+ - lib/bundler/source/rubygems_aggregate.rb
205
217
  - lib/bundler/source_list.rb
218
+ - lib/bundler/source_map.rb
206
219
  - lib/bundler/spec_set.rb
207
220
  - lib/bundler/stub_specification.rb
208
221
  - lib/bundler/templates/.document
@@ -232,10 +245,12 @@ files:
232
245
  - lib/bundler/templates/newgem/newgem.gemspec.tt
233
246
  - lib/bundler/templates/newgem/rspec.tt
234
247
  - lib/bundler/templates/newgem/rubocop.yml.tt
248
+ - lib/bundler/templates/newgem/sig/newgem.rbs.tt
235
249
  - lib/bundler/templates/newgem/spec/newgem_spec.rb.tt
236
250
  - lib/bundler/templates/newgem/spec/spec_helper.rb.tt
237
- - lib/bundler/templates/newgem/test/minitest/newgem_test.rb.tt
251
+ - lib/bundler/templates/newgem/standard.yml.tt
238
252
  - lib/bundler/templates/newgem/test/minitest/test_helper.rb.tt
253
+ - lib/bundler/templates/newgem/test/minitest/test_newgem.rb.tt
239
254
  - lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt
240
255
  - lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt
241
256
  - lib/bundler/templates/newgem/travis.yml.tt
@@ -244,11 +259,15 @@ files:
244
259
  - lib/bundler/ui/shell.rb
245
260
  - lib/bundler/ui/silent.rb
246
261
  - lib/bundler/uri_credentials_filter.rb
262
+ - lib/bundler/vendor/.document
263
+ - lib/bundler/vendor/connection_pool/LICENSE
247
264
  - lib/bundler/vendor/connection_pool/lib/connection_pool.rb
248
- - lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb
249
265
  - lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb
250
266
  - lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb
267
+ - lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb
268
+ - lib/bundler/vendor/fileutils/LICENSE.txt
251
269
  - lib/bundler/vendor/fileutils/lib/fileutils.rb
270
+ - lib/bundler/vendor/molinillo/LICENSE
252
271
  - lib/bundler/vendor/molinillo/lib/molinillo.rb
253
272
  - lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb
254
273
  - lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb
@@ -269,10 +288,12 @@ files:
269
288
  - lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb
270
289
  - lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb
271
290
  - lib/bundler/vendor/molinillo/lib/molinillo/state.rb
291
+ - lib/bundler/vendor/net-http-persistent/README.rdoc
272
292
  - lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb
273
293
  - lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb
274
294
  - lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb
275
295
  - lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb
296
+ - lib/bundler/vendor/thor/LICENSE.md
276
297
  - lib/bundler/vendor/thor/lib/thor.rb
277
298
  - lib/bundler/vendor/thor/lib/thor/actions.rb
278
299
  - lib/bundler/vendor/thor/lib/thor/actions/create_file.rb
@@ -305,6 +326,9 @@ files:
305
326
  - lib/bundler/vendor/thor/lib/thor/util.rb
306
327
  - lib/bundler/vendor/thor/lib/thor/version.rb
307
328
  - lib/bundler/vendor/tmpdir/lib/tmpdir.rb
329
+ - lib/bundler/vendor/tsort/LICENSE.txt
330
+ - lib/bundler/vendor/tsort/lib/tsort.rb
331
+ - lib/bundler/vendor/uri/LICENSE.txt
308
332
  - lib/bundler/vendor/uri/lib/uri.rb
309
333
  - lib/bundler/vendor/uri/lib/uri/common.rb
310
334
  - lib/bundler/vendor/uri/lib/uri/file.rb
@@ -318,11 +342,14 @@ files:
318
342
  - lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb
319
343
  - lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb
320
344
  - lib/bundler/vendor/uri/lib/uri/version.rb
345
+ - lib/bundler/vendor/uri/lib/uri/ws.rb
346
+ - lib/bundler/vendor/uri/lib/uri/wss.rb
321
347
  - lib/bundler/vendored_fileutils.rb
322
348
  - lib/bundler/vendored_molinillo.rb
323
349
  - lib/bundler/vendored_persistent.rb
324
350
  - lib/bundler/vendored_thor.rb
325
351
  - lib/bundler/vendored_tmpdir.rb
352
+ - lib/bundler/vendored_tsort.rb
326
353
  - lib/bundler/vendored_uri.rb
327
354
  - lib/bundler/version.rb
328
355
  - lib/bundler/version_ranges.rb
@@ -336,8 +363,8 @@ metadata:
336
363
  bug_tracker_uri: https://github.com/rubygems/rubygems/issues?q=is%3Aopen+is%3Aissue+label%3ABundler
337
364
  changelog_uri: https://github.com/rubygems/rubygems/blob/master/bundler/CHANGELOG.md
338
365
  homepage_uri: https://bundler.io/
339
- source_code_uri: https://github.com/rubygems/rubygems/
340
- post_install_message:
366
+ source_code_uri: https://github.com/rubygems/rubygems/tree/master/bundler
367
+ post_install_message:
341
368
  rdoc_options: []
342
369
  require_paths:
343
370
  - lib
@@ -352,8 +379,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
352
379
  - !ruby/object:Gem::Version
353
380
  version: 2.5.2
354
381
  requirements: []
355
- rubygems_version: 3.2.11
356
- signing_key:
382
+ rubygems_version: 3.3.26
383
+ signing_key:
357
384
  specification_version: 4
358
385
  summary: The best way to manage your application's dependencies
359
386
  test_files: []