rubygems-update 3.4.21 → 3.5.0

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 (564) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +132 -2
  3. data/Manifest.txt +39 -221
  4. data/README.md +1 -3
  5. data/bundler/CHANGELOG.md +74 -0
  6. data/bundler/README.md +1 -2
  7. data/bundler/bundler.gemspec +4 -2
  8. data/bundler/exe/bundle +1 -10
  9. data/bundler/lib/bundler/build_metadata.rb +3 -3
  10. data/bundler/lib/bundler/capistrano.rb +1 -1
  11. data/bundler/lib/bundler/checksum.rb +245 -0
  12. data/bundler/lib/bundler/ci_detector.rb +75 -0
  13. data/bundler/lib/bundler/cli/add.rb +3 -3
  14. data/bundler/lib/bundler/cli/binstubs.rb +4 -4
  15. data/bundler/lib/bundler/cli/cache.rb +1 -1
  16. data/bundler/lib/bundler/cli/check.rb +1 -1
  17. data/bundler/lib/bundler/cli/common.rb +9 -1
  18. data/bundler/lib/bundler/cli/config.rb +8 -7
  19. data/bundler/lib/bundler/cli/console.rb +3 -2
  20. data/bundler/lib/bundler/cli/doctor.rb +2 -2
  21. data/bundler/lib/bundler/cli/exec.rb +1 -1
  22. data/bundler/lib/bundler/cli/gem.rb +31 -23
  23. data/bundler/lib/bundler/cli/info.rb +2 -13
  24. data/bundler/lib/bundler/cli/install.rb +5 -4
  25. data/bundler/lib/bundler/cli/issue.rb +1 -1
  26. data/bundler/lib/bundler/cli/lock.rb +4 -4
  27. data/bundler/lib/bundler/cli/open.rb +1 -1
  28. data/bundler/lib/bundler/cli/outdated.rb +6 -6
  29. data/bundler/lib/bundler/cli/plugin.rb +7 -14
  30. data/bundler/lib/bundler/cli/pristine.rb +38 -30
  31. data/bundler/lib/bundler/cli/show.rb +2 -2
  32. data/bundler/lib/bundler/cli/update.rb +5 -5
  33. data/bundler/lib/bundler/cli.rb +215 -263
  34. data/bundler/lib/bundler/compact_index_client/cache.rb +29 -9
  35. data/bundler/lib/bundler/compact_index_client/cache_file.rb +153 -0
  36. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +7 -3
  37. data/bundler/lib/bundler/compact_index_client/updater.rb +79 -81
  38. data/bundler/lib/bundler/compact_index_client.rb +14 -7
  39. data/bundler/lib/bundler/constants.rb +1 -1
  40. data/bundler/lib/bundler/current_ruby.rb +5 -21
  41. data/bundler/lib/bundler/definition.rb +43 -16
  42. data/bundler/lib/bundler/dependency.rb +16 -12
  43. data/bundler/lib/bundler/digest.rb +2 -2
  44. data/bundler/lib/bundler/dsl.rb +43 -25
  45. data/bundler/lib/bundler/endpoint_specification.rb +6 -2
  46. data/bundler/lib/bundler/env.rb +1 -3
  47. data/bundler/lib/bundler/errors.rb +58 -0
  48. data/bundler/lib/bundler/fetcher/base.rb +3 -1
  49. data/bundler/lib/bundler/fetcher/compact_index.rb +4 -4
  50. data/bundler/lib/bundler/fetcher/downloader.rb +13 -11
  51. data/bundler/lib/bundler/fetcher/gem_remote_fetcher.rb +16 -0
  52. data/bundler/lib/bundler/fetcher/index.rb +1 -1
  53. data/bundler/lib/bundler/fetcher.rb +28 -25
  54. data/bundler/lib/bundler/friendly_errors.rb +5 -5
  55. data/bundler/lib/bundler/gem_helper.rb +1 -1
  56. data/bundler/lib/bundler/gem_helpers.rb +12 -2
  57. data/bundler/lib/bundler/graph.rb +9 -9
  58. data/bundler/lib/bundler/index.rb +1 -2
  59. data/bundler/lib/bundler/injector.rb +1 -1
  60. data/bundler/lib/bundler/inline.rb +3 -3
  61. data/bundler/lib/bundler/installer/gem_installer.rb +10 -10
  62. data/bundler/lib/bundler/installer/parallel_installer.rb +16 -8
  63. data/bundler/lib/bundler/installer/standalone.rb +2 -3
  64. data/bundler/lib/bundler/installer.rb +9 -9
  65. data/bundler/lib/bundler/lazy_specification.rb +28 -17
  66. data/bundler/lib/bundler/lockfile_generator.rb +9 -0
  67. data/bundler/lib/bundler/lockfile_parser.rb +81 -10
  68. data/bundler/lib/bundler/man/bundle-add.1 +3 -26
  69. data/bundler/lib/bundler/man/bundle-binstubs.1 +4 -16
  70. data/bundler/lib/bundler/man/bundle-cache.1 +3 -24
  71. data/bundler/lib/bundler/man/bundle-check.1 +3 -12
  72. data/bundler/lib/bundler/man/bundle-clean.1 +3 -10
  73. data/bundler/lib/bundler/man/bundle-config.1 +20 -211
  74. data/bundler/lib/bundler/man/bundle-config.1.ronn +6 -0
  75. data/bundler/lib/bundler/man/bundle-console.1 +4 -22
  76. data/bundler/lib/bundler/man/bundle-doctor.1 +4 -18
  77. data/bundler/lib/bundler/man/bundle-exec.1 +12 -73
  78. data/bundler/lib/bundler/man/bundle-gem.1 +13 -49
  79. data/bundler/lib/bundler/man/bundle-help.1 +3 -7
  80. data/bundler/lib/bundler/man/bundle-info.1 +3 -9
  81. data/bundler/lib/bundler/man/bundle-init.1 +3 -12
  82. data/bundler/lib/bundler/man/bundle-inject.1 +6 -19
  83. data/bundler/lib/bundler/man/bundle-install.1 +27 -125
  84. data/bundler/lib/bundler/man/bundle-install.1.ronn +1 -0
  85. data/bundler/lib/bundler/man/bundle-list.1 +4 -19
  86. data/bundler/lib/bundler/man/bundle-lock.1 +5 -29
  87. data/bundler/lib/bundler/man/bundle-open.1 +7 -27
  88. data/bundler/lib/bundler/man/bundle-outdated.1 +3 -55
  89. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +1 -0
  90. data/bundler/lib/bundler/man/bundle-platform.1 +5 -27
  91. data/bundler/lib/bundler/man/bundle-plugin.1 +3 -29
  92. data/bundler/lib/bundler/man/bundle-pristine.1 +5 -16
  93. data/bundler/lib/bundler/man/bundle-remove.1 +4 -14
  94. data/bundler/lib/bundler/man/bundle-show.1 +3 -10
  95. data/bundler/lib/bundler/man/bundle-update.1 +18 -137
  96. data/bundler/lib/bundler/man/bundle-version.1 +3 -16
  97. data/bundler/lib/bundler/man/bundle-viz.1 +4 -16
  98. data/bundler/lib/bundler/man/bundle.1 +5 -44
  99. data/bundler/lib/bundler/man/gemfile.5 +24 -301
  100. data/bundler/lib/bundler/man/gemfile.5.ronn +4 -0
  101. data/bundler/lib/bundler/match_metadata.rb +4 -0
  102. data/bundler/lib/bundler/match_platform.rb +1 -1
  103. data/bundler/lib/bundler/plugin/api/source.rb +3 -2
  104. data/bundler/lib/bundler/plugin/index.rb +8 -0
  105. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  106. data/bundler/lib/bundler/plugin.rb +12 -5
  107. data/bundler/lib/bundler/resolver/base.rb +1 -1
  108. data/bundler/lib/bundler/resolver/incompatibility.rb +1 -1
  109. data/bundler/lib/bundler/resolver/spec_group.rb +1 -4
  110. data/bundler/lib/bundler/resolver.rb +16 -16
  111. data/bundler/lib/bundler/ruby_dsl.rb +20 -12
  112. data/bundler/lib/bundler/ruby_version.rb +1 -1
  113. data/bundler/lib/bundler/rubygems_ext.rb +27 -54
  114. data/bundler/lib/bundler/rubygems_gem_installer.rb +23 -58
  115. data/bundler/lib/bundler/rubygems_integration.rb +25 -94
  116. data/bundler/lib/bundler/runtime.rb +2 -2
  117. data/bundler/lib/bundler/self_manager.rb +23 -7
  118. data/bundler/lib/bundler/settings.rb +27 -7
  119. data/bundler/lib/bundler/setup.rb +4 -1
  120. data/bundler/lib/bundler/shared_helpers.rb +35 -13
  121. data/bundler/lib/bundler/source/git/git_proxy.rb +22 -14
  122. data/bundler/lib/bundler/source/git.rb +4 -3
  123. data/bundler/lib/bundler/source/metadata.rb +16 -16
  124. data/bundler/lib/bundler/source/path.rb +7 -6
  125. data/bundler/lib/bundler/source/rubygems.rb +21 -14
  126. data/bundler/lib/bundler/source.rb +2 -0
  127. data/bundler/lib/bundler/spec_set.rb +43 -12
  128. data/bundler/lib/bundler/stub_specification.rb +1 -0
  129. data/bundler/lib/bundler/templates/Executable.bundler +1 -1
  130. data/bundler/lib/bundler/templates/newgem/README.md.tt +3 -3
  131. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +2 -6
  132. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +1 -1
  133. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +1 -1
  134. data/bundler/lib/bundler/templates/newgem/standard.yml.tt +1 -1
  135. data/bundler/lib/bundler/ui/shell.rb +2 -2
  136. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  137. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +53 -6
  138. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +8 -20
  139. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +4 -3
  140. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +23 -11
  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 +36 -36
  143. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +3 -2
  144. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +1 -1
  145. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb +1 -1
  146. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +8 -10
  147. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +15 -4
  148. data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +15 -15
  149. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +140 -14
  150. data/bundler/lib/bundler/vendor/thor/lib/thor/command.rb +13 -4
  151. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +4 -0
  152. data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +16 -25
  153. data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +1 -1
  154. data/bundler/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -1
  155. data/bundler/lib/bundler/vendor/thor/lib/thor/nested_context.rb +2 -2
  156. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +20 -1
  157. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +33 -17
  158. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +27 -8
  159. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +44 -6
  160. data/bundler/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +2 -2
  161. data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +40 -30
  162. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +26 -150
  163. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +4 -46
  164. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/column_printer.rb +29 -0
  165. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +3 -45
  166. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/lcs_diff.rb +49 -0
  167. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +134 -0
  168. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/terminal.rb +42 -0
  169. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/wrapped_printer.rb +38 -0
  170. data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
  171. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +8 -7
  172. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  173. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +155 -8
  174. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +3 -0
  175. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +256 -132
  176. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1 -0
  177. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +95 -31
  178. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  179. data/bundler/lib/bundler/vendored_net_http.rb +8 -0
  180. data/bundler/lib/bundler/vendored_persistent.rb +0 -4
  181. data/bundler/lib/bundler/vendored_timeout.rb +8 -0
  182. data/bundler/lib/bundler/version.rb +1 -1
  183. data/bundler/lib/bundler/vlad.rb +1 -1
  184. data/bundler/lib/bundler/yaml_serializer.rb +9 -4
  185. data/bundler/lib/bundler.rb +38 -35
  186. data/lib/rubygems/available_set.rb +4 -4
  187. data/lib/rubygems/basic_specification.rb +35 -37
  188. data/lib/rubygems/bundler_version_finder.rb +4 -4
  189. data/lib/rubygems/ci_detector.rb +75 -0
  190. data/lib/rubygems/command.rb +15 -17
  191. data/lib/rubygems/command_manager.rb +5 -4
  192. data/lib/rubygems/commands/build_command.rb +2 -2
  193. data/lib/rubygems/commands/cert_command.rb +2 -3
  194. data/lib/rubygems/commands/check_command.rb +4 -4
  195. data/lib/rubygems/commands/cleanup_command.rb +12 -14
  196. data/lib/rubygems/commands/contents_command.rb +5 -5
  197. data/lib/rubygems/commands/dependency_command.rb +4 -5
  198. data/lib/rubygems/commands/environment_command.rb +3 -5
  199. data/lib/rubygems/commands/exec_command.rb +1 -1
  200. data/lib/rubygems/commands/fetch_command.rb +2 -2
  201. data/lib/rubygems/commands/generate_index_command.rb +39 -74
  202. data/lib/rubygems/commands/help_command.rb +4 -4
  203. data/lib/rubygems/commands/info_command.rb +2 -2
  204. data/lib/rubygems/commands/install_command.rb +8 -16
  205. data/lib/rubygems/commands/list_command.rb +2 -2
  206. data/lib/rubygems/commands/lock_command.rb +1 -1
  207. data/lib/rubygems/commands/open_command.rb +1 -1
  208. data/lib/rubygems/commands/owner_command.rb +1 -1
  209. data/lib/rubygems/commands/pristine_command.rb +13 -15
  210. data/lib/rubygems/commands/push_command.rb +2 -2
  211. data/lib/rubygems/commands/query_command.rb +4 -5
  212. data/lib/rubygems/commands/rdoc_command.rb +2 -2
  213. data/lib/rubygems/commands/search_command.rb +2 -2
  214. data/lib/rubygems/commands/setup_command.rb +33 -36
  215. data/lib/rubygems/commands/sources_command.rb +12 -12
  216. data/lib/rubygems/commands/specification_command.rb +10 -10
  217. data/lib/rubygems/commands/stale_command.rb +1 -1
  218. data/lib/rubygems/commands/uninstall_command.rb +13 -14
  219. data/lib/rubygems/commands/unpack_command.rb +7 -7
  220. data/lib/rubygems/commands/update_command.rb +11 -13
  221. data/lib/rubygems/commands/which_command.rb +1 -1
  222. data/lib/rubygems/commands/yank_command.rb +1 -1
  223. data/lib/rubygems/compatibility.rb +5 -6
  224. data/lib/rubygems/config_file.rb +7 -7
  225. data/lib/rubygems/core_ext/kernel_gem.rb +0 -2
  226. data/lib/rubygems/core_ext/kernel_require.rb +20 -49
  227. data/lib/rubygems/core_ext/kernel_warn.rb +1 -1
  228. data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
  229. data/lib/rubygems/defaults.rb +15 -3
  230. data/lib/rubygems/dependency.rb +12 -14
  231. data/lib/rubygems/dependency_installer.rb +30 -31
  232. data/lib/rubygems/dependency_list.rb +1 -1
  233. data/lib/rubygems/deprecate.rb +16 -15
  234. data/lib/rubygems/doctor.rb +6 -6
  235. data/lib/rubygems/errors.rb +2 -6
  236. data/lib/rubygems/exceptions.rb +2 -1
  237. data/lib/rubygems/ext/builder.rb +15 -10
  238. data/lib/rubygems/ext/cargo_builder.rb +5 -5
  239. data/lib/rubygems/ext/ext_conf_builder.rb +2 -4
  240. data/lib/rubygems/ext/rake_builder.rb +1 -1
  241. data/lib/rubygems/gem_runner.rb +4 -4
  242. data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +3 -3
  243. data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +3 -3
  244. data/lib/rubygems/gemcutter_utilities.rb +18 -19
  245. data/lib/rubygems/install_update_options.rb +18 -19
  246. data/lib/rubygems/installer.rb +66 -45
  247. data/lib/rubygems/installer_uninstaller_utils.rb +0 -2
  248. data/lib/rubygems/local_remote_options.rb +8 -11
  249. data/lib/rubygems/name_tuple.rb +7 -9
  250. data/lib/rubygems/net/http.rb +3 -0
  251. data/lib/rubygems/net-http/LICENSE.txt +22 -0
  252. data/lib/rubygems/net-http/lib/net/http/backward.rb +40 -0
  253. data/lib/rubygems/net-http/lib/net/http/exceptions.rb +34 -0
  254. data/lib/rubygems/net-http/lib/net/http/generic_request.rb +414 -0
  255. data/lib/rubygems/net-http/lib/net/http/header.rb +981 -0
  256. data/lib/rubygems/net-http/lib/net/http/proxy_delta.rb +17 -0
  257. data/lib/rubygems/net-http/lib/net/http/request.rb +88 -0
  258. data/lib/rubygems/net-http/lib/net/http/requests.rb +425 -0
  259. data/lib/rubygems/net-http/lib/net/http/response.rb +738 -0
  260. data/lib/rubygems/net-http/lib/net/http/responses.rb +1174 -0
  261. data/lib/rubygems/net-http/lib/net/http/status.rb +84 -0
  262. data/lib/rubygems/net-http/lib/net/http.rb +2496 -0
  263. data/lib/rubygems/net-http/lib/net/https.rb +23 -0
  264. data/lib/rubygems/net-protocol/LICENSE.txt +22 -0
  265. data/lib/rubygems/net-protocol/lib/net/protocol.rb +544 -0
  266. data/lib/rubygems/optparse/lib/optparse.rb +39 -17
  267. data/lib/rubygems/package/digest_io.rb +1 -1
  268. data/lib/rubygems/package/old.rb +2 -2
  269. data/lib/rubygems/package/tar_header.rb +45 -39
  270. data/lib/rubygems/package/tar_reader/entry.rb +5 -4
  271. data/lib/rubygems/package/tar_reader.rb +14 -5
  272. data/lib/rubygems/package/tar_writer.rb +20 -18
  273. data/lib/rubygems/package.rb +28 -27
  274. data/lib/rubygems/package_task.rb +2 -2
  275. data/lib/rubygems/path_support.rb +10 -11
  276. data/lib/rubygems/platform.rb +65 -48
  277. data/lib/rubygems/query_utils.rb +7 -9
  278. data/lib/rubygems/remote_fetcher.rb +17 -17
  279. data/lib/rubygems/request/connection_pools.rb +3 -3
  280. data/lib/rubygems/request.rb +20 -17
  281. data/lib/rubygems/request_set/gem_dependency_api.rb +120 -123
  282. data/lib/rubygems/request_set/lockfile/parser.rb +9 -9
  283. data/lib/rubygems/request_set/lockfile/tokenizer.rb +20 -12
  284. data/lib/rubygems/request_set/lockfile.rb +6 -11
  285. data/lib/rubygems/request_set.rb +5 -5
  286. data/lib/rubygems/requirement.rb +7 -7
  287. data/lib/rubygems/resolv/LICENSE.txt +22 -0
  288. data/lib/rubygems/resolv/lib/resolv.rb +3387 -0
  289. data/lib/rubygems/resolver/activation_request.rb +1 -3
  290. data/lib/rubygems/resolver/api_set/gem_parser.rb +7 -3
  291. data/lib/rubygems/resolver/best_set.rb +1 -1
  292. data/lib/rubygems/resolver/composed_set.rb +1 -1
  293. data/lib/rubygems/resolver/conflict.rb +4 -12
  294. data/lib/rubygems/resolver/index_set.rb +4 -4
  295. data/lib/rubygems/resolver/index_specification.rb +2 -2
  296. data/lib/rubygems/resolver/installer_set.rb +5 -6
  297. data/lib/rubygems/resolver/lock_set.rb +1 -1
  298. data/lib/rubygems/resolver.rb +6 -13
  299. data/lib/rubygems/s3_uri_signer.rb +6 -6
  300. data/lib/rubygems/safe_marshal/elements.rb +138 -0
  301. data/lib/rubygems/safe_marshal/reader.rb +306 -0
  302. data/lib/rubygems/safe_marshal/visitors/stream_printer.rb +31 -0
  303. data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +385 -0
  304. data/lib/rubygems/safe_marshal/visitors/visitor.rb +74 -0
  305. data/lib/rubygems/safe_marshal.rb +74 -0
  306. data/lib/rubygems/safe_yaml.rb +5 -28
  307. data/lib/rubygems/security/policies.rb +36 -38
  308. data/lib/rubygems/security/policy.rb +7 -11
  309. data/lib/rubygems/security/signer.rb +1 -1
  310. data/lib/rubygems/security/trust_dir.rb +4 -4
  311. data/lib/rubygems/security.rb +8 -22
  312. data/lib/rubygems/source/git.rb +1 -3
  313. data/lib/rubygems/source/installed.rb +0 -2
  314. data/lib/rubygems/source/local.rb +7 -9
  315. data/lib/rubygems/source/lock.rb +1 -3
  316. data/lib/rubygems/source/specific_file.rb +0 -1
  317. data/lib/rubygems/source/vendor.rb +0 -2
  318. data/lib/rubygems/source.rb +12 -12
  319. data/lib/rubygems/source_list.rb +5 -5
  320. data/lib/rubygems/spec_fetcher.rb +31 -31
  321. data/lib/rubygems/specification.rb +145 -150
  322. data/lib/rubygems/specification_policy.rb +61 -31
  323. data/lib/rubygems/stub_specification.rb +4 -5
  324. data/lib/rubygems/text.rb +1 -2
  325. data/lib/rubygems/timeout/LICENSE.txt +22 -0
  326. data/lib/rubygems/timeout/lib/timeout.rb +199 -0
  327. data/lib/rubygems/timeout.rb +3 -0
  328. data/lib/rubygems/tsort/lib/tsort.rb +3 -0
  329. data/lib/rubygems/uninstaller.rb +9 -11
  330. data/lib/rubygems/update_suggestion.rb +5 -18
  331. data/lib/rubygems/uri_formatter.rb +1 -1
  332. data/lib/rubygems/user_interaction.rb +17 -23
  333. data/lib/rubygems/util/licenses.rb +113 -35
  334. data/lib/rubygems/util/list.rb +3 -1
  335. data/lib/rubygems/util.rb +2 -4
  336. data/lib/rubygems/validator.rb +6 -4
  337. data/lib/rubygems/version.rb +35 -29
  338. data/lib/rubygems/version_option.rb +2 -5
  339. data/lib/rubygems/yaml_serializer.rb +9 -4
  340. data/lib/rubygems.rb +42 -42
  341. data/rubygems-update.gemspec +4 -4
  342. data/setup.rb +2 -2
  343. metadata +43 -225
  344. data/lib/rubygems/indexer.rb +0 -428
  345. data/lib/rubygems/mock_gem_ui.rb +0 -86
  346. data/test/rubygems/alternate_cert.pem +0 -19
  347. data/test/rubygems/alternate_cert_32.pem +0 -19
  348. data/test/rubygems/alternate_key.pem +0 -27
  349. data/test/rubygems/bad_rake.rb +0 -3
  350. data/test/rubygems/bundler_test_gem.rb +0 -424
  351. data/test/rubygems/ca_cert.pem +0 -77
  352. data/test/rubygems/child_cert.pem +0 -19
  353. data/test/rubygems/child_cert_32.pem +0 -19
  354. data/test/rubygems/child_key.pem +0 -27
  355. data/test/rubygems/client.pem +0 -107
  356. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  357. data/test/rubygems/data/gem-private_key.pem +0 -27
  358. data/test/rubygems/data/gem-public_cert.pem +0 -20
  359. data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
  360. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  361. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  362. data/test/rubygems/encrypted_private_key.pem +0 -30
  363. data/test/rubygems/expired_cert.pem +0 -19
  364. data/test/rubygems/fake_certlib/openssl.rb +0 -9
  365. data/test/rubygems/foo/discover.rb +0 -1
  366. data/test/rubygems/future_cert.pem +0 -19
  367. data/test/rubygems/future_cert_32.pem +0 -19
  368. data/test/rubygems/good_rake.rb +0 -3
  369. data/test/rubygems/grandchild_cert.pem +0 -19
  370. data/test/rubygems/grandchild_cert_32.pem +0 -19
  371. data/test/rubygems/grandchild_key.pem +0 -27
  372. data/test/rubygems/helper.rb +0 -1649
  373. data/test/rubygems/installer_test_case.rb +0 -248
  374. data/test/rubygems/invalid_client.pem +0 -49
  375. data/test/rubygems/invalid_issuer_cert.pem +0 -20
  376. data/test/rubygems/invalid_issuer_cert_32.pem +0 -20
  377. data/test/rubygems/invalid_key.pem +0 -27
  378. data/test/rubygems/invalid_signer_cert.pem +0 -19
  379. data/test/rubygems/invalid_signer_cert_32.pem +0 -19
  380. data/test/rubygems/invalidchild_cert.pem +0 -19
  381. data/test/rubygems/invalidchild_cert_32.pem +0 -19
  382. data/test/rubygems/invalidchild_key.pem +0 -27
  383. data/test/rubygems/multifactor_auth_utilities.rb +0 -111
  384. data/test/rubygems/package/tar_test_case.rb +0 -175
  385. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  386. data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
  387. data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
  388. data/test/rubygems/plugin/exception/rubygems_plugin.rb +0 -4
  389. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -5
  390. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +0 -4
  391. data/test/rubygems/private3072_key.pem +0 -40
  392. data/test/rubygems/private_ec_key.pem +0 -9
  393. data/test/rubygems/private_key.pem +0 -27
  394. data/test/rubygems/public3072_cert.pem +0 -25
  395. data/test/rubygems/public_cert.pem +0 -20
  396. data/test/rubygems/public_cert_32.pem +0 -19
  397. data/test/rubygems/public_key.pem +0 -9
  398. data/test/rubygems/rubygems/commands/crash_command.rb +0 -5
  399. data/test/rubygems/rubygems_plugin.rb +0 -24
  400. data/test/rubygems/sff/discover.rb +0 -1
  401. data/test/rubygems/simple_gem.rb +0 -68
  402. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -9
  403. data/test/rubygems/specifications/foo-0.0.1-x86-mswin32.gemspec +0 -0
  404. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +0 -14
  405. data/test/rubygems/ssl_cert.pem +0 -80
  406. data/test/rubygems/ssl_key.pem +0 -27
  407. data/test/rubygems/test_bundled_ca.rb +0 -61
  408. data/test/rubygems/test_config.rb +0 -28
  409. data/test/rubygems/test_deprecate.rb +0 -158
  410. data/test/rubygems/test_exit.rb +0 -17
  411. data/test/rubygems/test_gem.rb +0 -1799
  412. data/test/rubygems/test_gem_available_set.rb +0 -130
  413. data/test/rubygems/test_gem_bundler_version_finder.rb +0 -127
  414. data/test/rubygems/test_gem_command.rb +0 -403
  415. data/test/rubygems/test_gem_command_manager.rb +0 -400
  416. data/test/rubygems/test_gem_commands_build_command.rb +0 -739
  417. data/test/rubygems/test_gem_commands_cert_command.rb +0 -866
  418. data/test/rubygems/test_gem_commands_check_command.rb +0 -68
  419. data/test/rubygems/test_gem_commands_cleanup_command.rb +0 -292
  420. data/test/rubygems/test_gem_commands_contents_command.rb +0 -271
  421. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -228
  422. data/test/rubygems/test_gem_commands_environment_command.rb +0 -169
  423. data/test/rubygems/test_gem_commands_exec_command.rb +0 -857
  424. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -258
  425. data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -81
  426. data/test/rubygems/test_gem_commands_help_command.rb +0 -94
  427. data/test/rubygems/test_gem_commands_info_command.rb +0 -70
  428. data/test/rubygems/test_gem_commands_install_command.rb +0 -1573
  429. data/test/rubygems/test_gem_commands_list_command.rb +0 -33
  430. data/test/rubygems/test_gem_commands_lock_command.rb +0 -67
  431. data/test/rubygems/test_gem_commands_mirror.rb +0 -20
  432. data/test/rubygems/test_gem_commands_open_command.rb +0 -101
  433. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -50
  434. data/test/rubygems/test_gem_commands_owner_command.rb +0 -503
  435. data/test/rubygems/test_gem_commands_pristine_command.rb +0 -708
  436. data/test/rubygems/test_gem_commands_push_command.rb +0 -603
  437. data/test/rubygems/test_gem_commands_query_command.rb +0 -858
  438. data/test/rubygems/test_gem_commands_search_command.rb +0 -16
  439. data/test/rubygems/test_gem_commands_server_command.rb +0 -20
  440. data/test/rubygems/test_gem_commands_setup_command.rb +0 -474
  441. data/test/rubygems/test_gem_commands_signin_command.rb +0 -259
  442. data/test/rubygems/test_gem_commands_signout_command.rb +0 -30
  443. data/test/rubygems/test_gem_commands_sources_command.rb +0 -534
  444. data/test/rubygems/test_gem_commands_specification_command.rb +0 -277
  445. data/test/rubygems/test_gem_commands_stale_command.rb +0 -43
  446. data/test/rubygems/test_gem_commands_uninstall_command.rb +0 -522
  447. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -224
  448. data/test/rubygems/test_gem_commands_update_command.rb +0 -836
  449. data/test/rubygems/test_gem_commands_which_command.rb +0 -85
  450. data/test/rubygems/test_gem_commands_yank_command.rb +0 -299
  451. data/test/rubygems/test_gem_config_file.rb +0 -551
  452. data/test/rubygems/test_gem_dependency.rb +0 -398
  453. data/test/rubygems/test_gem_dependency_installer.rb +0 -1190
  454. data/test/rubygems/test_gem_dependency_list.rb +0 -265
  455. data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -27
  456. data/test/rubygems/test_gem_doctor.rb +0 -195
  457. data/test/rubygems/test_gem_ext_builder.rb +0 -337
  458. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +0 -1
  459. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +0 -10
  460. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +0 -249
  461. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +0 -10
  462. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +0 -27
  463. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +0 -3
  464. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +0 -1
  465. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +0 -249
  466. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +0 -10
  467. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +0 -10
  468. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +0 -51
  469. data/test/rubygems/test_gem_ext_cargo_builder.rb +0 -167
  470. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +0 -34
  471. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +0 -60
  472. data/test/rubygems/test_gem_ext_cmake_builder.rb +0 -84
  473. data/test/rubygems/test_gem_ext_configure_builder.rb +0 -80
  474. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -229
  475. data/test/rubygems/test_gem_ext_rake_builder.rb +0 -113
  476. data/test/rubygems/test_gem_gem_runner.rb +0 -119
  477. data/test/rubygems/test_gem_gemcutter_utilities.rb +0 -361
  478. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -60
  479. data/test/rubygems/test_gem_indexer.rb +0 -381
  480. data/test/rubygems/test_gem_install_update_options.rb +0 -208
  481. data/test/rubygems/test_gem_installer.rb +0 -2512
  482. data/test/rubygems/test_gem_local_remote_options.rb +0 -133
  483. data/test/rubygems/test_gem_name_tuple.rb +0 -43
  484. data/test/rubygems/test_gem_package.rb +0 -1306
  485. data/test/rubygems/test_gem_package_old.rb +0 -91
  486. data/test/rubygems/test_gem_package_tar_header.rb +0 -226
  487. data/test/rubygems/test_gem_package_tar_reader.rb +0 -135
  488. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -350
  489. data/test/rubygems/test_gem_package_tar_writer.rb +0 -331
  490. data/test/rubygems/test_gem_package_task.rb +0 -118
  491. data/test/rubygems/test_gem_path_support.rb +0 -139
  492. data/test/rubygems/test_gem_platform.rb +0 -497
  493. data/test/rubygems/test_gem_rdoc.rb +0 -137
  494. data/test/rubygems/test_gem_remote_fetcher.rb +0 -1227
  495. data/test/rubygems/test_gem_request.rb +0 -547
  496. data/test/rubygems/test_gem_request_connection_pools.rb +0 -152
  497. data/test/rubygems/test_gem_request_set.rb +0 -672
  498. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +0 -853
  499. data/test/rubygems/test_gem_request_set_lockfile.rb +0 -469
  500. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +0 -544
  501. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +0 -307
  502. data/test/rubygems/test_gem_requirement.rb +0 -505
  503. data/test/rubygems/test_gem_resolver.rb +0 -859
  504. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -43
  505. data/test/rubygems/test_gem_resolver_api_set.rb +0 -210
  506. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -167
  507. data/test/rubygems/test_gem_resolver_best_set.rb +0 -159
  508. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -44
  509. data/test/rubygems/test_gem_resolver_conflict.rb +0 -82
  510. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -83
  511. data/test/rubygems/test_gem_resolver_git_set.rb +0 -188
  512. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -114
  513. data/test/rubygems/test_gem_resolver_index_set.rb +0 -88
  514. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -93
  515. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -47
  516. data/test/rubygems/test_gem_resolver_installer_set.rb +0 -320
  517. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -44
  518. data/test/rubygems/test_gem_resolver_lock_set.rb +0 -62
  519. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -98
  520. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -19
  521. data/test/rubygems/test_gem_resolver_specification.rb +0 -63
  522. data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -82
  523. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -82
  524. data/test/rubygems/test_gem_security.rb +0 -341
  525. data/test/rubygems/test_gem_security_policy.rb +0 -535
  526. data/test/rubygems/test_gem_security_signer.rb +0 -218
  527. data/test/rubygems/test_gem_security_trust_dir.rb +0 -99
  528. data/test/rubygems/test_gem_silent_ui.rb +0 -123
  529. data/test/rubygems/test_gem_source.rb +0 -254
  530. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -37
  531. data/test/rubygems/test_gem_source_git.rb +0 -310
  532. data/test/rubygems/test_gem_source_installed.rb +0 -35
  533. data/test/rubygems/test_gem_source_list.rb +0 -119
  534. data/test/rubygems/test_gem_source_local.rb +0 -107
  535. data/test/rubygems/test_gem_source_lock.rb +0 -113
  536. data/test/rubygems/test_gem_source_specific_file.rb +0 -76
  537. data/test/rubygems/test_gem_source_subpath_problem.rb +0 -50
  538. data/test/rubygems/test_gem_source_vendor.rb +0 -30
  539. data/test/rubygems/test_gem_spec_fetcher.rb +0 -338
  540. data/test/rubygems/test_gem_specification.rb +0 -3856
  541. data/test/rubygems/test_gem_stream_ui.rb +0 -255
  542. data/test/rubygems/test_gem_stub_specification.rb +0 -278
  543. data/test/rubygems/test_gem_text.rb +0 -103
  544. data/test/rubygems/test_gem_uninstaller.rb +0 -675
  545. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -31
  546. data/test/rubygems/test_gem_update_suggestion.rb +0 -209
  547. data/test/rubygems/test_gem_uri.rb +0 -41
  548. data/test/rubygems/test_gem_uri_formatter.rb +0 -27
  549. data/test/rubygems/test_gem_util.rb +0 -91
  550. data/test/rubygems/test_gem_validator.rb +0 -42
  551. data/test/rubygems/test_gem_version.rb +0 -305
  552. data/test/rubygems/test_gem_version_option.rb +0 -165
  553. data/test/rubygems/test_kernel.rb +0 -124
  554. data/test/rubygems/test_project_sanity.rb +0 -49
  555. data/test/rubygems/test_remote_fetch_error.rb +0 -20
  556. data/test/rubygems/test_require.rb +0 -732
  557. data/test/rubygems/test_rubygems.rb +0 -76
  558. data/test/rubygems/test_webauthn_listener.rb +0 -143
  559. data/test/rubygems/test_webauthn_listener_response.rb +0 -93
  560. data/test/rubygems/test_webauthn_poller.rb +0 -124
  561. data/test/rubygems/utilities.rb +0 -436
  562. data/test/rubygems/wrong_key_cert.pem +0 -19
  563. data/test/rubygems/wrong_key_cert_32.pem +0 -19
  564. data/test/test_changelog_generator.rb +0 -17
