rubygems-update 3.4.22 → 3.5.1

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 (540) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +105 -2
  3. data/Manifest.txt +46 -221
  4. data/README.md +1 -3
  5. data/bundler/CHANGELOG.md +63 -0
  6. data/bundler/bundler.gemspec +4 -2
  7. data/bundler/exe/bundle +1 -10
  8. data/bundler/lib/bundler/build_metadata.rb +3 -3
  9. data/bundler/lib/bundler/capistrano.rb +1 -1
  10. data/bundler/lib/bundler/checksum.rb +254 -0
  11. data/bundler/lib/bundler/ci_detector.rb +75 -0
  12. data/bundler/lib/bundler/cli/add.rb +3 -3
  13. data/bundler/lib/bundler/cli/binstubs.rb +4 -4
  14. data/bundler/lib/bundler/cli/cache.rb +1 -1
  15. data/bundler/lib/bundler/cli/check.rb +1 -1
  16. data/bundler/lib/bundler/cli/common.rb +9 -1
  17. data/bundler/lib/bundler/cli/config.rb +8 -7
  18. data/bundler/lib/bundler/cli/console.rb +3 -2
  19. data/bundler/lib/bundler/cli/doctor.rb +2 -2
  20. data/bundler/lib/bundler/cli/exec.rb +1 -1
  21. data/bundler/lib/bundler/cli/gem.rb +28 -23
  22. data/bundler/lib/bundler/cli/info.rb +2 -13
  23. data/bundler/lib/bundler/cli/install.rb +5 -4
  24. data/bundler/lib/bundler/cli/issue.rb +1 -1
  25. data/bundler/lib/bundler/cli/lock.rb +4 -4
  26. data/bundler/lib/bundler/cli/open.rb +1 -1
  27. data/bundler/lib/bundler/cli/outdated.rb +6 -6
  28. data/bundler/lib/bundler/cli/plugin.rb +7 -14
  29. data/bundler/lib/bundler/cli/pristine.rb +38 -30
  30. data/bundler/lib/bundler/cli/show.rb +2 -2
  31. data/bundler/lib/bundler/cli/update.rb +5 -5
  32. data/bundler/lib/bundler/cli.rb +215 -263
  33. data/bundler/lib/bundler/compact_index_client/cache.rb +29 -9
  34. data/bundler/lib/bundler/compact_index_client/cache_file.rb +153 -0
  35. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +7 -3
  36. data/bundler/lib/bundler/compact_index_client/updater.rb +79 -81
  37. data/bundler/lib/bundler/compact_index_client.rb +14 -7
  38. data/bundler/lib/bundler/constants.rb +1 -1
  39. data/bundler/lib/bundler/current_ruby.rb +5 -21
  40. data/bundler/lib/bundler/definition.rb +42 -15
  41. data/bundler/lib/bundler/dependency.rb +16 -12
  42. data/bundler/lib/bundler/digest.rb +2 -2
  43. data/bundler/lib/bundler/dsl.rb +46 -30
  44. data/bundler/lib/bundler/endpoint_specification.rb +5 -1
  45. data/bundler/lib/bundler/env.rb +1 -3
  46. data/bundler/lib/bundler/errors.rb +43 -0
  47. data/bundler/lib/bundler/fetcher/base.rb +3 -1
  48. data/bundler/lib/bundler/fetcher/compact_index.rb +4 -4
  49. data/bundler/lib/bundler/fetcher/downloader.rb +13 -11
  50. data/bundler/lib/bundler/fetcher/gem_remote_fetcher.rb +16 -0
  51. data/bundler/lib/bundler/fetcher/index.rb +1 -1
  52. data/bundler/lib/bundler/fetcher.rb +28 -25
  53. data/bundler/lib/bundler/friendly_errors.rb +5 -5
  54. data/bundler/lib/bundler/gem_helper.rb +1 -1
  55. data/bundler/lib/bundler/gem_helpers.rb +5 -2
  56. data/bundler/lib/bundler/graph.rb +9 -9
  57. data/bundler/lib/bundler/index.rb +1 -2
  58. data/bundler/lib/bundler/injector.rb +1 -1
  59. data/bundler/lib/bundler/inline.rb +3 -3
  60. data/bundler/lib/bundler/installer/gem_installer.rb +5 -5
  61. data/bundler/lib/bundler/installer/parallel_installer.rb +16 -8
  62. data/bundler/lib/bundler/installer/standalone.rb +2 -3
  63. data/bundler/lib/bundler/installer.rb +9 -9
  64. data/bundler/lib/bundler/lazy_specification.rb +24 -17
  65. data/bundler/lib/bundler/lockfile_generator.rb +9 -0
  66. data/bundler/lib/bundler/lockfile_parser.rb +81 -10
  67. data/bundler/lib/bundler/man/bundle-add.1 +3 -26
  68. data/bundler/lib/bundler/man/bundle-binstubs.1 +4 -16
  69. data/bundler/lib/bundler/man/bundle-cache.1 +3 -24
  70. data/bundler/lib/bundler/man/bundle-check.1 +3 -12
  71. data/bundler/lib/bundler/man/bundle-clean.1 +3 -10
  72. data/bundler/lib/bundler/man/bundle-config.1 +20 -211
  73. data/bundler/lib/bundler/man/bundle-config.1.ronn +6 -0
  74. data/bundler/lib/bundler/man/bundle-console.1 +4 -22
  75. data/bundler/lib/bundler/man/bundle-doctor.1 +4 -18
  76. data/bundler/lib/bundler/man/bundle-exec.1 +12 -73
  77. data/bundler/lib/bundler/man/bundle-gem.1 +13 -49
  78. data/bundler/lib/bundler/man/bundle-help.1 +3 -7
  79. data/bundler/lib/bundler/man/bundle-info.1 +3 -9
  80. data/bundler/lib/bundler/man/bundle-init.1 +3 -12
  81. data/bundler/lib/bundler/man/bundle-inject.1 +6 -19
  82. data/bundler/lib/bundler/man/bundle-install.1 +27 -125
  83. data/bundler/lib/bundler/man/bundle-install.1.ronn +1 -0
  84. data/bundler/lib/bundler/man/bundle-list.1 +4 -19
  85. data/bundler/lib/bundler/man/bundle-lock.1 +5 -29
  86. data/bundler/lib/bundler/man/bundle-open.1 +7 -27
  87. data/bundler/lib/bundler/man/bundle-outdated.1 +3 -55
  88. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +1 -0
  89. data/bundler/lib/bundler/man/bundle-platform.1 +5 -27
  90. data/bundler/lib/bundler/man/bundle-plugin.1 +3 -29
  91. data/bundler/lib/bundler/man/bundle-pristine.1 +5 -16
  92. data/bundler/lib/bundler/man/bundle-remove.1 +4 -14
  93. data/bundler/lib/bundler/man/bundle-show.1 +3 -10
  94. data/bundler/lib/bundler/man/bundle-update.1 +18 -137
  95. data/bundler/lib/bundler/man/bundle-version.1 +3 -16
  96. data/bundler/lib/bundler/man/bundle-viz.1 +4 -16
  97. data/bundler/lib/bundler/man/bundle.1 +5 -44
  98. data/bundler/lib/bundler/man/gemfile.5 +24 -301
  99. data/bundler/lib/bundler/man/gemfile.5.ronn +4 -0
  100. data/bundler/lib/bundler/match_metadata.rb +4 -0
  101. data/bundler/lib/bundler/match_platform.rb +1 -1
  102. data/bundler/lib/bundler/plugin/api/source.rb +3 -2
  103. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  104. data/bundler/lib/bundler/plugin.rb +3 -3
  105. data/bundler/lib/bundler/resolver/base.rb +1 -1
  106. data/bundler/lib/bundler/resolver/incompatibility.rb +1 -1
  107. data/bundler/lib/bundler/resolver/spec_group.rb +1 -4
  108. data/bundler/lib/bundler/resolver.rb +16 -16
  109. data/bundler/lib/bundler/ruby_dsl.rb +20 -12
  110. data/bundler/lib/bundler/ruby_version.rb +1 -1
  111. data/bundler/lib/bundler/rubygems_ext.rb +24 -50
  112. data/bundler/lib/bundler/rubygems_gem_installer.rb +6 -56
  113. data/bundler/lib/bundler/rubygems_integration.rb +25 -94
  114. data/bundler/lib/bundler/runtime.rb +2 -2
  115. data/bundler/lib/bundler/self_manager.rb +23 -7
  116. data/bundler/lib/bundler/settings.rb +27 -7
  117. data/bundler/lib/bundler/setup.rb +4 -1
  118. data/bundler/lib/bundler/shared_helpers.rb +35 -13
  119. data/bundler/lib/bundler/source/git/git_proxy.rb +15 -15
  120. data/bundler/lib/bundler/source/git.rb +4 -3
  121. data/bundler/lib/bundler/source/metadata.rb +15 -15
  122. data/bundler/lib/bundler/source/path.rb +7 -6
  123. data/bundler/lib/bundler/source/rubygems.rb +21 -14
  124. data/bundler/lib/bundler/source.rb +2 -0
  125. data/bundler/lib/bundler/spec_set.rb +38 -10
  126. data/bundler/lib/bundler/stub_specification.rb +1 -0
  127. data/bundler/lib/bundler/templates/Executable.bundler +1 -1
  128. data/bundler/lib/bundler/templates/newgem/README.md.tt +3 -3
  129. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +2 -6
  130. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +1 -1
  131. data/bundler/lib/bundler/templates/newgem/standard.yml.tt +1 -1
  132. data/bundler/lib/bundler/ui/shell.rb +1 -1
  133. data/bundler/lib/bundler/vendor/connection_pool/.document +1 -0
  134. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  135. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +53 -6
  136. data/bundler/lib/bundler/vendor/fileutils/.document +1 -0
  137. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +8 -20
  138. data/bundler/lib/bundler/vendor/net-http-persistent/.document +1 -0
  139. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +3 -3
  140. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +2 -2
  141. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +1 -1
  142. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +34 -34
  143. data/bundler/lib/bundler/vendor/pub_grub/.document +1 -0
  144. data/bundler/lib/bundler/vendor/thor/.document +1 -0
  145. data/bundler/lib/bundler/vendor/tsort/.document +1 -0
  146. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +3 -0
  147. data/bundler/lib/bundler/vendor/uri/.document +1 -0
  148. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +256 -132
  149. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1 -0
  150. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +95 -31
  151. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  152. data/bundler/lib/bundler/vendored_net_http.rb +8 -0
  153. data/bundler/lib/bundler/vendored_persistent.rb +0 -4
  154. data/bundler/lib/bundler/vendored_timeout.rb +8 -0
  155. data/bundler/lib/bundler/version.rb +1 -1
  156. data/bundler/lib/bundler/vlad.rb +1 -1
  157. data/bundler/lib/bundler/yaml_serializer.rb +3 -3
  158. data/bundler/lib/bundler.rb +41 -32
  159. data/lib/rubygems/available_set.rb +4 -4
  160. data/lib/rubygems/basic_specification.rb +35 -37
  161. data/lib/rubygems/bundler_version_finder.rb +4 -4
  162. data/lib/rubygems/ci_detector.rb +75 -0
  163. data/lib/rubygems/command.rb +13 -15
  164. data/lib/rubygems/command_manager.rb +5 -4
  165. data/lib/rubygems/commands/build_command.rb +2 -2
  166. data/lib/rubygems/commands/cert_command.rb +1 -2
  167. data/lib/rubygems/commands/check_command.rb +4 -4
  168. data/lib/rubygems/commands/cleanup_command.rb +12 -14
  169. data/lib/rubygems/commands/contents_command.rb +4 -4
  170. data/lib/rubygems/commands/dependency_command.rb +4 -5
  171. data/lib/rubygems/commands/environment_command.rb +1 -3
  172. data/lib/rubygems/commands/exec_command.rb +1 -1
  173. data/lib/rubygems/commands/fetch_command.rb +2 -2
  174. data/lib/rubygems/commands/generate_index_command.rb +39 -74
  175. data/lib/rubygems/commands/help_command.rb +3 -3
  176. data/lib/rubygems/commands/info_command.rb +2 -2
  177. data/lib/rubygems/commands/install_command.rb +8 -16
  178. data/lib/rubygems/commands/list_command.rb +2 -2
  179. data/lib/rubygems/commands/lock_command.rb +1 -1
  180. data/lib/rubygems/commands/open_command.rb +1 -1
  181. data/lib/rubygems/commands/owner_command.rb +1 -1
  182. data/lib/rubygems/commands/pristine_command.rb +13 -15
  183. data/lib/rubygems/commands/push_command.rb +2 -2
  184. data/lib/rubygems/commands/query_command.rb +4 -5
  185. data/lib/rubygems/commands/rdoc_command.rb +2 -2
  186. data/lib/rubygems/commands/search_command.rb +2 -2
  187. data/lib/rubygems/commands/setup_command.rb +31 -34
  188. data/lib/rubygems/commands/sources_command.rb +12 -12
  189. data/lib/rubygems/commands/specification_command.rb +10 -10
  190. data/lib/rubygems/commands/stale_command.rb +1 -1
  191. data/lib/rubygems/commands/uninstall_command.rb +9 -10
  192. data/lib/rubygems/commands/unpack_command.rb +4 -4
  193. data/lib/rubygems/commands/update_command.rb +10 -12
  194. data/lib/rubygems/commands/which_command.rb +1 -1
  195. data/lib/rubygems/commands/yank_command.rb +1 -1
  196. data/lib/rubygems/compatibility.rb +5 -6
  197. data/lib/rubygems/config_file.rb +4 -4
  198. data/lib/rubygems/core_ext/kernel_gem.rb +0 -2
  199. data/lib/rubygems/core_ext/kernel_require.rb +19 -48
  200. data/lib/rubygems/core_ext/kernel_warn.rb +1 -1
  201. data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
  202. data/lib/rubygems/defaults.rb +15 -3
  203. data/lib/rubygems/dependency.rb +12 -14
  204. data/lib/rubygems/dependency_installer.rb +29 -30
  205. data/lib/rubygems/dependency_list.rb +1 -1
  206. data/lib/rubygems/deprecate.rb +16 -15
  207. data/lib/rubygems/doctor.rb +5 -5
  208. data/lib/rubygems/errors.rb +2 -6
  209. data/lib/rubygems/exceptions.rb +2 -1
  210. data/lib/rubygems/ext/builder.rb +15 -10
  211. data/lib/rubygems/ext/cargo_builder.rb +5 -5
  212. data/lib/rubygems/ext/ext_conf_builder.rb +1 -3
  213. data/lib/rubygems/gem_runner.rb +4 -4
  214. data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +3 -3
  215. data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +3 -3
  216. data/lib/rubygems/gemcutter_utilities.rb +18 -19
  217. data/lib/rubygems/install_update_options.rb +18 -19
  218. data/lib/rubygems/installer.rb +59 -33
  219. data/lib/rubygems/installer_uninstaller_utils.rb +0 -2
  220. data/lib/rubygems/local_remote_options.rb +7 -10
  221. data/lib/rubygems/name_tuple.rb +7 -9
  222. data/lib/rubygems/net/http.rb +3 -0
  223. data/lib/rubygems/net-http/.document +1 -0
  224. data/lib/rubygems/net-http/LICENSE.txt +22 -0
  225. data/lib/rubygems/net-http/lib/net/http/backward.rb +40 -0
  226. data/lib/rubygems/net-http/lib/net/http/exceptions.rb +34 -0
  227. data/lib/rubygems/net-http/lib/net/http/generic_request.rb +414 -0
  228. data/lib/rubygems/net-http/lib/net/http/header.rb +981 -0
  229. data/lib/rubygems/net-http/lib/net/http/proxy_delta.rb +17 -0
  230. data/lib/rubygems/net-http/lib/net/http/request.rb +88 -0
  231. data/lib/rubygems/net-http/lib/net/http/requests.rb +425 -0
  232. data/lib/rubygems/net-http/lib/net/http/response.rb +738 -0
  233. data/lib/rubygems/net-http/lib/net/http/responses.rb +1174 -0
  234. data/lib/rubygems/net-http/lib/net/http/status.rb +84 -0
  235. data/lib/rubygems/net-http/lib/net/http.rb +2496 -0
  236. data/lib/rubygems/net-http/lib/net/https.rb +23 -0
  237. data/lib/rubygems/net-protocol/.document +1 -0
  238. data/lib/rubygems/net-protocol/LICENSE.txt +22 -0
  239. data/lib/rubygems/net-protocol/lib/net/protocol.rb +544 -0
  240. data/lib/rubygems/optparse/lib/optparse.rb +39 -17
  241. data/lib/rubygems/package/old.rb +2 -2
  242. data/lib/rubygems/package/tar_header.rb +45 -39
  243. data/lib/rubygems/package/tar_reader/entry.rb +5 -4
  244. data/lib/rubygems/package/tar_reader.rb +5 -3
  245. data/lib/rubygems/package/tar_writer.rb +19 -17
  246. data/lib/rubygems/package.rb +27 -26
  247. data/lib/rubygems/package_task.rb +2 -2
  248. data/lib/rubygems/path_support.rb +9 -10
  249. data/lib/rubygems/platform.rb +60 -45
  250. data/lib/rubygems/query_utils.rb +7 -9
  251. data/lib/rubygems/remote_fetcher.rb +15 -15
  252. data/lib/rubygems/request/connection_pools.rb +3 -3
  253. data/lib/rubygems/request.rb +20 -17
  254. data/lib/rubygems/request_set/gem_dependency_api.rb +119 -122
  255. data/lib/rubygems/request_set/lockfile/parser.rb +9 -9
  256. data/lib/rubygems/request_set/lockfile/tokenizer.rb +20 -12
  257. data/lib/rubygems/request_set/lockfile.rb +6 -11
  258. data/lib/rubygems/request_set.rb +5 -5
  259. data/lib/rubygems/requirement.rb +7 -7
  260. data/lib/rubygems/resolv/.document +1 -0
  261. data/lib/rubygems/resolv/LICENSE.txt +22 -0
  262. data/lib/rubygems/resolv/lib/resolv.rb +3387 -0
  263. data/lib/rubygems/resolver/activation_request.rb +1 -3
  264. data/lib/rubygems/resolver/api_set/gem_parser.rb +7 -3
  265. data/lib/rubygems/resolver/best_set.rb +1 -1
  266. data/lib/rubygems/resolver/composed_set.rb +1 -1
  267. data/lib/rubygems/resolver/conflict.rb +4 -12
  268. data/lib/rubygems/resolver/index_set.rb +4 -4
  269. data/lib/rubygems/resolver/index_specification.rb +2 -2
  270. data/lib/rubygems/resolver/installer_set.rb +5 -6
  271. data/lib/rubygems/resolver/lock_set.rb +1 -1
  272. data/lib/rubygems/resolver/molinillo/.document +1 -0
  273. data/lib/rubygems/resolver.rb +3 -10
  274. data/lib/rubygems/s3_uri_signer.rb +6 -6
  275. data/lib/rubygems/safe_marshal/elements.rb +138 -0
  276. data/lib/rubygems/safe_marshal/reader.rb +306 -0
  277. data/lib/rubygems/safe_marshal/visitors/stream_printer.rb +31 -0
  278. data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +385 -0
  279. data/lib/rubygems/safe_marshal/visitors/visitor.rb +74 -0
  280. data/lib/rubygems/safe_marshal.rb +74 -0
  281. data/lib/rubygems/safe_yaml.rb +5 -28
  282. data/lib/rubygems/security/policies.rb +36 -38
  283. data/lib/rubygems/security/policy.rb +7 -11
  284. data/lib/rubygems/security/signer.rb +1 -1
  285. data/lib/rubygems/security/trust_dir.rb +3 -3
  286. data/lib/rubygems/security.rb +8 -22
  287. data/lib/rubygems/source/git.rb +1 -3
  288. data/lib/rubygems/source/installed.rb +0 -2
  289. data/lib/rubygems/source/local.rb +5 -8
  290. data/lib/rubygems/source/lock.rb +1 -3
  291. data/lib/rubygems/source/specific_file.rb +0 -1
  292. data/lib/rubygems/source/vendor.rb +0 -2
  293. data/lib/rubygems/source.rb +12 -12
  294. data/lib/rubygems/source_list.rb +4 -4
  295. data/lib/rubygems/spec_fetcher.rb +29 -29
  296. data/lib/rubygems/specification.rb +125 -138
  297. data/lib/rubygems/specification_policy.rb +55 -25
  298. data/lib/rubygems/stub_specification.rb +4 -5
  299. data/lib/rubygems/text.rb +1 -2
  300. data/lib/rubygems/timeout/.document +1 -0
  301. data/lib/rubygems/timeout/LICENSE.txt +22 -0
  302. data/lib/rubygems/timeout/lib/timeout.rb +199 -0
  303. data/lib/rubygems/timeout.rb +3 -0
  304. data/lib/rubygems/tsort/lib/tsort.rb +3 -0
  305. data/lib/rubygems/uninstaller.rb +7 -9
  306. data/lib/rubygems/update_suggestion.rb +5 -18
  307. data/lib/rubygems/uri_formatter.rb +1 -1
  308. data/lib/rubygems/user_interaction.rb +15 -21
  309. data/lib/rubygems/util/licenses.rb +65 -35
  310. data/lib/rubygems/util/list.rb +3 -1
  311. data/lib/rubygems/util.rb +2 -4
  312. data/lib/rubygems/validator.rb +5 -3
  313. data/lib/rubygems/version.rb +34 -28
  314. data/lib/rubygems/version_option.rb +2 -5
  315. data/lib/rubygems/yaml_serializer.rb +3 -3
  316. data/lib/rubygems.rb +37 -37
  317. data/rubygems-update.gemspec +4 -4
  318. data/setup.rb +2 -2
  319. metadata +50 -225
  320. data/lib/rubygems/indexer.rb +0 -428
  321. data/lib/rubygems/mock_gem_ui.rb +0 -86
  322. data/test/rubygems/alternate_cert.pem +0 -19
  323. data/test/rubygems/alternate_cert_32.pem +0 -19
  324. data/test/rubygems/alternate_key.pem +0 -27
  325. data/test/rubygems/bad_rake.rb +0 -3
  326. data/test/rubygems/bundler_test_gem.rb +0 -424
  327. data/test/rubygems/ca_cert.pem +0 -77
  328. data/test/rubygems/child_cert.pem +0 -19
  329. data/test/rubygems/child_cert_32.pem +0 -19
  330. data/test/rubygems/child_key.pem +0 -27
  331. data/test/rubygems/client.pem +0 -107
  332. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  333. data/test/rubygems/data/gem-private_key.pem +0 -27
  334. data/test/rubygems/data/gem-public_cert.pem +0 -20
  335. data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
  336. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  337. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  338. data/test/rubygems/encrypted_private_key.pem +0 -30
  339. data/test/rubygems/expired_cert.pem +0 -19
  340. data/test/rubygems/fake_certlib/openssl.rb +0 -9
  341. data/test/rubygems/foo/discover.rb +0 -1
  342. data/test/rubygems/future_cert.pem +0 -19
  343. data/test/rubygems/future_cert_32.pem +0 -19
  344. data/test/rubygems/good_rake.rb +0 -3
  345. data/test/rubygems/grandchild_cert.pem +0 -19
  346. data/test/rubygems/grandchild_cert_32.pem +0 -19
  347. data/test/rubygems/grandchild_key.pem +0 -27
  348. data/test/rubygems/helper.rb +0 -1649
  349. data/test/rubygems/installer_test_case.rb +0 -248
  350. data/test/rubygems/invalid_client.pem +0 -49
  351. data/test/rubygems/invalid_issuer_cert.pem +0 -20
  352. data/test/rubygems/invalid_issuer_cert_32.pem +0 -20
  353. data/test/rubygems/invalid_key.pem +0 -27
  354. data/test/rubygems/invalid_signer_cert.pem +0 -19
  355. data/test/rubygems/invalid_signer_cert_32.pem +0 -19
  356. data/test/rubygems/invalidchild_cert.pem +0 -19
  357. data/test/rubygems/invalidchild_cert_32.pem +0 -19
  358. data/test/rubygems/invalidchild_key.pem +0 -27
  359. data/test/rubygems/multifactor_auth_utilities.rb +0 -111
  360. data/test/rubygems/package/tar_test_case.rb +0 -175
  361. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  362. data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
  363. data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
  364. data/test/rubygems/plugin/exception/rubygems_plugin.rb +0 -4
  365. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -5
  366. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +0 -4
  367. data/test/rubygems/private3072_key.pem +0 -40
  368. data/test/rubygems/private_ec_key.pem +0 -9
  369. data/test/rubygems/private_key.pem +0 -27
  370. data/test/rubygems/public3072_cert.pem +0 -25
  371. data/test/rubygems/public_cert.pem +0 -20
  372. data/test/rubygems/public_cert_32.pem +0 -19
  373. data/test/rubygems/public_key.pem +0 -9
  374. data/test/rubygems/rubygems/commands/crash_command.rb +0 -5
  375. data/test/rubygems/rubygems_plugin.rb +0 -24
  376. data/test/rubygems/sff/discover.rb +0 -1
  377. data/test/rubygems/simple_gem.rb +0 -68
  378. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -9
  379. data/test/rubygems/specifications/foo-0.0.1-x86-mswin32.gemspec +0 -0
  380. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +0 -14
  381. data/test/rubygems/ssl_cert.pem +0 -80
  382. data/test/rubygems/ssl_key.pem +0 -27
  383. data/test/rubygems/test_bundled_ca.rb +0 -61
  384. data/test/rubygems/test_config.rb +0 -28
  385. data/test/rubygems/test_deprecate.rb +0 -158
  386. data/test/rubygems/test_exit.rb +0 -17
  387. data/test/rubygems/test_gem.rb +0 -1799
  388. data/test/rubygems/test_gem_available_set.rb +0 -130
  389. data/test/rubygems/test_gem_bundler_version_finder.rb +0 -127
  390. data/test/rubygems/test_gem_command.rb +0 -403
  391. data/test/rubygems/test_gem_command_manager.rb +0 -400
  392. data/test/rubygems/test_gem_commands_build_command.rb +0 -739
  393. data/test/rubygems/test_gem_commands_cert_command.rb +0 -866
  394. data/test/rubygems/test_gem_commands_check_command.rb +0 -68
  395. data/test/rubygems/test_gem_commands_cleanup_command.rb +0 -292
  396. data/test/rubygems/test_gem_commands_contents_command.rb +0 -271
  397. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -228
  398. data/test/rubygems/test_gem_commands_environment_command.rb +0 -169
  399. data/test/rubygems/test_gem_commands_exec_command.rb +0 -857
  400. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -258
  401. data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -81
  402. data/test/rubygems/test_gem_commands_help_command.rb +0 -94
  403. data/test/rubygems/test_gem_commands_info_command.rb +0 -70
  404. data/test/rubygems/test_gem_commands_install_command.rb +0 -1573
  405. data/test/rubygems/test_gem_commands_list_command.rb +0 -33
  406. data/test/rubygems/test_gem_commands_lock_command.rb +0 -67
  407. data/test/rubygems/test_gem_commands_mirror.rb +0 -20
  408. data/test/rubygems/test_gem_commands_open_command.rb +0 -101
  409. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -50
  410. data/test/rubygems/test_gem_commands_owner_command.rb +0 -503
  411. data/test/rubygems/test_gem_commands_pristine_command.rb +0 -708
  412. data/test/rubygems/test_gem_commands_push_command.rb +0 -603
  413. data/test/rubygems/test_gem_commands_query_command.rb +0 -858
  414. data/test/rubygems/test_gem_commands_search_command.rb +0 -16
  415. data/test/rubygems/test_gem_commands_server_command.rb +0 -20
  416. data/test/rubygems/test_gem_commands_setup_command.rb +0 -474
  417. data/test/rubygems/test_gem_commands_signin_command.rb +0 -259
  418. data/test/rubygems/test_gem_commands_signout_command.rb +0 -30
  419. data/test/rubygems/test_gem_commands_sources_command.rb +0 -534
  420. data/test/rubygems/test_gem_commands_specification_command.rb +0 -277
  421. data/test/rubygems/test_gem_commands_stale_command.rb +0 -43
  422. data/test/rubygems/test_gem_commands_uninstall_command.rb +0 -542
  423. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -224
  424. data/test/rubygems/test_gem_commands_update_command.rb +0 -836
  425. data/test/rubygems/test_gem_commands_which_command.rb +0 -85
  426. data/test/rubygems/test_gem_commands_yank_command.rb +0 -299
  427. data/test/rubygems/test_gem_config_file.rb +0 -551
  428. data/test/rubygems/test_gem_dependency.rb +0 -398
  429. data/test/rubygems/test_gem_dependency_installer.rb +0 -1190
  430. data/test/rubygems/test_gem_dependency_list.rb +0 -265
  431. data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -27
  432. data/test/rubygems/test_gem_doctor.rb +0 -195
  433. data/test/rubygems/test_gem_ext_builder.rb +0 -337
  434. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +0 -1
  435. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +0 -10
  436. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +0 -249
  437. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +0 -10
  438. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +0 -27
  439. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +0 -3
  440. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +0 -1
  441. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +0 -249
  442. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +0 -10
  443. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +0 -10
  444. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +0 -51
  445. data/test/rubygems/test_gem_ext_cargo_builder.rb +0 -167
  446. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +0 -34
  447. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +0 -60
  448. data/test/rubygems/test_gem_ext_cmake_builder.rb +0 -84
  449. data/test/rubygems/test_gem_ext_configure_builder.rb +0 -80
  450. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -229
  451. data/test/rubygems/test_gem_ext_rake_builder.rb +0 -113
  452. data/test/rubygems/test_gem_gem_runner.rb +0 -119
  453. data/test/rubygems/test_gem_gemcutter_utilities.rb +0 -361
  454. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -60
  455. data/test/rubygems/test_gem_indexer.rb +0 -381
  456. data/test/rubygems/test_gem_install_update_options.rb +0 -208
  457. data/test/rubygems/test_gem_installer.rb +0 -2512
  458. data/test/rubygems/test_gem_local_remote_options.rb +0 -133
  459. data/test/rubygems/test_gem_name_tuple.rb +0 -43
  460. data/test/rubygems/test_gem_package.rb +0 -1306
  461. data/test/rubygems/test_gem_package_old.rb +0 -91
  462. data/test/rubygems/test_gem_package_tar_header.rb +0 -226
  463. data/test/rubygems/test_gem_package_tar_reader.rb +0 -150
  464. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -350
  465. data/test/rubygems/test_gem_package_tar_writer.rb +0 -331
  466. data/test/rubygems/test_gem_package_task.rb +0 -118
  467. data/test/rubygems/test_gem_path_support.rb +0 -139
  468. data/test/rubygems/test_gem_platform.rb +0 -497
  469. data/test/rubygems/test_gem_rdoc.rb +0 -137
  470. data/test/rubygems/test_gem_remote_fetcher.rb +0 -1227
  471. data/test/rubygems/test_gem_request.rb +0 -547
  472. data/test/rubygems/test_gem_request_connection_pools.rb +0 -152
  473. data/test/rubygems/test_gem_request_set.rb +0 -672
  474. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +0 -853
  475. data/test/rubygems/test_gem_request_set_lockfile.rb +0 -469
  476. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +0 -544
  477. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +0 -307
  478. data/test/rubygems/test_gem_requirement.rb +0 -505
  479. data/test/rubygems/test_gem_resolver.rb +0 -859
  480. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -43
  481. data/test/rubygems/test_gem_resolver_api_set.rb +0 -210
  482. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -167
  483. data/test/rubygems/test_gem_resolver_best_set.rb +0 -159
  484. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -44
  485. data/test/rubygems/test_gem_resolver_conflict.rb +0 -82
  486. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -83
  487. data/test/rubygems/test_gem_resolver_git_set.rb +0 -188
  488. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -114
  489. data/test/rubygems/test_gem_resolver_index_set.rb +0 -88
  490. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -93
  491. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -47
  492. data/test/rubygems/test_gem_resolver_installer_set.rb +0 -320
  493. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -44
  494. data/test/rubygems/test_gem_resolver_lock_set.rb +0 -62
  495. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -98
  496. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -19
  497. data/test/rubygems/test_gem_resolver_specification.rb +0 -63
  498. data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -82
  499. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -82
  500. data/test/rubygems/test_gem_security.rb +0 -341
  501. data/test/rubygems/test_gem_security_policy.rb +0 -535
  502. data/test/rubygems/test_gem_security_signer.rb +0 -218
  503. data/test/rubygems/test_gem_security_trust_dir.rb +0 -99
  504. data/test/rubygems/test_gem_silent_ui.rb +0 -123
  505. data/test/rubygems/test_gem_source.rb +0 -254
  506. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -37
  507. data/test/rubygems/test_gem_source_git.rb +0 -310
  508. data/test/rubygems/test_gem_source_installed.rb +0 -35
  509. data/test/rubygems/test_gem_source_list.rb +0 -119
  510. data/test/rubygems/test_gem_source_local.rb +0 -107
  511. data/test/rubygems/test_gem_source_lock.rb +0 -113
  512. data/test/rubygems/test_gem_source_specific_file.rb +0 -76
  513. data/test/rubygems/test_gem_source_subpath_problem.rb +0 -50
  514. data/test/rubygems/test_gem_source_vendor.rb +0 -30
  515. data/test/rubygems/test_gem_spec_fetcher.rb +0 -338
  516. data/test/rubygems/test_gem_specification.rb +0 -3856
  517. data/test/rubygems/test_gem_stream_ui.rb +0 -255
  518. data/test/rubygems/test_gem_stub_specification.rb +0 -278
  519. data/test/rubygems/test_gem_text.rb +0 -103
  520. data/test/rubygems/test_gem_uninstaller.rb +0 -675
  521. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -31
  522. data/test/rubygems/test_gem_update_suggestion.rb +0 -209
  523. data/test/rubygems/test_gem_uri.rb +0 -41
  524. data/test/rubygems/test_gem_uri_formatter.rb +0 -27
  525. data/test/rubygems/test_gem_util.rb +0 -91
  526. data/test/rubygems/test_gem_validator.rb +0 -42
  527. data/test/rubygems/test_gem_version.rb +0 -305
  528. data/test/rubygems/test_gem_version_option.rb +0 -165
  529. data/test/rubygems/test_kernel.rb +0 -124
  530. data/test/rubygems/test_project_sanity.rb +0 -49
  531. data/test/rubygems/test_remote_fetch_error.rb +0 -20
  532. data/test/rubygems/test_require.rb +0 -732
  533. data/test/rubygems/test_rubygems.rb +0 -76
  534. data/test/rubygems/test_webauthn_listener.rb +0 -143
  535. data/test/rubygems/test_webauthn_listener_response.rb +0 -93
  536. data/test/rubygems/test_webauthn_poller.rb +0 -124
  537. data/test/rubygems/utilities.rb +0 -436
  538. data/test/rubygems/wrong_key_cert.pem +0 -19
  539. data/test/rubygems/wrong_key_cert_32.pem +0 -19
  540. data/test/test_changelog_generator.rb +0 -17
