rubygems-update 3.5.22 → 3.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (242) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +91 -0
  3. data/Manifest.txt +23 -16
  4. data/README.md +14 -9
  5. data/bundler/CHANGELOG.md +83 -0
  6. data/bundler/bundler.gemspec +2 -2
  7. data/bundler/lib/bundler/build_metadata.rb +2 -2
  8. data/bundler/lib/bundler/cli/add.rb +2 -0
  9. data/bundler/lib/bundler/cli/check.rb +2 -2
  10. data/bundler/lib/bundler/cli/console.rb +0 -4
  11. data/bundler/lib/bundler/cli/doctor.rb +4 -4
  12. data/bundler/lib/bundler/cli/exec.rb +1 -0
  13. data/bundler/lib/bundler/cli/gem.rb +1 -1
  14. data/bundler/lib/bundler/cli/info.rb +2 -2
  15. data/bundler/lib/bundler/cli/inject.rb +1 -1
  16. data/bundler/lib/bundler/cli/install.rb +4 -0
  17. data/bundler/lib/bundler/cli/lock.rb +20 -1
  18. data/bundler/lib/bundler/cli/pristine.rb +1 -1
  19. data/bundler/lib/bundler/cli/show.rb +2 -2
  20. data/bundler/lib/bundler/cli.rb +23 -53
  21. data/bundler/lib/bundler/compact_index_client/cache_file.rb +0 -5
  22. data/bundler/lib/bundler/compact_index_client/updater.rb +0 -11
  23. data/bundler/lib/bundler/definition.rb +143 -76
  24. data/bundler/lib/bundler/dependency.rb +1 -1
  25. data/bundler/lib/bundler/dsl.rb +33 -28
  26. data/bundler/lib/bundler/endpoint_specification.rb +10 -1
  27. data/bundler/lib/bundler/errors.rb +10 -0
  28. data/bundler/lib/bundler/feature_flag.rb +1 -0
  29. data/bundler/lib/bundler/fetcher/compact_index.rb +1 -1
  30. data/bundler/lib/bundler/fetcher.rb +10 -3
  31. data/bundler/lib/bundler/gem_helpers.rb +21 -5
  32. data/bundler/lib/bundler/injector.rb +2 -2
  33. data/bundler/lib/bundler/inline.rb +12 -8
  34. data/bundler/lib/bundler/installer/standalone.rb +2 -2
  35. data/bundler/lib/bundler/installer.rb +4 -38
  36. data/bundler/lib/bundler/lazy_specification.rb +74 -26
  37. data/bundler/lib/bundler/lockfile_generator.rb +1 -1
  38. data/bundler/lib/bundler/lockfile_parser.rb +9 -1
  39. data/bundler/lib/bundler/man/bundle-add.1 +17 -11
  40. data/bundler/lib/bundler/man/bundle-add.1.ronn +16 -10
  41. data/bundler/lib/bundler/man/bundle-binstubs.1 +7 -4
  42. data/bundler/lib/bundler/man/bundle-binstubs.1.ronn +6 -3
  43. data/bundler/lib/bundler/man/bundle-cache.1 +30 -2
  44. data/bundler/lib/bundler/man/bundle-cache.1.ronn +31 -2
  45. data/bundler/lib/bundler/man/bundle-check.1 +3 -3
  46. data/bundler/lib/bundler/man/bundle-check.1.ronn +4 -2
  47. data/bundler/lib/bundler/man/bundle-clean.1 +1 -1
  48. data/bundler/lib/bundler/man/bundle-config.1 +3 -5
  49. data/bundler/lib/bundler/man/bundle-config.1.ronn +2 -7
  50. data/bundler/lib/bundler/man/bundle-console.1 +2 -4
  51. data/bundler/lib/bundler/man/bundle-console.1.ronn +2 -7
  52. data/bundler/lib/bundler/man/bundle-doctor.1 +2 -2
  53. data/bundler/lib/bundler/man/bundle-doctor.1.ronn +1 -1
  54. data/bundler/lib/bundler/man/bundle-env.1 +9 -0
  55. data/bundler/lib/bundler/man/bundle-env.1.ronn +10 -0
  56. data/bundler/lib/bundler/man/bundle-exec.1 +5 -2
  57. data/bundler/lib/bundler/man/bundle-exec.1.ronn +4 -1
  58. data/bundler/lib/bundler/man/bundle-fund.1 +22 -0
  59. data/bundler/lib/bundler/man/bundle-fund.1.ronn +25 -0
  60. data/bundler/lib/bundler/man/bundle-gem.1 +17 -5
  61. data/bundler/lib/bundler/man/bundle-gem.1.ronn +27 -6
  62. data/bundler/lib/bundler/man/bundle-help.1 +1 -1
  63. data/bundler/lib/bundler/man/bundle-info.1 +5 -2
  64. data/bundler/lib/bundler/man/bundle-info.1.ronn +6 -2
  65. data/bundler/lib/bundler/man/bundle-init.1 +3 -3
  66. data/bundler/lib/bundler/man/bundle-init.1.ronn +3 -2
  67. data/bundler/lib/bundler/man/bundle-inject.1 +10 -2
  68. data/bundler/lib/bundler/man/bundle-inject.1.ronn +9 -1
  69. data/bundler/lib/bundler/man/bundle-install.1 +15 -12
  70. data/bundler/lib/bundler/man/bundle-install.1.ronn +22 -18
  71. data/bundler/lib/bundler/man/bundle-issue.1 +45 -0
  72. data/bundler/lib/bundler/man/bundle-issue.1.ronn +37 -0
  73. data/bundler/lib/bundler/man/bundle-licenses.1 +9 -0
  74. data/bundler/lib/bundler/man/bundle-licenses.1.ronn +10 -0
  75. data/bundler/lib/bundler/man/bundle-list.1 +1 -1
  76. data/bundler/lib/bundler/man/bundle-list.1.ronn +4 -1
  77. data/bundler/lib/bundler/man/bundle-lock.1 +21 -6
  78. data/bundler/lib/bundler/man/bundle-lock.1.ronn +25 -4
  79. data/bundler/lib/bundler/man/bundle-open.1 +2 -2
  80. data/bundler/lib/bundler/man/bundle-open.1.ronn +2 -1
  81. data/bundler/lib/bundler/man/bundle-outdated.1 +8 -5
  82. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +8 -4
  83. data/bundler/lib/bundler/man/bundle-platform.1 +1 -1
  84. data/bundler/lib/bundler/man/bundle-plugin.1 +1 -1
  85. data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
  86. data/bundler/lib/bundler/man/bundle-pristine.1.ronn +1 -1
  87. data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
  88. data/bundler/lib/bundler/man/bundle-remove.1.ronn +1 -1
  89. data/bundler/lib/bundler/man/bundle-show.1 +5 -2
  90. data/bundler/lib/bundler/man/bundle-show.1.ronn +4 -0
  91. data/bundler/lib/bundler/man/bundle-update.1 +13 -7
  92. data/bundler/lib/bundler/man/bundle-update.1.ronn +14 -6
  93. data/bundler/lib/bundler/man/bundle-version.1 +1 -1
  94. data/bundler/lib/bundler/man/bundle-viz.1 +4 -4
  95. data/bundler/lib/bundler/man/bundle-viz.1.ronn +7 -3
  96. data/bundler/lib/bundler/man/bundle.1 +1 -1
  97. data/bundler/lib/bundler/man/gemfile.5 +1 -1
  98. data/bundler/lib/bundler/man/index.txt +4 -0
  99. data/bundler/lib/bundler/materialization.rb +59 -0
  100. data/bundler/lib/bundler/plugin/events.rb +24 -0
  101. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  102. data/bundler/lib/bundler/plugin.rb +20 -1
  103. data/bundler/lib/bundler/process_lock.rb +10 -14
  104. data/bundler/lib/bundler/remote_specification.rb +6 -1
  105. data/bundler/lib/bundler/resolver/base.rb +6 -6
  106. data/bundler/lib/bundler/resolver/candidate.rb +2 -2
  107. data/bundler/lib/bundler/resolver/spec_group.rb +4 -3
  108. data/bundler/lib/bundler/resolver.rb +5 -5
  109. data/bundler/lib/bundler/rubygems_ext.rb +30 -27
  110. data/bundler/lib/bundler/rubygems_gem_installer.rb +3 -2
  111. data/bundler/lib/bundler/rubygems_integration.rb +23 -40
  112. data/bundler/lib/bundler/runtime.rb +27 -7
  113. data/bundler/lib/bundler/self_manager.rb +2 -3
  114. data/bundler/lib/bundler/settings.rb +6 -1
  115. data/bundler/lib/bundler/shared_helpers.rb +29 -17
  116. data/bundler/lib/bundler/source/git/git_proxy.rb +0 -6
  117. data/bundler/lib/bundler/source/git.rb +56 -31
  118. data/bundler/lib/bundler/source/metadata.rb +2 -3
  119. data/bundler/lib/bundler/source/path.rb +2 -2
  120. data/bundler/lib/bundler/source_list.rb +1 -1
  121. data/bundler/lib/bundler/spec_set.rb +81 -56
  122. data/bundler/lib/bundler/stub_specification.rb +8 -0
  123. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +0 -3
  124. data/bundler/lib/bundler/templates/newgem/README.md.tt +1 -1
  125. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +15 -15
  126. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +4 -4
  127. data/bundler/lib/bundler/uri_credentials_filter.rb +1 -1
  128. data/bundler/lib/bundler/vendor/fileutils/COPYING +56 -0
  129. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +15 -13
  130. data/bundler/lib/bundler/vendor/securerandom/COPYING +56 -0
  131. data/bundler/lib/bundler/vendor/securerandom/lib/securerandom.rb +5 -5
  132. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +3 -5
  133. data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +11 -0
  134. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +1 -4
  135. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +2 -2
  136. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +2 -1
  137. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +9 -9
  138. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +1 -1
  139. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +5 -21
  140. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
  141. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  142. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +11 -0
  143. data/bundler/lib/bundler/vendor/uri/COPYING +56 -0
  144. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +37 -16
  145. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +3 -3
  146. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +1 -1
  147. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +16 -26
  148. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +2 -2
  149. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +10 -3
  150. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +26 -3
  151. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  152. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +9 -9
  153. data/bundler/lib/bundler/vendored_securerandom.rb +0 -2
  154. data/bundler/lib/bundler/version.rb +1 -1
  155. data/bundler/lib/bundler.rb +38 -14
  156. data/{CONTRIBUTING.md → doc/rubygems/CONTRIBUTING.md} +9 -9
  157. data/{POLICIES.md → doc/rubygems/POLICIES.md} +11 -11
  158. data/lib/rubygems/basic_specification.rb +5 -4
  159. data/lib/rubygems/commands/cleanup_command.rb +2 -2
  160. data/lib/rubygems/commands/contents_command.rb +4 -4
  161. data/lib/rubygems/commands/exec_command.rb +3 -0
  162. data/lib/rubygems/commands/pristine_command.rb +2 -2
  163. data/lib/rubygems/commands/push_command.rb +29 -5
  164. data/lib/rubygems/commands/rdoc_command.rb +2 -2
  165. data/lib/rubygems/commands/rebuild_command.rb +0 -2
  166. data/lib/rubygems/commands/setup_command.rb +7 -16
  167. data/lib/rubygems/commands/unpack_command.rb +0 -6
  168. data/lib/rubygems/commands/update_command.rb +2 -8
  169. data/lib/rubygems/config_file.rb +12 -0
  170. data/lib/rubygems/core_ext/kernel_warn.rb +2 -6
  171. data/lib/rubygems/defaults.rb +1 -1
  172. data/lib/rubygems/exceptions.rb +0 -6
  173. data/lib/rubygems/ext/builder.rb +6 -4
  174. data/lib/rubygems/ext/cargo_builder.rb +7 -4
  175. data/lib/rubygems/ext/cmake_builder.rb +7 -2
  176. data/lib/rubygems/ext/configure_builder.rb +7 -2
  177. data/lib/rubygems/ext/ext_conf_builder.rb +9 -5
  178. data/lib/rubygems/ext/rake_builder.rb +6 -1
  179. data/lib/rubygems/gem_runner.rb +9 -0
  180. data/lib/rubygems/gemcutter_utilities.rb +8 -2
  181. data/lib/rubygems/install_update_options.rb +5 -0
  182. data/lib/rubygems/installer.rb +8 -9
  183. data/lib/rubygems/package/tar_header.rb +11 -0
  184. data/lib/rubygems/package/tar_reader/entry.rb +1 -5
  185. data/lib/rubygems/platform.rb +4 -3
  186. data/lib/rubygems/psych_tree.rb +4 -0
  187. data/lib/rubygems/request_set/gem_dependency_api.rb +1 -1
  188. data/lib/rubygems/requirement.rb +0 -4
  189. data/lib/rubygems/resolver/composed_set.rb +3 -3
  190. data/lib/rubygems/resolver/git_set.rb +0 -1
  191. data/lib/rubygems/resolver/index_set.rb +2 -2
  192. data/lib/rubygems/resolver.rb +3 -3
  193. data/lib/rubygems/source/git.rb +13 -10
  194. data/lib/rubygems/spec_fetcher.rb +46 -7
  195. data/lib/rubygems/specification.rb +38 -32
  196. data/lib/rubygems/target_rbconfig.rb +50 -0
  197. data/lib/rubygems/uri.rb +1 -1
  198. data/lib/rubygems/util/licenses.rb +10 -1
  199. data/lib/rubygems/vendor/net-http/COPYING +56 -0
  200. data/lib/rubygems/vendor/net-http/lib/net/http/header.rb +1 -1
  201. data/lib/rubygems/vendor/net-http/lib/net/http/requests.rb +5 -0
  202. data/lib/rubygems/vendor/net-http/lib/net/http.rb +120 -36
  203. data/lib/rubygems/vendor/optparse/lib/optparse/ac.rb +16 -0
  204. data/lib/rubygems/vendor/optparse/lib/optparse/kwargs.rb +8 -3
  205. data/lib/rubygems/vendor/optparse/lib/optparse/version.rb +9 -0
  206. data/lib/rubygems/vendor/optparse/lib/optparse.rb +147 -51
  207. data/lib/rubygems/vendor/resolv/COPYING +56 -0
  208. data/lib/rubygems/vendor/resolv/lib/resolv.rb +50 -37
  209. data/lib/rubygems/vendor/securerandom/COPYING +56 -0
  210. data/lib/rubygems/vendor/securerandom/lib/securerandom.rb +5 -5
  211. data/lib/rubygems/vendor/timeout/COPYING +56 -0
  212. data/lib/rubygems/vendor/timeout/lib/timeout.rb +5 -8
  213. data/lib/rubygems/vendor/uri/COPYING +56 -0
  214. data/lib/rubygems/vendor/uri/lib/uri/common.rb +37 -16
  215. data/lib/rubygems/vendor/uri/lib/uri/file.rb +3 -3
  216. data/lib/rubygems/vendor/uri/lib/uri/ftp.rb +1 -1
  217. data/lib/rubygems/vendor/uri/lib/uri/generic.rb +16 -26
  218. data/lib/rubygems/vendor/uri/lib/uri/http.rb +2 -2
  219. data/lib/rubygems/vendor/uri/lib/uri/rfc2396_parser.rb +10 -3
  220. data/lib/rubygems/vendor/uri/lib/uri/rfc3986_parser.rb +26 -3
  221. data/lib/rubygems/vendor/uri/lib/uri/version.rb +1 -1
  222. data/lib/rubygems/vendor/uri/lib/uri.rb +9 -9
  223. data/lib/rubygems/vendored_securerandom.rb +0 -1
  224. data/lib/rubygems/version.rb +0 -4
  225. data/lib/rubygems.rb +30 -20
  226. data/rubygems-update.gemspec +5 -5
  227. data/setup.rb +1 -1
  228. metadata +36 -27
  229. data/bundler/lib/bundler/vendor/fileutils/LICENSE.txt +0 -22
  230. data/bundler/lib/bundler/vendor/securerandom/LICENSE.txt +0 -22
  231. data/bundler/lib/bundler/vendor/securerandom/lib/random/formatter.rb +0 -373
  232. data/bundler/lib/bundler/vendor/uri/LICENSE.txt +0 -22
  233. data/lib/rubygems/vendor/net-http/LICENSE.txt +0 -22
  234. data/lib/rubygems/vendor/net-http/lib/net/http/backward.rb +0 -40
  235. data/lib/rubygems/vendor/resolv/LICENSE.txt +0 -22
  236. data/lib/rubygems/vendor/securerandom/LICENSE.txt +0 -22
  237. data/lib/rubygems/vendor/securerandom/lib/random/formatter.rb +0 -373
  238. data/lib/rubygems/vendor/timeout/LICENSE.txt +0 -22
  239. data/lib/rubygems/vendor/uri/LICENSE.txt +0 -22
  240. /data/{MAINTAINERS.txt → doc/MAINTAINERS.txt} +0 -0
  241. /data/{bundler → doc/bundler}/UPGRADING.md +0 -0
  242. /data/{UPGRADING.md → doc/rubygems/UPGRADING.md} +0 -0