@@ -13,15 +13,22 @@ class Gem::Platform
13
13
  attr_accessor :cpu, :os, :version
14
14
 
15
15
  def self.local
16
- arch = RbConfig::CONFIG["arch"]
17
- arch = "#{arch}_60" if arch =~ /mswin(?:32|64)$/
18
- @local ||= new(arch)
16
+ @local ||= begin
17
+ arch = RbConfig::CONFIG["arch"]
18
+ arch = "#{arch}_60" if /mswin(?:32|64)$/.match?(arch)
19
+ new(arch)
20
+ end
19
21
  end
20
22
 
21
23
  def self.match(platform)
22
24
  match_platforms?(platform, Gem.platforms)
23
25
  end
24
26
 
27
+ class << self
28
+ extend Gem::Deprecate
29
+ rubygems_deprecate :match, "Gem::Platform.match_spec? or match_gem?"
30
+ end
31
+
25
32
  def self.match_platforms?(platform, platforms)
26
33
  platform = Gem::Platform.new(platform) unless platform.is_a?(Gem::Platform)
27
34
  platforms.any? do |local_platform|
@@ -36,10 +43,20 @@ class Gem::Platform
36
43
  match_gem?(spec.platform, spec.name)
37
44
  end
38
45
 
39
- def self.match_gem?(platform, gem_name)
40
- # Note: this method might be redefined by Ruby implementations to
41
- # customize behavior per RUBY_ENGINE, gem_name or other criteria.
42
- match_platforms?(platform, Gem.platforms)
46
+ if RUBY_ENGINE == "truffleruby"
47
+ def self.match_gem?(platform, gem_name)
48
+ raise "Not a string: #{gem_name.inspect}" unless String === gem_name
49
+
50
+ if REUSE_AS_BINARY_ON_TRUFFLERUBY.include?(gem_name)
51
+ match_platforms?(platform, [Gem::Platform::RUBY, Gem::Platform.local])
52
+ else
53
+ match_platforms?(platform, Gem.platforms)
54
+ end
55
+ end
56
+ else
57
+ def self.match_gem?(platform, gem_name)
58
+ match_platforms?(platform, Gem.platforms)
59
+ end
43
60
  end