@@ -22,10 +22,8 @@ class Gem::Licenses
22
22
  AFL-2.0
23
23
  AFL-2.1
24
24
  AFL-3.0
25
- AGPL-1.0
26
25
  AGPL-1.0-only
27
26
  AGPL-1.0-or-later
28
- AGPL-3.0
29
27
  AGPL-3.0-only
30
28
  AGPL-3.0-or-later
31
29
  AMDPLPA
@@ -59,8 +57,6 @@ class Gem::Licenses
59
57
  Artistic-2.0
60
58
  BSD-1-Clause
61
59
  BSD-2-Clause
62
- BSD-2-Clause-FreeBSD
63
- BSD-2-Clause-NetBSD
64
60
  BSD-2-Clause-Patent
65
61
  BSD-2-Clause-Views
66
62
  BSD-3-Clause
@@ -230,21 +226,18 @@ class Gem::Licenses
230
226
  FreeImage
231
227
  Furuseth
232
228
  GD
233
- GFDL-1.1
234
229
  GFDL-1.1-invariants-only
235
230
  GFDL-1.1-invariants-or-later
236
231
  GFDL-1.1-no-invariants-only
237
232
  GFDL-1.1-no-invariants-or-later
238
233
  GFDL-1.1-only
239
234
  GFDL-1.1-or-later