@@ -82,7 +82,7 @@ module Bundler::URI
82
82
  if args.kind_of?(Array)
83
83
  return self.build(args.collect{|x|
84
84
  if x.is_a?(String)
85
- DEFAULT_PARSER.escape(x)
85
+ Bundler::URI::RFC2396_PARSER.escape(x)
86
86
  else
87
87
  x
88
88
  end
@@ -91,7 +91,7 @@ module Bundler::URI
91
91
  tmp = {}
92
92
  args.each do |key, value|
93
93
  tmp[key] = if value
94
- DEFAULT_PARSER.escape(value)
94
+ Bundler::URI::RFC2396_PARSER.escape(value)
95
95
  else
96
96
  value
97
97
  end
@@ -393,7 +393,7 @@ module Bundler::URI
393
393
  def check_user(v)
394
394
  if @opaque
395
395
  raise InvalidURIError,
396
- "can not set user with opaque"
396
+ "cannot set user with opaque"
397
397
  end
398
398
 
399
399
  return v unless v
@@ -417,7 +417,7 @@ module Bundler::URI
417
417
  def check_password(v, user = @user)
418
418
  if @opaque
419
419
  raise InvalidURIError,
420
- "can not set password with opaque"
420
+ "cannot set password with opaque"
421
421
  end
422
422
  return v unless v
423
423
 
@@ -596,7 +596,7 @@ module Bundler::URI
596
596
 
597
597
  if @opaque
598
598
  raise InvalidURIError,
599
- "can not set host with registry or opaque"
599
+ "cannot set host with registry or opaque"
600
600
  elsif parser.regexp[:HOST] !~ v
601
601
  raise InvalidComponentError,
602
602
  "bad component(expected host component): #{v}"
@@ -685,7 +685,7 @@ module Bundler::URI
685
685
 
686
686
  if @opaque
687
687
  raise InvalidURIError,
688
- "can not set port with registry or opaque"
688
+ "cannot set port with registry or opaque"
689
689
  elsif !v.kind_of?(Integer) && parser.regexp[:PORT] !~ v
690
690
  raise InvalidComponentError,
691
691
  "bad component(expected port component): #{v.inspect}"
@@ -733,17 +733,17 @@ module Bundler::URI
733
733
  end
734
734
 
735
735
  def check_registry(v) # :nodoc:
736
- raise InvalidURIError, "can not set registry"
736
+ raise InvalidURIError, "cannot set registry"
737
737
  end
738
738
  private :check_registry
739
739
 
740
740
  def set_registry(v) #:nodoc:
741
- raise InvalidURIError, "can not set registry"
741
+ raise InvalidURIError, "cannot set registry"
742
742
  end
743
743
  protected :set_registry
744
744
 
745
745
  def registry=(v)
746
- raise InvalidURIError, "can not set registry"
746
+ raise InvalidURIError, "cannot set registry"
747
747
  end
748
748
 
749
749
  #
@@ -866,7 +866,7 @@ module Bundler::URI
866
866
  # hier_part = ( net_path | abs_path ) [ "?" query ]
867
867
  if @host || @port || @user || @path # userinfo = @user + ':' + @password
868
868
  raise InvalidURIError,
869
- "can not set opaque with host, port, userinfo or path"
869
+ "cannot set opaque with host, port, userinfo or path"
870
870
  elsif v && parser.regexp[:OPAQUE] !~ v
871
871
  raise InvalidComponentError,
872
872
  "bad component(expected opaque component): #{v}"
@@ -945,7 +945,7 @@ module Bundler::URI
945
945
  # == Description
946
946
  #
947
947
  # Bundler::URI has components listed in order of decreasing significance from left to right,
948
- # see RFC3986 https://tools.ietf.org/html/rfc3986 1.2.3.
948
+ # see RFC3986 https://www.rfc-editor.org/rfc/rfc3986 1.2.3.
949
949
  #
950
950
  # == Usage
951
951
  #
@@ -1235,7 +1235,7 @@ module Bundler::URI
1235
1235
  return rel, rel
1236
1236
  end
1237
1237
 
1238
- # you can modify `rel', but can not `oth'.
1238
+ # you can modify `rel', but cannot `oth'.
1239
1239
  return oth, rel
1240
1240
  end
1241
1241
  private :route_from0
@@ -1260,7 +1260,7 @@ module Bundler::URI
1260
1260
  # #=> #<Bundler::URI::Generic /main.rbx?page=1>
1261
1261
  #
1262
1262
  def route_from(oth)
1263
- # you can modify `rel', but can not `oth'.
1263
+ # you can modify `rel', but cannot `oth'.
1264
1264
  begin
1265
1265
  oth, rel = route_from0(oth)
1266
1266
  rescue
@@ -1364,6 +1364,9 @@ module Bundler::URI
1364
1364
  str << ':'
1365
1365
  str << @port.to_s
1366
1366
  end
1367
+ if (@host || @port) && !@path.empty? && !@path.start_with?('/')
1368
+ str << '/'
1369
+ end
1367
1370
  str << @path
1368
1371
  if @query
1369
1372
  str << '?'
@@ -1399,19 +1402,6 @@ module Bundler::URI
1399
1402
  self.component_ary.eql?(oth.component_ary)
1400
1403
  end
1401
1404
 
1402
- =begin
1403
-
1404
- --- Bundler::URI::Generic#===(oth)
1405
-
1406
- =end
1407
- # def ===(oth)
1408
- # raise NotImplementedError
1409
- # end
1410
-
1411
- =begin
1412
- =end
1413
-
1414
-
1415
1405
  # Returns an Array of the components defined from the COMPONENT Array.
1416
1406
  def component_ary
1417
1407
  component.collect do |x|
@@ -85,7 +85,7 @@ module Bundler::URI
85
85
  # == Description
86
86
  #
87
87
  # Returns the authority for an HTTP uri, as defined in
88
- # https://datatracker.ietf.org/doc/html/rfc3986/#section-3.2.
88
+ # https://www.rfc-editor.org/rfc/rfc3986#section-3.2.
89
89
  #
90
90
  #
91
91
  # Example:
@@ -106,7 +106,7 @@ module Bundler::URI
106
106
  # == Description
107
107
  #
108
108
  # Returns the origin for an HTTP uri, as defined in
109
- # https://datatracker.ietf.org/doc/html/rfc6454.
109
+ # https://www.rfc-editor.org/rfc/rfc6454.
110
110
  #
111
111
  #
112
112
  # Example:
@@ -140,11 +140,11 @@ module Bundler::URI
140
140
 
141
141
  if !scheme
142
142
  raise InvalidURIError,
143
- "bad Bundler::URI(absolute but no scheme): #{uri}"
143
+ "bad Bundler::URI (absolute but no scheme): #{uri}"
144
144
  end
145
145
  if !opaque && (!path && (!host && !registry))
146
146
  raise InvalidURIError,
147
- "bad Bundler::URI(absolute but no path): #{uri}"
147
+ "bad Bundler::URI (absolute but no path): #{uri}"
148
148
  end
149
149
 
150
150
  when @regexp[:REL_URI]
@@ -173,7 +173,7 @@ module Bundler::URI
173
173
  # server = [ [ userinfo "@" ] hostport ]
174
174
 
175
175
  else
176
- raise InvalidURIError, "bad Bundler::URI(is not Bundler::URI?): #{uri}"
176
+ raise InvalidURIError, "bad Bundler::URI (is not Bundler::URI?): #{uri}"
177
177
  end
178
178
 
179
179
  path = '' if !path && !opaque # (see RFC2396 Section 5.2)
@@ -536,4 +536,11 @@ module Bundler::URI
536
536
  end
537
537
 
538
538
  end # class Parser
539
+
540
+ # Backward compatibility for Bundler::URI::REGEXP::PATTERN::*
541
+ RFC2396_Parser.new.pattern.each_pair do |sym, str|
542
+ unless RFC2396_REGEXP::PATTERN.const_defined?(sym, false)
543
+ RFC2396_REGEXP::PATTERN.const_set(sym, str)
544
+ end
545
+ end
539
546
  end # module Bundler::URI
@@ -78,7 +78,7 @@ module Bundler::URI
78
78
  begin
79
79
  uri = uri.to_str
80
80
  rescue NoMethodError
81
- raise InvalidURIError, "bad Bundler::URI(is not Bundler::URI?): #{uri.inspect}"
81
+ raise InvalidURIError, "bad Bundler::URI (is not Bundler::URI?): #{uri.inspect}"
82
82
  end
83
83
  uri.ascii_only? or
84
84
  raise InvalidURIError, "Bundler::URI must be ascii only #{uri.dump}"
@@ -127,7 +127,7 @@ module Bundler::URI
127
127
  m["fragment"]
128
128
  ]
129
129
  else
130
- raise InvalidURIError, "bad Bundler::URI(is not Bundler::URI?): #{uri.inspect}"
130
+ raise InvalidURIError, "bad Bundler::URI (is not Bundler::URI?): #{uri.inspect}"
131
131
  end
132
132
  end
133
133
 
@@ -135,12 +135,35 @@ module Bundler::URI
135
135
  Bundler::URI.for(*self.split(uri), self)
136
136
  end
137
137
 
138
-
139
138
  def join(*uris) # :nodoc:
140
139
  uris[0] = convert_to_uri(uris[0])
141
140
  uris.inject :merge
142
141
  end
143
142
 
143
+ # Compatibility for RFC2396 parser
144
+ def extract(str, schemes = nil, &block) # :nodoc:
145
+ warn "Bundler::URI::RFC3986_PARSER.extract is obsolete. Use Bundler::URI::RFC2396_PARSER.extract explicitly.", uplevel: 1 if $VERBOSE
146
+ RFC2396_PARSER.extract(str, schemes, &block)
147
+ end
148
+
149
+ # Compatibility for RFC2396 parser
150
+ def make_regexp(schemes = nil) # :nodoc:
151
+ warn "Bundler::URI::RFC3986_PARSER.make_regexp is obsolete. Use Bundler::URI::RFC2396_PARSER.make_regexp explicitly.", uplevel: 1 if $VERBOSE
152
+ RFC2396_PARSER.make_regexp(schemes)
153
+ end
154
+
155
+ # Compatibility for RFC2396 parser
156
+ def escape(str, unsafe = nil) # :nodoc:
157
+ warn "Bundler::URI::RFC3986_PARSER.escape is obsolete. Use Bundler::URI::RFC2396_PARSER.escape explicitly.", uplevel: 1 if $VERBOSE
158
+ unsafe ? RFC2396_PARSER.escape(str, unsafe) : RFC2396_PARSER.escape(str)
159
+ end
160
+
161
+ # Compatibility for RFC2396 parser
162
+ def unescape(str, escaped = nil) # :nodoc:
163
+ warn "Bundler::URI::RFC3986_PARSER.unescape is obsolete. Use Bundler::URI::RFC2396_PARSER.unescape explicitly.", uplevel: 1 if $VERBOSE
164
+ escaped ? RFC2396_PARSER.unescape(str, escaped) : RFC2396_PARSER.unescape(str)
165
+ end
166
+
144
167
  @@to_s = Kernel.instance_method(:to_s)
145
168
  if @@to_s.respond_to?(:bind_call)
146
169
  def inspect
@@ -1,6 +1,6 @@
1
1
  module Bundler::URI
2
2
  # :stopdoc:
3
- VERSION_CODE = '001301'.freeze
3
+ VERSION_CODE = '010002'.freeze
4
4
  VERSION = VERSION_CODE.scan(/../).collect{|n| n.to_i}.join('.').freeze
5
5
  # :startdoc:
6
6
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: false
2
2
  # Bundler::URI is a module providing classes to handle Uniform Resource Identifiers
3
- # (RFC2396[http://tools.ietf.org/html/rfc2396]).
3
+ # (RFC2396[https://www.rfc-editor.org/rfc/rfc2396]).
4
4
  #
5
5
  # == Features
6
6
  #
@@ -47,14 +47,14 @@
47
47
  # A good place to view an RFC spec is http://www.ietf.org/rfc.html.
48
48
  #
49
49
  # Here is a list of all related RFC's:
50
- # - RFC822[http://tools.ietf.org/html/rfc822]
51
- # - RFC1738[http://tools.ietf.org/html/rfc1738]
52
- # - RFC2255[http://tools.ietf.org/html/rfc2255]
53
- # - RFC2368[http://tools.ietf.org/html/rfc2368]
54
- # - RFC2373[http://tools.ietf.org/html/rfc2373]
55
- # - RFC2396[http://tools.ietf.org/html/rfc2396]
56
- # - RFC2732[http://tools.ietf.org/html/rfc2732]
57
- # - RFC3986[http://tools.ietf.org/html/rfc3986]
50
+ # - RFC822[https://www.rfc-editor.org/rfc/rfc822]
51
+ # - RFC1738[https://www.rfc-editor.org/rfc/rfc1738]
52
+ # - RFC2255[https://www.rfc-editor.org/rfc/rfc2255]
53
+ # - RFC2368[https://www.rfc-editor.org/rfc/rfc2368]
54
+ # - RFC2373[https://www.rfc-editor.org/rfc/rfc2373]
55
+ # - RFC2396[https://www.rfc-editor.org/rfc/rfc2396]
56
+ # - RFC2732[https://www.rfc-editor.org/rfc/rfc2732]
57
+ # - RFC3986[https://www.rfc-editor.org/rfc/rfc3986]
58
58
  #
59
59
  # == Class tree
60
60
  #
@@ -7,8 +7,6 @@
7
7
  begin
8
8
  require "rubygems/vendored_securerandom"
9
9
  rescue LoadError
10
- module Bundler::Random; end
11
10
  require_relative "vendor/securerandom/lib/securerandom"
12
11
  Gem::SecureRandom = Bundler::SecureRandom
13
- Gem::Random = Bundler::Random
14
12
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: false
2
2
 
3
3
  module Bundler
4
- VERSION = "2.5.22".freeze
4
+ VERSION = "2.6.0".freeze
5
5
 
6
6
  def self.bundler_major_version
7
7
  @bundler_major_version ||= VERSION.split(".").first.to_i
@@ -10,7 +10,6 @@ require_relative "bundler/plugin"
10
10
  require_relative "bundler/rubygems_ext"
11
11
  require_relative "bundler/rubygems_integration"
12
12
  require_relative "bundler/version"
13
- require_relative "bundler/constants"
14
13
  require_relative "bundler/current_ruby"
15
14
  require_relative "bundler/build_metadata"
16
15
 
@@ -52,6 +51,7 @@ module Bundler
52
51
  autoload :Env, File.expand_path("bundler/env", __dir__)
53
52
  autoload :Fetcher, File.expand_path("bundler/fetcher", __dir__)
54
53
  autoload :FeatureFlag, File.expand_path("bundler/feature_flag", __dir__)
54
+ autoload :FREEBSD, File.expand_path("bundler/constants", __dir__)
55
55
  autoload :GemHelper, File.expand_path("bundler/gem_helper", __dir__)
56
56
  autoload :GemHelpers, File.expand_path("bundler/gem_helpers", __dir__)
57
57
  autoload :GemVersionPromoter, File.expand_path("bundler/gem_version_promoter", __dir__)
@@ -62,6 +62,8 @@ module Bundler
62
62
  autoload :LazySpecification, File.expand_path("bundler/lazy_specification", __dir__)
63
63
  autoload :LockfileParser, File.expand_path("bundler/lockfile_parser", __dir__)
64
64
  autoload :MatchRemoteMetadata, File.expand_path("bundler/match_remote_metadata", __dir__)
65
+ autoload :Materialization, File.expand_path("bundler/materialization", __dir__)
66
+ autoload :NULL, File.expand_path("bundler/constants", __dir__)
65
67
  autoload :ProcessLock, File.expand_path("bundler/process_lock", __dir__)
66
68
  autoload :RemoteSpecification, File.expand_path("bundler/remote_specification", __dir__)
67
69
  autoload :Resolver, File.expand_path("bundler/resolver", __dir__)
@@ -80,6 +82,7 @@ module Bundler
80
82
  autoload :UI, File.expand_path("bundler/ui", __dir__)
81
83
  autoload :URICredentialsFilter, File.expand_path("bundler/uri_credentials_filter", __dir__)
82
84
  autoload :URINormalizer, File.expand_path("bundler/uri_normalizer", __dir__)
85
+ autoload :WINDOWS, File.expand_path("bundler/constants", __dir__)
83
86
  autoload :SafeMarshal, File.expand_path("bundler/safe_marshal", __dir__)
84
87
 
85
88
  class << self
@@ -209,6 +212,7 @@ module Bundler
209
212
  # Bundler.require(:test) # requires second_gem
210
213
  #
211
214
  def require(*groups)
215
+ load_plugins
212
216
  setup(*groups).require(*groups)
213
217
  end
214
218
 
@@ -252,12 +256,6 @@ module Bundler
252
256
  end
253
257
  end
254
258
 
255
- def most_specific_locked_platform?(platform)
256
- return false unless defined?(@definition) && @definition
257
-
258
- definition.most_specific_locked_platform == platform
259
- end
260
-
261
259
  def ruby_scope
262
260
  "#{Bundler.rubygems.ruby_engine}/#{RbConfig::CONFIG["ruby_version"]}"
263
261
  end
@@ -492,24 +490,33 @@ module Bundler
492
490
  end
493
491
 
494
492
  def mkdir_p(path)
495
- SharedHelpers.filesystem_access(path, :write) do |p|
493
+ SharedHelpers.filesystem_access(path, :create) do |p|
496
494
  FileUtils.mkdir_p(p)
497
495
  end
498
496
  end
499
497
 
500
498
  def which(executable)
501
- if File.file?(executable) && File.executable?(executable)
502
- executable
503
- elsif paths = ENV["PATH"]
499
+ executable_path = find_executable(executable)
500
+ return executable_path if executable_path
501
+
502
+ if (paths = ENV["PATH"])
504
503
  quote = '"'
505
504
  paths.split(File::PATH_SEPARATOR).find do |path|
506
505
  path = path[1..-2] if path.start_with?(quote) && path.end_with?(quote)
507
- executable_path = File.expand_path(executable, path)
508
- return executable_path if File.file?(executable_path) && File.executable?(executable_path)
506
+ executable_path = find_executable(File.expand_path(executable, path))
507
+ return executable_path if executable_path
509
508
  end
510
509
  end
511
510
  end
512
511
 
512
+ def find_executable(path)
513
+ extensions = RbConfig::CONFIG["EXECUTABLE_EXTS"]&.split
514
+ extensions = [RbConfig::CONFIG["EXEEXT"]] unless extensions&.any?
515
+ candidates = extensions.map {|ext| "#{path}#{ext}" }
516
+
517
+ candidates.find {|candidate| File.file?(candidate) && File.executable?(candidate) }
518
+ end
519
+
513
520
  def read_file(file)
514
521
  SharedHelpers.filesystem_access(file, :read) do
515
522
  File.open(file, "r:UTF-8", &:read)
@@ -562,13 +569,30 @@ module Bundler
562
569
 
563
570
  def git_present?
564
571
  return @git_present if defined?(@git_present)
565
- @git_present = Bundler.which("git#{RbConfig::CONFIG["EXEEXT"]}")
572
+ @git_present = Bundler.which("git")
566
573
  end
567
574
 
568
575
  def feature_flag
569
576
  @feature_flag ||= FeatureFlag.new(VERSION)
570
577
  end
571
578
 
579
+ def load_plugins(definition = Bundler.definition)
580
+ return if defined?(@load_plugins_ran)
581
+
582
+ Bundler.rubygems.load_plugins
583
+
584
+ requested_path_gems = definition.requested_specs.select {|s| s.source.is_a?(Source::Path) }
585
+ path_plugin_files = requested_path_gems.flat_map do |spec|
586
+ spec.matches_for_glob("rubygems_plugin#{Bundler.rubygems.suffix_pattern}")
587
+ rescue TypeError
588
+ error_message = "#{spec.name} #{spec.version} has an invalid gemspec"
589
+ raise Gem::InvalidSpecificationException, error_message
590
+ end
591
+ Bundler.rubygems.load_plugin_files(path_plugin_files)
592
+ Bundler.rubygems.load_env_plugins
593
+ @load_plugins_ran = true
594
+ end
595
+
572
596
  def reset!
573
597
  reset_paths!
574
598
  Plugin.reset!
@@ -11,11 +11,11 @@ contributors to follow to reduce the time it takes to get changes merged in.
11
11
  2. Ensure that your code blends well with ours:
12
12
  * No trailing whitespace
13
13
  * Match indentation (two spaces)
14
- * Match coding style (run `rake rubocop`)
14
+ * Match coding style (run `bin/rake rubocop`)
15
15
 
16
16
  3. If any new files are added or existing files removed in a commit or PR,
17
17
  please update the `Manifest.txt` accordingly. This can be done by running
18
- `rake update_manifest`
18
+ `bin/rake update_manifest`
19
19
 
20
20
  4. Don't modify the history file or version number.
21
21
 
@@ -70,13 +70,11 @@ And to run an individual test method named `test_default` within a test file, yo
70
70
 
71
71
  ### Running bundler tests
72
72
 
73
- Everything needs to be run from the `bundler/` subfolder.
74
-
75
73
  To setup bundler tests:
76
74
 
77
- rake spec:parallel_deps
75
+ bin/rake spec:parallel_deps
78
76
 
79
- To run the entire bundler test suite in parallel (it takes a while):
77
+ To run the entire bundler test suite in parallel (it takes a while), run the following from the `bundler/` subfolder:
80
78
 
81
79
  bin/parallel_rspec
82
80
 
@@ -84,7 +82,7 @@ There are some realworld higher level specs run in CI, but not run by `bin/paral
84
82
 
85
83
  bin/rake spec:realworld
86
84
 
87
- To run an individual test file location for example in `spec/install/gems/standalone_spec.rb` you can use:
85
+ To run an individual test file location for example in `spec/install/gems/standalone_spec.rb` you can use the following from the `bundler/` subfolder:
88
86
 
89
87
  bin/rspec spec/install/gems/standalone_spec.rb
90
88
 
@@ -92,11 +90,13 @@ To run an individual test file location for example in `spec/install/gems/standa
92
90
 
93
91
  You can check compliance with our code style with
94
92
 
95
- rake rubocop
93
+ bin/rake rubocop
96
94
 
97
95
  Optionally you can configure git hooks with to check this before every commit with
98
96
 
99
- rake git_hooks
97
+ bin/rake git_hooks
98
+
99
+ For more information, check [SETUP.md](../bundler/development/SETUP.md) and [DEBUGGING.md](../bundler/development/DEBUGGING.md).
100
100
 
101
101
  ## Issues
102
102
 
@@ -84,7 +84,7 @@ changes to `master` by default _won't_ make their way into the current stable
84
84
  branch, and development on `master` will be targeting the next minor
85
85
  or major release.
86
86
 
87
- There is a `rake prepare_release[<target_rubygems_version>]` rake task
87
+ There is a `bin/rake prepare_release[<target_rubygems_version>]` rake task
88
88
  that helps with creating a release. It takes a single argument, the _exact
89
89
  rubygems release_ being made (e.g. `3.2.3` when releasing bundler `2.2.3`).
90
90
  This task checks out the appropriate stable branch (`3.2`, for example), grabs
@@ -158,21 +158,21 @@ affect only very few users in rare cases.
158
158
 
159
159
  * Confirm all PRs that you want backported are properly tagged with `rubygems:
160
160
  <type>` or `bundler: <type>` labels at GitHub.
161
- * Run `rake prepare_release[<target_rubygems_version>]`. This will create a PR
162
- to the stable branch with the backports included in the release, and proper
163
- changelogs and version bumps. It will also create a PR to merge release
164
- changelogs into master.
161
+ * Run `bin/rake prepare_release[<target_rubygems_version>]`. This will create
162
+ a PR to the stable branch with the backports included in the release, and
163
+ proper changelogs and version bumps. It will also create a PR to merge
164
+ release changelogs into master.
165
165
  * Once CI passes, merge the release PR, switch to the stable branch and pull
166
166
  the PR just merged.
167
- * Release `bundler` with `rake bundler:release`.
168
- * Release `rubygems` with `rake release`.
167
+ * Release `bundler` with `bin/rake bundler:release`.
168
+ * Release `rubygems` with `bin/rake release`.
169
169
 
170
170
  ### Steps for minor and major releases
171
171
 
172
172
  * Confirm all PRs that you want listed in changelogs are properly tagged with
173
173
  `rubygems: <type>` or `bundler: <type>` labels at GitHub.
174
- * Run `rake prepare_release[<target_rubygems_version>]`. This will create a
175
- new stable branch off the master branch, and create a PR to it with the
174
+ * Run `bin/rake prepare_release[<target_rubygems_version>]`. This will create
175
+ a new stable branch off the master branch, and create a PR to it with the
176
176
  proper version bumps and changelogs. It will also create a PR to merge
177
177
  release changelogs into master.
178
178
  * Replace the stable branch in the workflows with the new stable branch, and
@@ -181,8 +181,8 @@ affect only very few users in rare cases.
181
181
  to the master PR.
182
182
  * Once CI passes, merge the release PR, switch to the stable branch and pull
183
183
  the PR just merged.
184
- * Release `bundler` with `rake bundler:release`.
185
- * Release `rubygems` with `rake release`.
184
+ * Release `bundler` with `bin/rake bundler:release`.
185
+ * Release `rubygems` with `bin/rake release`.
186
186
 
187
187
  ## Committer Access
188
188
 
@@ -134,7 +134,6 @@ class Gem::BasicSpecification
134
134
  end
135
135
 
136
136
  def find_full_gem_path # :nodoc:
137
- # TODO: also, shouldn't it default to full_name if it hasn't been written?
138
137
  File.expand_path File.join(gems_dir, full_name)
139
138
  end
140
139
 
@@ -142,10 +141,10 @@ class Gem::BasicSpecification
142
141
 
143
142
  ##
144
143
  # The full path to the gem (install path + full name).
144
+ #
145
+ # TODO: This is duplicated with #gem_dir. Eventually either of them should be deprecated.
145
146
 
146
147
  def full_gem_path
147
- # TODO: This is a heavily used method by gems, so we'll need
148
- # to aleast just alias it to #gem_dir rather than remove it.
149
148
  @full_gem_path ||= find_full_gem_path
150
149
  end
151
150
 
@@ -221,9 +220,11 @@ class Gem::BasicSpecification
221
220
  ##
222
221
  # Returns the full path to this spec's gem directory.
223
222
  # eg: /usr/local/lib/ruby/1.8/gems/mygem-1.0
223
+ #
224
+ # TODO: This is duplicated with #full_gem_path. Eventually either of them should be deprecated.
224
225
 
225
226
  def gem_dir
226
- @gem_dir ||= File.expand_path File.join(gems_dir, full_name)
227
+ @gem_dir ||= find_full_gem_path
227
228
  end
228
229
 
229
230
  ##
@@ -113,9 +113,9 @@ If no gems are named all gems in GEM_HOME are cleaned.
113
113
  @candidate_gems = if options[:args].empty?
114
114
  Gem::Specification.to_a
115
115
  else
116
- options[:args].map do |gem_name|
116
+ options[:args].flat_map do |gem_name|
117
117
  Gem::Specification.find_all_by_name gem_name
118
- end.flatten
118
+ end
119
119
  end
120
120
  end
121
121
 
@@ -102,7 +102,7 @@ prefix or only the files that are requireable.
102
102
  end
103
103
 
104
104
  def files_in_default_gem(spec)
105
- spec.files.map do |file|
105
+ spec.files.filter_map do |file|
106
106
  if file.start_with?("#{spec.bindir}/")
107
107
  [RbConfig::CONFIG["bindir"], file.delete_prefix("#{spec.bindir}/")]
108
108
  else
@@ -119,7 +119,7 @@ prefix or only the files that are requireable.
119
119
 
120
120
  [resolve.delete_suffix(requirable_part), requirable_part]
121
121
  end
122
- end.compact
122
+ end
123
123
  end
124
124
 
125
125
  def gem_contents(name)
@@ -189,8 +189,8 @@ prefix or only the files that are requireable.
189
189
  end
190
190
 
191
191
  def specification_directories # :nodoc:
192
- options[:specdirs].map do |i|
192
+ options[:specdirs].flat_map do |i|
193
193
  [i, File.join(i, "specifications")]
194
- end.flatten
194
+ end
195
195
  end
196
196
  end
@@ -222,8 +222,11 @@ to the same gem path as user-installed gems.
222
222
  terminate_interaction 1
223
223
  end
224
224
 
225
+ old_exe = $0
226
+ $0 = exe
225
227
  load Gem.activate_bin_path(contains_executable.first.name, exe, ">= 0.a")
226
228
  ensure
229
+ $0 = old_exe if old_exe
227
230
  ARGV.replace argv
228
231
  end
229
232
 
@@ -120,9 +120,9 @@ extensions will be restored.
120
120
  elsif options[:only_missing_extensions]
121
121
  specification_record.select(&:missing_extensions?)
122
122
  else
123
- get_all_gem_names.sort.map do |gem_name|
123
+ get_all_gem_names.sort.flat_map do |gem_name|
124
124
  specification_record.find_all_by_name(gem_name, options[:version]).reverse
125
- end.flatten
125
+ end
126
126
  end
127
127
 
128
128
  specs = specs.select {|spec| spec.platform == RUBY_ENGINE || Gem::Platform.local === spec.platform || spec.platform == Gem::Platform::RUBY }