44
61
 
45
62
  def self.sort_priority(platform)
@@ -72,7 +89,7 @@ class Gem::Platform
72
89
  when String then
73
90
  arch = arch.split "-"
74
91
 
75
- if arch.length > 2 && arch.last !~ /\d+(\.\d+)?$/ # reassemble x86-linux-{libc}
92
+ if arch.length > 2 && !arch.last.match?(/\d+(\.\d+)?$/) # reassemble x86-linux-{libc}
76
93
  extra = arch.pop
77
94
  arch.last << "-#{extra}"
78
95
  end
@@ -80,11 +97,11 @@ class Gem::Platform
80
97
  cpu = arch.shift
81
98
 
82
99
  @cpu = case cpu
83
- when /i\d86/ then "x86"
84
- else cpu
100
+ when /i\d86/ then "x86"
101
+ else cpu
85
102
  end
86
103
 
87
- if arch.length == 2 && arch.last =~ /^\d+(\.\d+)?$/ # for command-line
104
+ if arch.length == 2 && arch.last.match?(/^\d+(\.\d+)?$/) # for command-line
88
105
  @os, @version = arch
89
106
  return
90
107
  end
@@ -96,30 +113,30 @@ class Gem::Platform
96
113
  end # legacy jruby
97
114
 
98
115
  @os, @version = case os