240
- GFDL-1.2
241
235
  GFDL-1.2-invariants-only
242
236
  GFDL-1.2-invariants-or-later
243
237
  GFDL-1.2-no-invariants-only
244
238
  GFDL-1.2-no-invariants-or-later
245
239
  GFDL-1.2-only
246
240
  GFDL-1.2-or-later
247
- GFDL-1.3
248
241
  GFDL-1.3-invariants-only
249
242
  GFDL-1.3-invariants-or-later
250
243
  GFDL-1.3-no-invariants-only
@@ -253,25 +246,12 @@ class Gem::Licenses
253
246
  GFDL-1.3-or-later
254
247
  GL2PS
255
248
  GLWTPL
256
- GPL-1.0
257
- GPL-1.0+
258
249
  GPL-1.0-only
259
250
  GPL-1.0-or-later
260
- GPL-2.0
261
- GPL-2.0+
262
251
  GPL-2.0-only
263
252
  GPL-2.0-or-later
264
- GPL-2.0-with-GCC-exception
265
- GPL-2.0-with-autoconf-exception
266
- GPL-2.0-with-bison-exception
267
- GPL-2.0-with-classpath-exception
268
- GPL-2.0-with-font-exception
269
- GPL-3.0
270
- GPL-3.0+
271
253
  GPL-3.0-only