99
- when /aix(\d+)?/ then [ "aix", $1 ]
100
- when /cygwin/ then [ "cygwin", nil ]
101
- when /darwin(\d+)?/ then [ "darwin", $1 ]
102
- when /^macruby$/ then [ "macruby", nil ]
103
- when /freebsd(\d+)?/ then [ "freebsd", $1 ]
104
- when /^java$/, /^jruby$/ then [ "java", nil ]
105
- when /^java([\d.]*)/ then [ "java", $1 ]
106
- when /^dalvik(\d+)?$/ then [ "dalvik", $1 ]
107
- when /^dotnet$/ then [ "dotnet", nil ]
108
- when /^dotnet([\d.]*)/ then [ "dotnet", $1 ]
109
- when /linux-?(\w+)?/ then [ "linux", $1 ]
110
- when /mingw32/ then [ "mingw32", nil ]
111
- when /mingw-?(\w+)?/ then [ "mingw", $1 ]
112
- when /(mswin\d+)(\_(\d+))?/ then
113
- os = $1
114
- version = $3
115
- @cpu = "x86" if @cpu.nil? && os =~ /32$/
116
- [os, version]
117
- when /netbsdelf/ then [ "netbsdelf", nil ]
118
- when /openbsd(\d+\.\d+)?/ then [ "openbsd", $1 ]
119
- when /solaris(\d+\.\d+)?/ then [ "solaris", $1 ]
120
- # test
121
- when /^(\w+_platform)(\d+)?/ then [ $1, $2 ]
122
- else [ "unknown", nil ]
116
+ when /aix(\d+)?/ then ["aix", $1]
117
+ when /cygwin/ then ["cygwin", nil]
118
+ when /darwin(\d+)?/ then ["darwin", $1]
119
+ when /^macruby$/ then ["macruby", nil]
120
+ when /freebsd(\d+)?/ then ["freebsd", $1]
121
+ when /^java$/, /^jruby$/ then ["java", nil]
122
+ when /^java([\d.]*)/ then ["java", $1]
123
+ when /^dalvik(\d+)?$/ then ["dalvik", $1]
124
+ when /^dotnet$/ then ["dotnet", nil]
125
+ when /^dotnet([\d.]*)/ then ["dotnet", $1]
126
+ when /linux-?(\w+)?/ then ["linux", $1]
127
+ when /mingw32/ then ["mingw32", nil]
128
+ when /mingw-?(\w+)?/ then ["mingw", $1]
129
+ when /(mswin\d+)(\_(\d+))?/ then
130
+ os = $1
131
+ version = $3
132
+ @cpu = "x86" if @cpu.nil? && os =~ /32$/
133
+ [os, version]
134
+ when /netbsdelf/ then ["netbsdelf", nil]
135
+ when /openbsd(\d+\.\d+)?/ then ["openbsd", $1]
136
+ when /solaris(\d+\.\d+)?/ then ["solaris", $1]
137
+ # test
138
+ when /^(\w+_platform)(\d+)?/ then [$1, $2]
139
+ else ["unknown", nil]
123
140
  end
124
141
  when Gem::Platform then
125
142
  @cpu = arch.cpu
@@ -146,7 +163,7 @@ class Gem::Platform
146
163
  self.class === other && to_a == other.to_a
147
164
  end
148
165
 
149
- alias :eql? :==
166
+ alias_method :eql?, :==
150
167
 
151
168
  def hash # :nodoc:
152
169
  to_a.hash
@@ -214,18 +231,18 @@ class Gem::Platform
214
231
  when String then
215
232
  # This data is from http://gems.rubyforge.org/gems/yaml on 19 Aug 2007
216
233
  other = case other
217
- when /^i686-darwin(\d)/ then ["x86", "darwin", $1 ]
218
- when /^i\d86-linux/ then ["x86", "linux", nil ]
219
- when "java", "jruby" then [nil, "java", nil ]
220
- when /^dalvik(\d+)?$/ then [nil, "dalvik", $1 ]
221
- when /dotnet(\-(\d+\.\d+))?/ then ["universal","dotnet", $2 ]
222
- when /mswin32(\_(\d+))?/ then ["x86", "mswin32", $2 ]
223
- when /mswin64(\_(\d+))?/ then ["x64", "mswin64", $2 ]
224
- when "powerpc-darwin" then ["powerpc", "darwin", nil ]
225
- when /powerpc-darwin(\d)/ then ["powerpc", "darwin", $1 ]
226
- when /sparc-solaris2.8/ then ["sparc", "solaris", "2.8" ]
227
- when /universal-darwin(\d)/ then ["universal", "darwin", $1 ]
228
- else other
234
+ when /^i686-darwin(\d)/ then ["x86", "darwin", $1]
235
+ when /^i\d86-linux/ then ["x86", "linux", nil]
236
+ when "java", "jruby" then [nil, "java", nil]
237
+ when /^dalvik(\d+)?$/ then [nil, "dalvik", $1]
238
+ when /dotnet(\-(\d+\.\d+))?/ then ["universal","dotnet", $2]
239
+ when /mswin32(\_(\d+))?/ then ["x86", "mswin32", $2]
240
+ when /mswin64(\_(\d+))?/ then ["x64", "mswin64", $2]
241
+ when "powerpc-darwin" then ["powerpc", "darwin", nil]
242
+ when /powerpc-darwin(\d)/ then ["powerpc", "darwin", $1]
243
+ when /sparc-solaris2.8/ then ["sparc", "solaris", "2.8"]
244
+ when /universal-darwin(\d)/ then ["universal", "darwin", $1]
245
+ else other
229
246
  end