272
254
  GPL-3.0-or-later
273
- GPL-3.0-with-GCC-exception
274
- GPL-3.0-with-autoconf-exception
275
255
  Giftware
276
256
  Glide
277
257
  Glulxe
@@ -318,16 +298,10 @@ class Gem::Licenses
318
298
  Knuth-CTAN
319
299
  LAL-1.2
320
300
  LAL-1.3
321
- LGPL-2.0
322
- LGPL-2.0+
323
301
  LGPL-2.0-only
324
302
  LGPL-2.0-or-later
325
- LGPL-2.1
326
- LGPL-2.1+
327
303
  LGPL-2.1-only
328
304
  LGPL-2.1-or-later
329
- LGPL-3.0
330
- LGPL-3.0+
331
305
  LGPL-3.0-only
332
306
  LGPL-3.0-or-later
333
307
  LGPLLR
@@ -412,7 +386,6 @@ class Gem::Licenses
412
386
  Newsletr
413
387
  Nokia
414
388
  Noweb
415
- Nunit
416
389
  O-UDA-1.0
417
390
  OCCT-PL
418
391
  OCLC-2.0
@@ -515,7 +488,6 @@ class Gem::Licenses
515
488
  Spencer-86
516
489
  Spencer-94
517
490
  Spencer-99
518
- StandardML-NJ
519
491
  SugarCRM-1.1.3
520
492
  SunPro
521
493
  Symlinks
@@ -571,7 +543,6 @@ class Gem::Licenses
571
543
  Zimbra-1.4
572
544
  Zlib
573
545
  blessing
574
- bzip2-1.0.5
575
546
  bzip2-1.0.6
576
547
  check-cvs
577
548
  checkmk
@@ -581,7 +552,6 @@ class Gem::Licenses
581
552
  diffmark
582
553
  dtoa
583
554
  dvipdfm
584
- eCos-2.0
585
555
  eGenix
586
556
  etalab-2.0
587
557
  fwlw
@@ -607,13 +577,46 @@ class Gem::Licenses
607
577
  swrule
608
578
  ulem
609
579
  w3m
610
- wxWindows
611
580
  xinetd
612
581
  xlock
613
582
  xpp
614
583
  zlib-acknowledgement
615
584
  ].freeze
616
585
 
586
+ DEPRECATED_LICENSE_IDENTIFIERS = %w[
587
+ AGPL-1.0
588
+ AGPL-3.0
589
+ BSD-2-Clause-FreeBSD
590
+ BSD-2-Clause-NetBSD
591
+ GFDL-1.1
592
+ GFDL-1.2
593
+ GFDL-1.3
594
+ GPL-1.0
595
+ GPL-1.0+
596
+ GPL-2.0
597
+ GPL-2.0+
598
+ GPL-2.0-with-GCC-exception
599
+ GPL-2.0-with-autoconf-exception
600
+ GPL-2.0-with-bison-exception
601
+ GPL-2.0-with-classpath-exception
602
+ GPL-2.0-with-font-exception
603
+ GPL-3.0
604
+ GPL-3.0+
605
+ GPL-3.0-with-GCC-exception
606
+ GPL-3.0-with-autoconf-exception
607
+ LGPL-2.0
608
+ LGPL-2.0+
609
+ LGPL-2.1
610
+ LGPL-2.1+
611
+ LGPL-3.0
612
+ LGPL-3.0+
613
+ Nunit
614
+ StandardML-NJ
615
+ bzip2-1.0.5
616
+ eCos-2.0
617
+ wxWindows
618
+ ].freeze
619
+
617
620
  # exception identifiers