230
247
 
231
248
  other = Gem::Platform.new other
@@ -6,7 +6,6 @@ require_relative "version_option"
6
6
  require_relative "text"
7
7
 
8
8
  module Gem::QueryUtils
9
-
10
9
  include Gem::Text
11
10
  include Gem::LocalRemoteOptions
12
11
  include Gem::VersionOption
@@ -17,7 +16,7 @@ module Gem::QueryUtils
17
16
  options[:installed] = value
18
17
  end
19
18
 
20
- add_option("-I", "Equivalent to --no-installed") do |value, options|
19
+ add_option("-I", "Equivalent to --no-installed") do |_value, options|
21
20
  options[:installed] = false
22
21
  end
23
22
 
@@ -119,7 +118,7 @@ module Gem::QueryUtils
119
118
  end
120
119
  end
121
120
 
122
- #Guts of original execute
121
+ # Guts of original execute
123
122
  def show_gems(name)
124
123
  show_local_gems(name) if local?
125
124
  show_remote_gems(name) if remote?
@@ -197,7 +196,7 @@ module Gem::QueryUtils
197
196
  end
198
197
 
199
198
  def output_versions(output, versions)
200
- versions.each do |gem_name, matching_tuples|
199
+ versions.each do |_gem_name, matching_tuples|
201
200
  matching_tuples = matching_tuples.sort_by {|n,_| n.version }.reverse