618
621
  EXCEPTION_IDENTIFIERS = %w[
619
622
  389-exception
@@ -649,7 +652,6 @@ class Gem::Licenses
649
652
  LZMA-exception
650
653
  Libtool-exception
651
654
  Linux-syscall-note
652
- Nokia-Qt-exception-1.1
653
655
  OCCT-exception-1.0
654
656
  OCaml-LGPL-linking-exception
655
657
  OpenJDK-assembly-exception-1.0
@@ -681,7 +683,11 @@ class Gem::Licenses
681
683
  x11vnc-openssl-exception
682
684
  ].freeze
683
685
 
684
- REGEXP = %r{
686
+ DEPRECATED_EXCEPTION_IDENTIFIERS = %w[
687
+ Nokia-Qt-exception-1.1
688
+ ].freeze
689
+
690
+ VALID_REGEXP = /
685
691
  \A
686
692
  (?:
687
693
  #{Regexp.union(LICENSE_IDENTIFIERS)}
@@ -691,10 +697,34 @@ class Gem::Licenses
691
697
  | #{LICENSE_REF}
692
698
  )
693
699
  \Z
694
- }ox.freeze
700
+ /ox
701
+
702
+ DEPRECATED_LICENSE_REGEXP = /
703
+ \A
704
+ #{Regexp.union(DEPRECATED_LICENSE_IDENTIFIERS)}
705
+ \+?
706
+ (?:\s WITH \s .+?)?
707
+ \Z
708
+ /ox
709
+
710
+ DEPRECATED_EXCEPTION_REGEXP = /
711
+ \A
712
+ .+?
713
+ \+?
714
+ (?:\s WITH \s #{Regexp.union(DEPRECATED_EXCEPTION_IDENTIFIERS)})
715
+ \Z
716
+ /ox
695
717
 
696
718
  def self.match?(license)
697
- !REGEXP.match(license).nil?
719
+ VALID_REGEXP.match?(license)
720
+ end
721
+
722
+ def self.deprecated_license_id?(license)
723
+ DEPRECATED_LICENSE_REGEXP.match?(license)
724
+ end
725
+
726
+ def self.deprecated_exception_id?(license)
727
+ DEPRECATED_EXCEPTION_REGEXP.match?(license)
698
728
  end
699
729
 
700
730
  def self.suggestions(license)
@@ -1,7 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Gem
4
- class List
4
+ # The Gem::List class is currently unused and will be removed in the next major rubygems version
5
+ class List # :nodoc:
5
6
  include Enumerable
6
7
  attr_accessor :value, :tail
7
8
 
@@ -35,4 +36,5 @@ module Gem
35
36
  List.new value, list
36
37
  end
37
38
  end
39
+ deprecate_constant :List
38
40
  end
data/lib/rubygems/util.rb CHANGED
@@ -6,7 +6,6 @@ require_relative "deprecate"
6
6
  # This module contains various utility methods as module methods.
7
7
 
8
8
  module Gem::Util
9
-
10
9
  ##
11
10
  # Zlib::GzipReader wrapper that unzips +data+.
12
11
 
@@ -61,7 +60,7 @@ module Gem::Util
61
60
  # Invokes system, but silences all output.
62
61
 
63
62
  def self.silent_system(*command)
64
- opt = { :out => IO::NULL, :err => [:child, :out] }
63
+ opt = { out: IO::NULL, err: [:child, :out] }
65
64
  if Hash === command.last
66
65
  opt.update(command.last)
67
66
  cmds = command[0...-1]
@@ -110,11 +109,10 @@ module Gem::Util
110
109
  # comes with a leading slash.
111
110
 
112
111
  def self.correct_for_windows_path(path)
113
- if path[0].chr == "/" && path[1].chr =~ /[a-z]/i && path[2].chr == ":"
112
+ if path[0].chr == "/" && path[1].chr.match?(/[a-z]/i) && path[2].chr == ":"
114
113
  path[1..-1]
115
114
  else
116
115
  path
117
116
  end
118
117
  end
119
-
120
118
  end
@@ -25,7 +25,7 @@ class Gem::Validator
25
25
  installed_files = []
26
26
 
27
27
  Find.find gem_directory do |file_name|
28
- fn = file_name[gem_directory.size..file_name.size - 1].sub(/^\//, "")
28
+ fn = file_name[gem_directory.size..file_name.size - 1].sub(%r{^/}, "")
29
29
  installed_files << fn unless
30
30
  fn.empty? || fn.include?("CVS") || File.directory?(file_name)
31
31
  end
@@ -63,7 +63,9 @@ class Gem::Validator
63
63
  errors = Hash.new {|h,k| h[k] = {} }
64
64
 
65
65
  Gem::Specification.each do |spec|
66
- next unless gems.include? spec.name unless gems.empty?
66
+ unless gems.empty?
67
+ next unless gems.include? spec.name
68
+ end
67
69
  next if spec.default_gem?
68
70
 
69
71
  gem_name = spec.file_name
@@ -88,7 +90,7 @@ class Gem::Validator
88
90
 
89
91
  good, gone, unreadable = nil, nil, nil, nil
90
92
 
91
- File.open gem_path, Gem.binary_mode do |file|
93
+ File.open gem_path, Gem.binary_mode do |_file|
92
94
  package = Gem::Package.new gem_path
93
95
 
94
96
  good, gone = package.contents.partition do |file_name|
@@ -156,16 +156,16 @@ class Gem::Version
156
156
  include Comparable
157
157
 
158
158
  VERSION_PATTERN = '[0-9]+(?>\.[0-9a-zA-Z]+)*(-[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?' # :nodoc:
159
- ANCHORED_VERSION_PATTERN = /\A\s*(#{VERSION_PATTERN})?\s*\z/.freeze # :nodoc:
159
+ ANCHORED_VERSION_PATTERN = /\A\s*(#{VERSION_PATTERN})?\s*\z/ # :nodoc:
160
160
 
161
161
  ##
162
162
  # A string representation of this Version.
163
163
 
164
164
  def version
165
- @version.dup
165
+ @version
166
166
  end
167
167
 
168
- alias to_s version
168
+ alias_method :to_s, :version
169
169
 
170
170
  ##
171
171
  # True if the +version+ string matches RubyGems' requirements.
@@ -173,7 +173,7 @@ class Gem::Version
173
173
  def self.correct?(version)
174
174
  nil_versions_are_discouraged! if version.nil?
175
175
 
176
- !!(version.to_s =~ ANCHORED_VERSION_PATTERN)
176
+ ANCHORED_VERSION_PATTERN.match?(version.to_s)
177
177
  end
178
178
 
179
179
  ##
@@ -201,7 +201,7 @@ class Gem::Version
201
201
  @@release = {}
202
202
 
203
203
  def self.new(version) # :nodoc:
204
- return super unless Gem::Version == self
204
+ return super unless self == Gem::Version
205
205
 
206
206
  @@all[version] ||= super
207
207
  end
@@ -224,9 +224,17 @@ class Gem::Version
224
224
  end
225
225
 
226
226
  # If version is an empty string convert it to 0
227
- version = 0 if version.is_a?(String) && version =~ /\A\s*\Z/
227
+ version = 0 if version.is_a?(String) && /\A\s*\Z/.match?(version)
228
+
229
+ @version = version.to_s
228
230
 
229
- @version = version.to_s.strip.gsub("-",".pre.")
231
+ # optimization to avoid allocation when given an integer, since we know
232
+ # it's to_s won't have any spaces or dashes
233
+ unless version.is_a?(Integer)
234
+ @version = @version.strip
235
+ @version.gsub!("-",".pre.")
236
+ end
237
+ @version = -@version
230
238
  @segments = nil
231
239
  end
232
240
 
@@ -252,7 +260,7 @@ class Gem::Version
252
260
  # same precision. Version "1.0" is not the same as version "1".
253
261
 
254
262
  def eql?(other)
255
- self.class === other && @version == other._version
263
+ self.class === other && @version == other.version
256
264
  end
257
265
 
258
266
  def hash # :nodoc:
@@ -284,7 +292,7 @@ class Gem::Version
284
292
  end
285
293
 
286
294
  def yaml_initialize(tag, map) # :nodoc:
287
- @version = map["version"]
295
+ @version = -map["version"]
288
296
  @segments = nil
289
297
  @hash = nil
290
298
  end
@@ -302,7 +310,7 @@ class Gem::Version
302
310
 
303
311
  def prerelease?
304
312
  unless instance_variable_defined? :@prerelease
305
- @prerelease = !!(@version =~ /[a-zA-Z]/)
313
+ @prerelease = /[a-zA-Z]/.match?(version)
306
314
  end
307
315
  @prerelease
308
316
  end
@@ -354,7 +362,7 @@ class Gem::Version
354
362
  return self <=> self.class.new(other) if (String === other) && self.class.correct?(other)
355
363
 
356
364
  return unless Gem::Version === other
357
- return 0 if @version == other._version || canonical_segments == other.canonical_segments
365
+ return 0 if @version == other.version || canonical_segments == other.canonical_segments
358
366
 
359
367
  lhsegments = canonical_segments
360
368
  rhsegments = other.canonical_segments
@@ -380,39 +388,37 @@ class Gem::Version
380
388
  0
381
389
  end
382
390
 
391
+ # remove trailing zeros segments before first letter or at the end of the version
383
392
  def canonical_segments
384
- @canonical_segments ||=
385
- _split_segments.map! do |segments|
386
- segments.reverse_each.drop_while {|s| s == 0 }.reverse
387
- end.reduce(&:concat)
393
+ @canonical_segments ||= begin
394
+ # remove trailing 0 segments, using dot or letter as anchor
395
+ # may leave a trailing dot which will be ignored by partition_segments
396
+ canonical_version = @version.sub(/(?<=[a-zA-Z.])[.0]+\z/, "")
397
+ # remove 0 segments before the first letter in a prerelease version
398
+ canonical_version.sub!(/(?<=\.|\A)[0.]+(?=[a-zA-Z])/, "") if prerelease?
399
+ partition_segments(canonical_version)
400
+ end
388
401
  end
389
402
 
390
403
  def freeze
391
404
  prerelease?
405
+ _segments
392
406
  canonical_segments
393
407
  super
394
408
  end
395
409
 
396
410
  protected
397
411
 
398
- def _version
399
- @version
400
- end
401
-
402
412
  def _segments
403
413
  # segments is lazy so it can pick up version values that come from
404
414
  # old marshaled versions, which don't go through marshal_load.
405
415
  # since this version object is cached in @@all, its @segments should be frozen
406
-
407
- @segments ||= @version.scan(/[0-9]+|[a-z]+/i).map do |s|
408
- /^\d+$/.match?(s) ? s.to_i : s
409
- end.freeze
416
+ @segments ||= partition_segments(@version)
410
417
  end
411
418
 
412
- def _split_segments
413
- string_start = _segments.index {|s| s.is_a?(String) }
414
- string_segments = segments
415
- numeric_segments = string_segments.slice!(0, string_start || string_segments.size)
416
- [numeric_segments, string_segments]
419
+ def partition_segments(ver)
420
+ ver.scan(/\d+|[a-z]+/i).map! do |s|
421
+ /\A\d/.match?(s) ? s.to_i : -s
422
+ end.freeze
417
423
  end
418
424
  end
@@ -12,7 +12,6 @@ require_relative "../rubygems"
12
12
  # Mixin methods for --version and --platform Gem::Command options.
13
13
 
14
14
  module Gem::VersionOption
15
-
16
15
  ##
17
16
  # Add the --platform option to the option parser.
18
17
 
@@ -26,8 +25,7 @@ module Gem::VersionOption
26
25
  end
27
26
 
28
27
  add_option("--platform PLATFORM", Gem::Platform,
29
- "Specify the platform of gem to #{task}", *wrap) do
30
- |value, options|
28
+ "Specify the platform of gem to #{task}", *wrap) do |value, options|
31
29
  unless options[:added_platform]
32
30
  Gem.platforms = [Gem::Platform::RUBY]
33
31
  options[:added_platform] = true
@@ -57,8 +55,7 @@ module Gem::VersionOption
57
55
  end
58
56
 
59
57
  add_option("-v", "--version VERSION", Gem::Requirement,
60
- "Specify version of gem to #{task}", *wrap) do
61
- |value, options|
58
+ "Specify version of gem to #{task}", *wrap) do |value, options|
62
59
  # Allow handling for multiple --version operators
63
60
  if options[:version] && !options[:version].none?
64
61
  options[:version].concat([value])
@@ -36,7 +36,7 @@ module Gem
36
36
  (.*) # value
37
37
  \1 # matching closing quote
38
38
  $
39
- /xo.freeze
39
+ /xo
40
40
 
41
41
  HASH_REGEX = /
42
42
  ^
@@ -48,14 +48,14 @@ module Gem
48
48
  (.*) # value
49
49
  \3 # matching closing quote
50
50
  $
51
- /xo.freeze
51
+ /xo
52
52
 
53
53
  def load(str)
54
54
  res = {}
55
55
  stack = [res]
56
56
  last_hash = nil
57
57
  last_empty_key = nil
58
- str.split(/\r?\n/).each do |line|
58
+ str.split(/\r?\n/) do |line|
59
59
  if match = HASH_REGEX.match(line)
60
60
  indent, key, quote, val = match.captures
61
61
  convert_to_backward_compatible_key!(key)
data/lib/rubygems.rb CHANGED
@@ -9,7 +9,7 @@
9
9
  require "rbconfig"
10
10
 
11
11
  module Gem
12
- VERSION = "3.4.22"
12
+ VERSION = "3.5.1"
13
13
  end
14
14
 
15
15
  # Must be first since it unloads the prelude from 1.9.2
@@ -115,11 +115,6 @@ require_relative "rubygems/errors"
115
115
  module Gem
116
116
  RUBYGEMS_DIR = __dir__
117
117
 
118
- # Taint support is deprecated in Ruby 2.7.
119
- # This allows switching ".untaint" to ".tap(&Gem::UNTAINT)",
120
- # to avoid deprecation warnings in Ruby 2.7.
121
- UNTAINT = RUBY_VERSION < "2.7" ? :untaint.to_sym : proc {}
122
-
123
118
  ##
124
119
  # An Array of Regexps that match windows Ruby platforms.
125
120
 
@@ -338,16 +333,6 @@ module Gem
338
333
  @configuration = config
339
334
  end
340
335
 
341
- ##
342
- # The path to the data directory specified by the gem name. If the
343
- # package is not available as a gem, return nil.
344
-
345
- def self.datadir(gem_name)
346
- spec = @loaded_specs[gem_name]
347
- return nil if spec.nil?
348
- spec.datadir
349
- end
350
-
351
336
  ##
352
337
  # A Zlib::Deflate.deflate wrapper
353
338
 
@@ -439,7 +424,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
439
424
 
440
425
  def self.ensure_subdirectories(dir, mode, subdirs) # :nodoc:
441
426
  old_umask = File.umask
442
- File.umask old_umask | 0o02
427
+ File.umask old_umask | 0o002
443
428
 
444
429
  options = {}
445
430
 
@@ -465,7 +450,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
465
450
  # distinction as extensions cannot be shared between the two.
466
451
 
467
452
  def self.extension_api_version # :nodoc:
468
- if "no" == RbConfig::CONFIG["ENABLE_SHARED"]
453
+ if RbConfig::CONFIG["ENABLE_SHARED"] == "no"
469
454
  "#{ruby_api_version}-static"
470
455
  else
471
456
  ruby_api_version
@@ -506,7 +491,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
506
491
  glob_with_suffixes = "#{glob}#{Gem.suffix_pattern}"
507
492
  $LOAD_PATH.map do |load_path|
508
493
  Gem::Util.glob_files_in_dir(glob_with_suffixes, load_path)
509
- end.flatten.select {|file| File.file? file.tap(&Gem::UNTAINT) }
494
+ end.flatten.select {|file| File.file? file }
510
495
  end
511
496
 
512
497
  ##
@@ -614,6 +599,16 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
614
599
  @yaml_loaded = true
615
600
  end
616
601
 
602
+ @safe_marshal_loaded = false
603
+
604
+ def self.load_safe_marshal
605
+ return if @safe_marshal_loaded
606
+
607
+ require_relative "rubygems/safe_marshal"
608
+
609
+ @safe_marshal_loaded = true
610
+ end
611
+
617
612
  ##
618
613
  # The file name and line number of the caller of the caller of this method.
619
614
  #
@@ -742,7 +737,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
742
737
 
743
738
  if prefix != File.expand_path(RbConfig::CONFIG["sitelibdir"]) &&
744
739
  prefix != File.expand_path(RbConfig::CONFIG["libdir"]) &&
745
- "lib" == File.basename(RUBYGEMS_DIR)
740
+ File.basename(RUBYGEMS_DIR) == "lib"
746
741
  prefix
747
742
  end
748
743
  end
@@ -758,13 +753,9 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
758
753
  # Safely read a file in binary mode on all platforms.
759
754
 
760
755
  def self.read_binary(path)
761
- open_file(path, "rb+") do |io|
762
- io.read
763
- end
756
+ open_file(path, "rb+", &:read)
764
757
  rescue Errno::EACCES, Errno::EROFS
765
- open_file(path, "rb") do |io|
766
- io.read
767
- end
758
+ open_file(path, "rb", &:read)
768
759
  end
769
760
 
770
761
  ##
@@ -866,7 +857,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
866
857
  return @ruby_version if defined? @ruby_version
867
858
  version = RUBY_VERSION.dup
868
859
 
869
- unless defined?(RUBY_PATCHLEVEL) && RUBY_PATCHLEVEL != -1
860
+ if RUBY_PATCHLEVEL == -1
870
861
  if RUBY_ENGINE == "ruby"
871
862
  desc = RUBY_DESCRIPTION[/\Aruby #{Regexp.quote(RUBY_VERSION)}([^ ]+) /, 1]
872
863
  else
@@ -948,8 +939,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
948
939
  val = RbConfig::CONFIG[key]
949
940
  next unless val && !val.empty?
950
941
  ".#{val}"
951
- end,
952
- ].compact.uniq
942
+ end].compact.uniq
953
943
  end
954
944
 
955
945
  ##
@@ -963,7 +953,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
963
953
 
964
954
  elapsed = Time.now - now
965
955
 
966
- ui.say "%2$*1$s: %3$3.3fs" % [-width, msg, elapsed] if display
956
+ ui.say format("%2$*1$s: %3$3.3fs", -width, msg, elapsed) if display
967
957
 
968
958
  value
969
959
  end
@@ -995,7 +985,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
995
985
  def self.win_platform?
996
986
  if @@win_platform.nil?
997
987
  ruby_platform = RbConfig::CONFIG["host_os"]
998
- @@win_platform = !!WIN_PATTERNS.find {|r| ruby_platform =~ r }
988
+ @@win_platform = !WIN_PATTERNS.find {|r| ruby_platform =~ r }.nil?
999
989
  end
1000
990
 
1001
991
  @@win_platform
@@ -1027,7 +1017,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
1027
1017
 
1028
1018
  begin
1029
1019
  load plugin
1030
- rescue ::Exception => e
1020
+ rescue ScriptError, StandardError => e
1031
1021
  details = "#{plugin.inspect}: #{e.message} (#{e.class})"
1032
1022
  warn "Error loading RubyGems plugin #{details}"
1033
1023
  end
@@ -1089,8 +1079,6 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
1089
1079
  end
1090
1080
  end
1091
1081
 
1092
- path.tap(&Gem::UNTAINT)
1093
-
1094
1082
  unless File.file? path
1095
1083
  return unless raise_exception
1096
1084
 
@@ -1152,7 +1140,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
1152
1140
  # This is used throughout RubyGems for enabling reproducible builds.
1153
1141
 
1154
1142
  def self.source_date_epoch
1155
- Time.at(self.source_date_epoch_string.to_i).utc.freeze
1143
+ Time.at(source_date_epoch_string.to_i).utc.freeze
1156
1144
  end
1157
1145
 
1158
1146
  # FIX: Almost everywhere else we use the `def self.` way of defining class
@@ -1299,9 +1287,10 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
1299
1287
  ##
1300
1288
  # Location of Marshal quick gemspecs on remote repositories
1301
1289
 
1302
- MARSHAL_SPEC_DIR = "quick/Marshal.#{Gem.marshal_version}/"
1290
+ MARSHAL_SPEC_DIR = "quick/Marshal.#{Gem.marshal_version}/".freeze
1303
1291
 
1304
1292
  autoload :ConfigFile, File.expand_path("rubygems/config_file", __dir__)
1293
+ autoload :CIDetector, File.expand_path("rubygems/ci_detector", __dir__)
1305
1294
  autoload :Dependency, File.expand_path("rubygems/dependency", __dir__)
1306
1295
  autoload :DependencyList, File.expand_path("rubygems/dependency_list", __dir__)
1307
1296
  autoload :Installer, File.expand_path("rubygems/installer", __dir__)
@@ -1348,6 +1337,17 @@ begin
1348
1337
  rescue LoadError
1349
1338
  end
1350
1339
 
1340
+ # TruffleRuby >= 24 defines REUSE_AS_BINARY_ON_TRUFFLERUBY in defaults/truffleruby.
1341
+ # However, TruffleRuby < 24 defines REUSE_AS_BINARY_ON_TRUFFLERUBY directly in its copy
1342
+ # of lib/rubygems/platform.rb, so it is not defined if RubyGems is updated (gem update --system).
1343
+ # Instead, we define it here in that case, similar to bundler/lib/bundler/rubygems_ext.rb.
1344
+ # We must define it here and not in platform.rb because platform.rb is loaded before defaults/truffleruby.
1345
+ class Gem::Platform
1346
+ if RUBY_ENGINE == "truffleruby" && !defined?(REUSE_AS_BINARY_ON_TRUFFLERUBY)
1347
+ REUSE_AS_BINARY_ON_TRUFFLERUBY = %w[libv8 libv8-node sorbet-static].freeze
1348
+ end
1349
+ end
1350
+
1351
1351
  ##
1352
1352
  # Loads the default specs.
1353
1353
  Gem::Specification.load_defaults
@@ -1357,7 +1357,7 @@ require_relative "rubygems/core_ext/kernel_gem"
1357
1357
  path = File.join(__dir__, "rubygems/core_ext/kernel_require.rb")
1358
1358
  # When https://bugs.ruby-lang.org/issues/17259 is available, there is no need to override Kernel#warn
1359
1359
  if RUBY_ENGINE == "truffleruby" ||
1360
- (RUBY_ENGINE == "ruby" && RUBY_VERSION >= "3.0")
1360
+ RUBY_ENGINE == "ruby"
1361
1361
  file = "<internal:#{path}>"
1362
1362
  else
1363
1363
  require_relative "rubygems/core_ext/kernel_warn"