202
201
 
203
202
  platforms = Hash.new {|h,version| h[version] = [] }
@@ -243,7 +242,7 @@ module Gem::QueryUtils
243
242
 
244
243
  list =
245
244
  if platforms.empty? || options[:details]
246
- name_tuples.map {|n| n.version }.uniq
245
+ name_tuples.map(&:version).uniq
247
246
  else
248
247
  platforms.sort.reverse.map do |version, pls|
249
248
  out = version.to_s
@@ -312,8 +311,8 @@ module Gem::QueryUtils
312
311
  label = "Installed at"
313
312
  specs.each do |s|
314
313
  version = s.version.to_s
315
- version << ", default" if s.default_gem?
316
- entry << "\n" << " #{label} (#{version}): #{s.base_dir}"
314
+ default = ", default" if s.default_gem?
315
+ entry << "\n" << " #{label} (#{version}#{default}): #{s.base_dir}"
317
316
  label = " " * label.length
318
317
  end
319
318
  end
@@ -332,7 +331,7 @@ module Gem::QueryUtils
332
331
  else
333
332
  entry << " Platforms:\n"
334
333
 
335
- sorted_platforms = platforms.sort_by {|version,| version }
334
+ sorted_platforms = platforms.sort
336
335
 
337
336
  sorted_platforms.each do |version, pls|
338
337
  label = " #{version}: "
@@ -347,5 +346,4 @@ module Gem::QueryUtils
347
346
  summary = truncate_text(spec.summary, "the summary for #{spec.full_name}")
348
347
  entry << "\n\n" << format_text(summary, 68, 4)
349
348
  end
350
-
351
349
  end
@@ -53,7 +53,7 @@ class Gem::RemoteFetcher
53
53
  # Cached RemoteFetcher instance.
54
54
 
55
55
  def self.fetcher
56
- @fetcher ||= self.new Gem.configuration[:http_proxy]
56
+ @fetcher ||= new Gem.configuration[:http_proxy]
57
57
  end
58
58
 
59
59
  attr_accessor :headers
@@ -74,7 +74,7 @@ class Gem::RemoteFetcher
74
74
 
75
75
  def initialize(proxy=nil, dns=nil, headers={})
76
76
  require_relative "core_ext/tcpsocket_init" if Gem.configuration.ipv4_fallback_enabled
77
- require "net/http"
77
+ require_relative "net/http"
78
78
  require "stringio"
79
79
  require "uri"
80
80
 
@@ -115,7 +115,7 @@ class Gem::RemoteFetcher
115
115
  cache_dir =
116
116
  if Dir.pwd == install_dir # see fetch_command
117
117
  install_dir
118
- elsif File.writable?(install_cache_dir) || (File.writable?(install_dir) && (!File.exist?(install_cache_dir)))
118
+ elsif File.writable?(install_cache_dir) || (File.writable?(install_dir) && !File.exist?(install_cache_dir))
119
119
  install_cache_dir
120
120
  else
121
121
  File.join Gem.user_dir, "cache"
@@ -136,7 +136,7 @@ class Gem::RemoteFetcher
136
136
  scheme = source_uri.scheme
137
137
 
138
138
  # URI.parse gets confused by MS Windows paths with forward slashes.
139
- scheme = nil if scheme =~ /^[a-z]$/i
139
+ scheme = nil if /^[a-z]$/i.match?(scheme)
140
140
 
141
141
  # REFACTOR: split this up and dispatch on scheme (eg download_http)
142
142
  # REFACTOR: be sure to clean up fake fetcher when you do this... cleaner
@@ -148,7 +148,7 @@ class Gem::RemoteFetcher
148
148
 
149
149
  remote_gem_path = source_uri + "gems/#{gem_file_name}"
150
150
 
151
- self.cache_update_path remote_gem_path, local_gem_path
151
+ cache_update_path remote_gem_path, local_gem_path
152
152
  rescue FetchError
153
153
  raise if spec.original_platform == spec.platform
154
154
 
@@ -158,7 +158,7 @@ class Gem::RemoteFetcher
158
158
 
159
159
  remote_gem_path = source_uri + "gems/#{alternate_name}"
160
160
 
161
- self.cache_update_path remote_gem_path, local_gem_path
161
+ cache_update_path remote_gem_path, local_gem_path
162
162
  end
163
163
  end
164
164
  when "file" then
@@ -174,7 +174,7 @@ class Gem::RemoteFetcher
174
174
  end
175
175
 
176
176
  verbose "Using local gem #{local_gem_path}"
177
- when nil then # TODO test for local overriding cache
177
+ when nil then # TODO: test for local overriding cache
178
178
  source_path = if Gem.win_platform? && source_uri.scheme &&
179
179
  !source_uri.path.include?(":")
180
180
  "#{source_uri.scheme}:#{source_uri.path}"
@@ -210,17 +210,17 @@ class Gem::RemoteFetcher
210
210
  # HTTP Fetcher. Dispatched by +fetch_path+. Use it instead.
211
211
 
212
212
  def fetch_http(uri, last_modified = nil, head = false, depth = 0)
213
- fetch_type = head ? Net::HTTP::Head : Net::HTTP::Get
213
+ fetch_type = head ? Gem::Net::HTTP::Head : Gem::Net::HTTP::Get
214
214
  response = request uri, fetch_type, last_modified do |req|
215
215
  headers.each {|k,v| req.add_field(k,v) }
216
216
  end
217
217
 
218
218
  case response
219
- when Net::HTTPOK, Net::HTTPNotModified then
219
+ when Gem::Net::HTTPOK, Gem::Net::HTTPNotModified then
220
220
  response.uri = uri
221
221
  head ? response : response.body
222
- when Net::HTTPMovedPermanently, Net::HTTPFound, Net::HTTPSeeOther,
223
- Net::HTTPTemporaryRedirect then
222
+ when Gem::Net::HTTPMovedPermanently, Gem::Net::HTTPFound, Gem::Net::HTTPSeeOther,
223
+ Gem::Net::HTTPTemporaryRedirect then
224
224
  raise FetchError.new("too many redirects", uri) if depth > 10
225
225
 
226
226
  unless location = response["Location"]
@@ -238,7 +238,7 @@ class Gem::RemoteFetcher
238
238
  end
239
239
  end
240
240
 
241
- alias :fetch_https :fetch_http
241
+ alias_method :fetch_https, :fetch_http
242
242
 
243
243
  ##
244
244
  # Downloads +uri+ and returns it as a String.
@@ -261,7 +261,7 @@ class Gem::RemoteFetcher
261
261
  end
262
262
 
263
263
  data
264
- rescue Timeout::Error, IOError, SocketError, SystemCallError,
264
+ rescue Gem::Timeout::Error, IOError, SocketError, SystemCallError,
265
265
  *(OpenSSL::SSL::SSLError if Gem::HAVE_OPENSSL) => e
266
266
  raise FetchError.new("#{e.class}: #{e}", uri)
267
267
  end
@@ -305,8 +305,8 @@ class Gem::RemoteFetcher
305
305
  end
306
306
 
307
307
  ##
308
- # Performs a Net::HTTP request of type +request_class+ on +uri+ returning
309
- # a Net::HTTP response object. request maintains a table of persistent
308
+ # Performs a Gem::Net::HTTP request of type +request_class+ on +uri+ returning
309
+ # a Gem::Net::HTTP response object. request maintains a table of persistent
310
310
  # connections to reduce connect overhead.
311
311
 
312
312
  def request(uri, request_class, last_modified = nil)
@@ -321,11 +321,11 @@ class Gem::RemoteFetcher
321
321
  end
322
322
 
323
323
  def https?(uri)
324
- uri.scheme.downcase == "https"
324
+ uri.scheme.casecmp("https").zero?
325
325
  end
326
326
 
327
327
  def close_all
328
- @pools.each_value {|pool| pool.close_all }
328
+ @pools.each_value(&:close_all)
329
329
  end
330
330
 
331
331
  private
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Gem::Request::ConnectionPools # :nodoc:
4
- @client = Net::HTTP
4
+ @client = Gem::Net::HTTP
5
5
 
6
6
  class << self
7
7
  attr_accessor :client
@@ -28,7 +28,7 @@ class Gem::Request::ConnectionPools # :nodoc:
28
28
  end
29
29
 
30
30
  def close_all
31
- @pools.each_value {|pool| pool.close_all }
31
+ @pools.each_value(&:close_all)
32
32
  end
33
33
 
34
34
  private
@@ -45,7 +45,7 @@ class Gem::Request::ConnectionPools # :nodoc:
45
45
  end
46
46
 
47
47
  def https?(uri)
48
- uri.scheme.downcase == "https"
48
+ uri.scheme.casecmp("https").zero?
49
49
  end
50
50
 
51
51
  def no_proxy?(host, env_no_proxy)
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "net/http"
3
+ require_relative "net/http"
4
4
  require_relative "user_interaction"
5
5
 
6
6
  class Gem::Request
@@ -36,8 +36,13 @@ class Gem::Request
36
36
  @connection_pool = pool
37
37
  end
38
38
 
39
- def proxy_uri; @connection_pool.proxy_uri; end
40
- def cert_files; @connection_pool.cert_files; end
39
+ def proxy_uri
40
+ @connection_pool.proxy_uri
41
+ end
42
+
43
+ def cert_files
44
+ @connection_pool.cert_files
45
+ end
41
46
 
42
47
  def self.get_cert_files
43
48
  pattern = File.expand_path("./ssl_certs/*/*.pem", __dir__)
@@ -160,23 +165,22 @@ class Gem::Request
160
165
  # environment variables.
161
166
 
162
167
  def self.get_proxy_from_env(scheme = "http")
163
- _scheme = scheme.downcase
164
- _SCHEME = scheme.upcase
165
- env_proxy = ENV["#{_scheme}_proxy"] || ENV["#{_SCHEME}_PROXY"]
168
+ downcase_scheme = scheme.downcase
169
+ upcase_scheme = scheme.upcase
170
+ env_proxy = ENV["#{downcase_scheme}_proxy"] || ENV["#{upcase_scheme}_PROXY"]
166
171
 
167
172
  no_env_proxy = env_proxy.nil? || env_proxy.empty?
168
173
 
169
174
  if no_env_proxy
170
- return (_scheme == "https" || _scheme == "http") ?
171
- :no_proxy : get_proxy_from_env("http")
175
+ return ["https", "http"].include?(downcase_scheme) ? :no_proxy : get_proxy_from_env("http")
172
176
  end
173
177
 
174
178
  require "uri"
175
179
  uri = URI(Gem::UriFormatter.new(env_proxy).normalize)
176
180
 
177
181
  if uri && uri.user.nil? && uri.password.nil?
178
- user = ENV["#{_scheme}_proxy_user"] || ENV["#{_SCHEME}_PROXY_USER"]
179
- password = ENV["#{_scheme}_proxy_pass"] || ENV["#{_SCHEME}_PROXY_PASS"]
182
+ user = ENV["#{downcase_scheme}_proxy_user"] || ENV["#{upcase_scheme}_PROXY_USER"]
183
+ password = ENV["#{downcase_scheme}_proxy_pass"] || ENV["#{upcase_scheme}_PROXY_PASS"]
180
184
 
181
185
  uri.user = Gem::UriFormatter.new(user).escape
182
186
  uri.password = Gem::UriFormatter.new(password).escape
@@ -201,7 +205,7 @@ class Gem::Request
201
205
  if request.response_body_permitted? && file_name =~ /\.gem$/
202
206
  reporter = ui.download_reporter
203
207
  response = connection.request(request) do |incomplete_response|
204
- if Net::HTTPOK === incomplete_response
208
+ if Gem::Net::HTTPOK === incomplete_response
205
209
  reporter.fetch(file_name, incomplete_response.content_length)
206
210
  downloaded = 0
207
211
  data = String.new
@@ -224,8 +228,7 @@ class Gem::Request
224
228
  end
225
229
 
226
230
  verbose "#{response.code} #{response.message}"
227
-
228
- rescue Net::HTTPBadResponse
231
+ rescue Gem::Net::HTTPBadResponse
229
232
  verbose "bad response"
230
233
 
231
234
  reset connection
@@ -234,14 +237,14 @@ class Gem::Request
234
237
 
235
238
  bad_response = true
236
239
  retry
237
- rescue Net::HTTPFatalError
240
+ rescue Gem::Net::HTTPFatalError
238
241
  verbose "fatal error"
239
242
 
240
243
  raise Gem::RemoteFetcher::FetchError.new("fatal error", @uri)
241
- # HACK work around EOFError bug in Net::HTTP
244
+ # HACK: work around EOFError bug in Gem::Net::HTTP
242
245
  # NOTE Errno::ECONNABORTED raised a lot on Windows, and make impossible
243
246
  # to install gems.
244
- rescue EOFError, Timeout::Error,
247
+ rescue EOFError, Gem::Timeout::Error,
245
248
  Errno::ECONNABORTED, Errno::ECONNRESET, Errno::EPIPE
246
249
 
247
250
  requests = @requests[connection.object_id]
@@ -279,7 +282,7 @@ class Gem::Request
279
282
  ua << " Ruby/#{ruby_version} (#{RUBY_RELEASE_DATE}"
280
283
  if RUBY_PATCHLEVEL >= 0
281
284
  ua << " patchlevel #{RUBY_PATCHLEVEL}"
282
- elsif defined?(RUBY_REVISION)
285
+ else
283
286
  ua << " revision #{RUBY_REVISION}"
284
287
  end
285
288
  ua << ")"