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
@@ -21,7 +21,7 @@ class Gem::Commands::UpdateCommand < Gem::Command
21
21
 
22
22
  def initialize
23
23
  options = {
24
- :force => false,
24
+ force: false,
25
25
  }
26
26
 
27
27
  options.merge!(install_update_options)
@@ -37,10 +37,10 @@ class Gem::Commands::UpdateCommand < Gem::Command
37
37
  end
38
38
 
39
39
  add_option("--system [VERSION]", Gem::Version,
40
- "Update the RubyGems system software") do |value, options|
41
- value = true unless value
40
+ "Update the RubyGems system software") do |value, opts|
41
+ value ||= true
42
42
 
43
- options[:system] = value
43
+ opts[:system] = value
44
44
  end
45
45
 
46
46
  add_local_remote_options
@@ -120,7 +120,7 @@ command to remove old versions.
120
120
  updated = update_gems gems_to_update
121
121
 
122
122
  installed_names = highest_installed_gems.keys
123
- updated_names = updated.map {|spec| spec.name }
123
+ updated_names = updated.map(&:name)
124
124
  not_updated_names = options[:args].uniq - updated_names
125
125
  not_installed_names = not_updated_names - installed_names
126
126
  up_to_date_names = not_updated_names - not_installed_names
@@ -186,7 +186,9 @@ command to remove old versions.
186
186
  system Gem.ruby, "--disable-gems", "setup.rb", *args
187
187
  end
188
188
 
189
- say "RubyGems system software updated" if installed unless options[:silent]
189
+ unless options[:silent]
190
+ say "RubyGems system software updated" if installed
191
+ end
190
192
  end
191
193
  end
192
194
 
@@ -231,7 +233,7 @@ command to remove old versions.
231
233
  highest_remote_tup = highest_remote_name_tuple(rubygems_update)
232
234
  target = highest_remote_tup ? highest_remote_tup.version : version
233
235
 
234
- return target, requirement
236
+ [target, requirement]
235
237
  end
236
238
 
237
239
  def update_gem(name, version = Gem::Requirement.default)
@@ -301,7 +303,7 @@ command to remove old versions.
301
303
  def which_to_update(highest_installed_gems, gem_names)
302
304
  result = []
303
305
 
304
- highest_installed_gems.each do |l_name, l_spec|
306
+ highest_installed_gems.each do |_l_name, l_spec|
305
307
  next if !gem_names.empty? &&
306
308
  gem_names.none? {|name| name == l_spec.name }
307
309
 
@@ -326,12 +328,8 @@ command to remove old versions.
326
328
  @oldest_supported_version ||=
327
329
  if Gem.ruby_version > Gem::Version.new("3.1.a")
328
330
  Gem::Version.new("3.3.3")
329
- elsif Gem.ruby_version > Gem::Version.new("3.0.a")
330
- Gem::Version.new("3.2.3")
331
- elsif Gem.ruby_version > Gem::Version.new("2.7.a")
332
- Gem::Version.new("3.1.2")
333
331
  else
334
- Gem::Version.new("3.0.1")
332
+ Gem::Version.new("3.2.3")
335
333
  end
336
334
  end
337
335
  end
@@ -5,7 +5,7 @@ require_relative "../command"
5
5
  class Gem::Commands::WhichCommand < Gem::Command
6
6
  def initialize
7
7
  super "which", "Find the location of a library file you can require",
8
- :search_gems_first => false, :show_all => false
8
+ search_gems_first: false, show_all: false
9
9
 
10
10
  add_option "-a", "--[no-]all", "show all matching files" do |show_all, options|
11
11
  options[:show_all] = show_all
@@ -62,7 +62,7 @@ data you will need to change them immediately and yank your gem.
62
62
  end
63
63
 
64
64
  def yank_gem(version, platform)
65
- say "Yanking gem from #{self.host}..."
65
+ say "Yanking gem from #{host}..."
66
66
  args = [:delete, version, platform, "api/v1/gems/yank"]
67
67
  response = yank_api_request(*args)
68
68
 
@@ -26,17 +26,16 @@ module Gem
26
26
  rubylibdir
27
27
  ].freeze
28
28
 
29
- unless defined?(ConfigMap)
29
+ if defined?(ConfigMap)
30
+ RbConfigPriorities.each do |key|
31
+ ConfigMap[key.to_sym] = RbConfig::CONFIG[key]
32
+ end
33
+ else
30
34
  ##
31
35
  # Configuration settings from ::RbConfig
32
36
  ConfigMap = Hash.new do |cm, key|
33
37
  cm[key] = RbConfig::CONFIG[key.to_s]
34
38
  end
35
39
  deprecate_constant(:ConfigMap)
36
- else
37
- RbConfigPriorities.each do |key|
38
- ConfigMap[key.to_sym] = RbConfig::CONFIG[key]
39
- end
40
40
  end
41
-
42
41
  end
@@ -188,10 +188,10 @@ class Gem::ConfigFile
188
188
  operating_system_config = Marshal.load Marshal.dump(OPERATING_SYSTEM_DEFAULTS)
189
189
  platform_config = Marshal.load Marshal.dump(PLATFORM_DEFAULTS)
190
190
  system_config = load_file SYSTEM_WIDE_CONFIG_FILE
191
- user_config = load_file config_file_name.dup.tap(&Gem::UNTAINT)
191
+ user_config = load_file config_file_name
192
192
 
193
- environment_config = (ENV["GEMRC"] || "")
194
- .split(File::PATH_SEPARATOR).inject({}) do |result, file|
193
+ environment_config = (ENV["GEMRC"] || "").
194
+ split(File::PATH_SEPARATOR).inject({}) do |result, file|
195
195
  result.merge load_file file
196
196
  end
197
197
 
@@ -202,7 +202,7 @@ class Gem::ConfigFile
202
202
  @hash = @hash.merge environment_config
203
203
  end
204
204
 
205
- # HACK these override command-line args, which is bad
205
+ # HACK: these override command-line args, which is bad
206
206
  @backtrace = @hash[:backtrace] if @hash.key? :backtrace
207
207
  @bulk_threshold = @hash[:bulk_threshold] if @hash.key? :bulk_threshold
208
208
  @home = @hash[:gemhome] if @hash.key? :gemhome
@@ -473,13 +473,13 @@ if you believe they were disclosed to a third party.
473
473
  yaml_hash[:ssl_client_cert] =
474
474
  @hash[:ssl_client_cert] if @hash.key? :ssl_client_cert
475
475
 
476
- keys = yaml_hash.keys.map {|key| key.to_s }
476
+ keys = yaml_hash.keys.map(&:to_s)
477
477
  keys << "debug"
478
478
  re = Regexp.union(*keys)
479
479
 
480
480
  @hash.each do |key, value|
481
481
  key = key.to_s
482
- next if key =~ re
482
+ next if key&.match?(re)
483
483
  yaml_hash[key.to_s] = value
484
484
  end
485
485
 
@@ -581,7 +581,7 @@ if you believe they were disclosed to a third party.
581
581
  need_config_file_name = false
582
582
  elsif arg =~ /^--config-file=(.*)/
583
583
  @config_file_name = $1
584
- elsif arg =~ /^--config-file$/
584
+ elsif /^--config-file$/.match?(arg)
585
585
  need_config_file_name = true
586
586
  end
587
587
  end
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Kernel
4
-
5
4
  ##
6
5
  # Use Kernel#gem to activate a specific version of +gem_name+.
7
6
  #
@@ -66,5 +65,4 @@ module Kernel
66
65
  end
67
66
 
68
67
  private :gem
69
-
70
68
  end
@@ -9,13 +9,12 @@
9
9
  require "monitor"
10
10
 
11
11
  module Kernel
12
-
13
12
  RUBYGEMS_ACTIVATION_MONITOR = Monitor.new # :nodoc:
14
13
 
15
14
  # Make sure we have a reference to Ruby's original Kernel#require
16
15
  unless defined?(gem_original_require)
17
16
  # :stopdoc:
18
- alias gem_original_require require
17
+ alias_method :gem_original_require, :require
19
18
  private :gem_original_require
20
19
  # :startdoc:
21
20
  end
@@ -37,53 +36,36 @@ module Kernel
37
36
  def require(path) # :doc:
38
37
  return gem_original_require(path) unless Gem.discover_gems_on_require
39
38
 
40
- begin
41
- RUBYGEMS_ACTIVATION_MONITOR.enter
42
-
43
- path = path.to_path if path.respond_to? :to_path
39
+ RUBYGEMS_ACTIVATION_MONITOR.synchronize do
40
+ path = File.path(path)
44
41
 
45
42
  if spec = Gem.find_unresolved_default_spec(path)
46
43
  # Ensure -I beats a default gem
47
44
  resolved_path = begin
48
45
  rp = nil
49
46
  load_path_check_index = Gem.load_path_insert_index - Gem.activated_gem_paths
50
- Gem.suffixes.each do |s|
51
- $LOAD_PATH[0...load_path_check_index].each do |lp|
52
- safe_lp = lp.dup.tap(&Gem::UNTAINT)
53
- begin
54
- if File.symlink? safe_lp # for backward compatibility
55
- next
56
- end
57
- rescue SecurityError
58
- RUBYGEMS_ACTIVATION_MONITOR.exit
59
- raise
47
+ Gem.suffixes.find do |s|
48
+ $LOAD_PATH[0...load_path_check_index].find do |lp|
49
+ if File.symlink? lp # for backward compatibility
50
+ next
60
51
  end
61
52
 
62
- full_path = File.expand_path(File.join(safe_lp, "#{path}#{s}"))
63
- if File.file?(full_path)
64
- rp = full_path
65
- break
66
- end
53
+ full_path = File.expand_path(File.join(lp, "#{path}#{s}"))
54
+ rp = full_path if File.file?(full_path)
67
55
  end
68
- break if rp
69
56
  end
70
57
  rp
71
58
  end
72
59
 
73
- begin
74
- Kernel.send(:gem, spec.name, Gem::Requirement.default_prerelease)
75
- rescue Exception
76
- RUBYGEMS_ACTIVATION_MONITOR.exit
77
- raise
78
- end unless resolved_path
60
+ Kernel.send(:gem, spec.name, Gem::Requirement.default_prerelease) unless
61
+ resolved_path
79
62
  end
80
63
 
81
64
  # If there are no unresolved deps, then we can use just try
82
65
  # normal require handle loading a gem from the rescue below.
83
66
 
84
67
  if Gem::Specification.unresolved_deps.empty?
85
- RUBYGEMS_ACTIVATION_MONITOR.exit
86
- return gem_original_require(path)
68
+ next
87
69
  end
88
70
 
89
71
  # If +path+ is for a gem that has already been loaded, don't
@@ -93,8 +75,7 @@ module Kernel
93
75
  # TODO request access to the C implementation of this to speed up RubyGems
94
76
 
95
77
  if Gem::Specification.find_active_stub_by_path(path)
96
- RUBYGEMS_ACTIVATION_MONITOR.exit
97
- return gem_original_require(path)
78
+ next
98
79
  end
99
80
 
100
81
  # Attempt to find +path+ in any unresolved gems...
@@ -114,9 +95,7 @@ module Kernel
114
95
  if found_specs.empty?
115
96
  found_specs = Gem::Specification.find_in_unresolved_tree path
116
97
 
117
- found_specs.each do |found_spec|
118
- found_spec.activate
119
- end
98
+ found_specs.each(&:activate)
120
99
 
121
100
  # We found +path+ directly in an unresolved gem. Now we figure out, of
122
101
  # the possible found specs, which one we should activate.
@@ -127,7 +106,6 @@ module Kernel
127
106
  names = found_specs.map(&:name).uniq
128
107
 
129
108
  if names.size > 1
130
- RUBYGEMS_ACTIVATION_MONITOR.exit
131
109
  raise Gem::LoadError, "#{path} found in multiple gems: #{names.join ", "}"
132
110
  end
133
111
 
@@ -138,26 +116,20 @@ module Kernel
138
116
  unless valid
139
117
  le = Gem::LoadError.new "unable to find a version of '#{names.first}' to activate"
140
118
  le.name = names.first
141
- RUBYGEMS_ACTIVATION_MONITOR.exit
142
119
  raise le
143
120
  end
144
121
 
145
122
  valid.activate
146
123
  end
124
+ end
147
125
 
148
- RUBYGEMS_ACTIVATION_MONITOR.exit
149
- return gem_original_require(path)
126
+ begin
127
+ gem_original_require(path)
150
128
  rescue LoadError => load_error
151
- if load_error.path == path
152
- RUBYGEMS_ACTIVATION_MONITOR.enter
153
-
154
- begin
155
- require_again = Gem.try_activate(path)
156
- ensure
157
- RUBYGEMS_ACTIVATION_MONITOR.exit
158
- end
129
+ if load_error.path == path &&
130
+ RUBYGEMS_ACTIVATION_MONITOR.synchronize { Gem.try_activate(path) }
159
131
 
160
- return gem_original_require(path) if require_again
132
+ return gem_original_require(path)
161
133
  end
162
134
 
163
135
  raise load_error
@@ -165,5 +137,4 @@ module Kernel
165
137
  end
166
138
 
167
139
  private :require
168
-
169
140
  end
@@ -36,7 +36,7 @@ module Kernel
36
36
  start += 1
37
37
 
38
38
  next unless path = loc.path
39
- unless path.start_with?(rubygems_path) || path.start_with?("<internal:")
39
+ unless path.start_with?(rubygems_path, "<internal:")
40
40
  # Non-rubygems frames
41
41
  uplevel -= 1
42
42
  end
@@ -19,7 +19,7 @@ module CoreExtensions
19
19
  cond_var = Thread::ConditionVariable.new
20
20
 
21
21
  Addrinfo.foreach(host, serv, nil, :STREAM) do |addr|
22
- Thread.report_on_exception = false if defined? Thread.report_on_exception = ()
22
+ Thread.report_on_exception = false
23
23
 
24
24
  threads << Thread.new(addr) do
25
25
  # give head start to ipv6 addresses
@@ -94,7 +94,7 @@ module Gem
94
94
  # The home directory for the user.
95
95
 
96
96
  def self.user_home
97
- @user_home ||= find_home.tap(&Gem::UNTAINT)
97
+ @user_home ||= find_home
98
98
  end
99
99
 
100
100
  ##
@@ -131,14 +131,14 @@ module Gem
131
131
  # The path to standard location of the user's .gemrc file.
132
132
 
133
133
  def self.config_file
134
- @config_file ||= find_config_file.tap(&Gem::UNTAINT)
134
+ @config_file ||= find_config_file
135
135
  end
136
136
 
137
137
  ##
138
138
  # The path to standard location of the user's state file.
139
139
 
140
140
  def self.state_file
141
- @state_file ||= File.join(Gem.state_home, "gem", "last_update_check").tap(&Gem::UNTAINT)
141
+ @state_file ||= File.join(Gem.state_home, "gem", "last_update_check")
142
142
  end
143
143
 
144
144
  ##
@@ -235,6 +235,18 @@ module Gem
235
235
  default_cert_path
236
236
  end
237
237
 
238
+ ##
239
+ # Enables automatic installation into user directory
240
+
241
+ def self.default_user_install # :nodoc:
242
+ if !ENV.key?("GEM_HOME") && (File.exist?(Gem.dir) && !File.writable?(Gem.dir))
243
+ Gem.ui.say "Defaulting to user installation because default installation directory (#{Gem.dir}) is not writable."
244
+ return true
245
+ end
246
+
247
+ false
248
+ end
249
+
238
250
  ##
239
251
  # Install extensions into lib as well as into the extension directory.
240
252
 
@@ -46,10 +46,10 @@ class Gem::Dependency
46
46
  end
47
47
 
48
48
  type = Symbol === requirements.last ? requirements.pop : :runtime
49
- requirements = requirements.first if 1 == requirements.length # unpack
49
+ requirements = requirements.first if requirements.length == 1 # unpack
50
50
 
51
51
  unless TYPES.include? type
52
- raise ArgumentError, "Valid types are #{TYPES.inspect}, " +
52
+ raise ArgumentError, "Valid types are #{TYPES.inspect}, " \
53
53
  "not #{type.inspect}"
54
54
  end
55
55
 
@@ -74,11 +74,9 @@ class Gem::Dependency
74
74
 
75
75
  def inspect # :nodoc:
76
76
  if prerelease?
77
- "<%s type=%p name=%p requirements=%p prerelease=ok>" %
78
- [self.class, self.type, self.name, requirement.to_s]
77
+ format("<%s type=%p name=%p requirements=%p prerelease=ok>", self.class, type, name, requirement.to_s)
79
78
  else
80
- "<%s type=%p name=%p requirements=%p>" %
81
- [self.class, self.type, self.name, requirement.to_s]
79
+ format("<%s type=%p name=%p requirements=%p>", self.class, type, name, requirement.to_s)
82
80
  end
83
81
  end
84
82
 
@@ -169,16 +167,16 @@ class Gem::Dependency
169
167
 
170
168
  def ==(other) # :nodoc:
171
169
  Gem::Dependency === other &&
172
- self.name == other.name &&
173
- self.type == other.type &&
174
- self.requirement == other.requirement
170
+ name == other.name &&
171
+ type == other.type &&
172
+ requirement == other.requirement
175
173
  end
176
174
 
177
175
  ##
178
176
  # Dependencies are ordered by name.
179
177
 
180
178
  def <=>(other)
181
- self.name <=> other.name
179
+ name <=> other.name
182
180
  end
183
181
 
184
182
  ##
@@ -205,7 +203,7 @@ class Gem::Dependency
205
203
  requirement.satisfied_by? version
206
204
  end
207
205
 
208
- alias === =~
206
+ alias_method :===, :=~
209
207
 
210
208
  ##
211
209
  # :call-seq:
@@ -263,7 +261,7 @@ class Gem::Dependency
263
261
  end
264
262
 
265
263
  default = Gem::Requirement.default
266
- self_req = self.requirement
264
+ self_req = requirement
267
265
  other_req = other.requirement
268
266
 
269
267
  return self.class.new name, self_req if other_req == default
@@ -324,9 +322,9 @@ class Gem::Dependency
324
322
  end
325
323
 
326
324
  def to_spec
327
- matches = self.to_specs.compact
325
+ matches = to_specs.compact
328
326
 
329
- active = matches.find {|spec| spec.activated? }
327
+ active = matches.find(&:activated?)
330
328
  return active if active
331
329
 
332
330
  unless prerelease?
@@ -17,18 +17,18 @@ class Gem::DependencyInstaller
17
17
  extend Gem::Deprecate
18
18
 
19
19
  DEFAULT_OPTIONS = { # :nodoc:
20
- :env_shebang => false,
21
- :document => %w[ri],
22
- :domain => :both, # HACK dup
23
- :force => false,
24
- :format_executable => false, # HACK dup
25
- :ignore_dependencies => false,
26
- :prerelease => false,
27
- :security_policy => nil, # HACK NoSecurity requires OpenSSL. AlmostNo? Low?
28
- :wrappers => true,
29
- :build_args => nil,
30
- :build_docs_in_background => false,
31
- :install_as_default => false,
20
+ env_shebang: false,
21
+ document: %w[ri],
22
+ domain: :both, # HACK: dup
23
+ force: false,
24
+ format_executable: false, # HACK: dup
25
+ ignore_dependencies: false,
26
+ prerelease: false,
27
+ security_policy: nil, # HACK: NoSecurity requires OpenSSL. AlmostNo? Low?
28
+ wrappers: true,
29
+ build_args: nil,
30
+ build_docs_in_background: false,
31
+ install_as_default: false,
32
32
  }.freeze
33
33
 
34
34
  ##
@@ -66,7 +66,7 @@ class Gem::DependencyInstaller
66
66
  # :build_args:: See Gem::Installer::new
67
67
 
68
68
  def initialize(options = {})
69
- @only_install_dir = !!options[:install_dir]
69
+ @only_install_dir = !options[:install_dir].nil?
70
70
  @install_dir = options[:install_dir] || Gem.dir
71
71
  @build_root = options[:build_root]
72
72
 
@@ -177,7 +177,6 @@ class Gem::DependencyInstaller
177
177
  end
178
178
 
179
179
  set << specs
180
-
181
180
  rescue Gem::RemoteFetcher::FetchError => e
182
181
  # FIX if there is a problem talking to the network, we either need to always tell
183
182
  # the user (no really_verbose) or fail hard, not silently tell them that we just
@@ -229,22 +228,22 @@ class Gem::DependencyInstaller
229
228
  @installed_gems = []
230
229
 
231
230
  options = {
232
- :bin_dir => @bin_dir,
233
- :build_args => @build_args,
234
- :document => @document,
235
- :env_shebang => @env_shebang,
236
- :force => @force,
237
- :format_executable => @format_executable,
238
- :ignore_dependencies => @ignore_dependencies,
239
- :prerelease => @prerelease,
240
- :security_policy => @security_policy,
241
- :user_install => @user_install,
242
- :wrappers => @wrappers,
243
- :build_root => @build_root,
244
- :install_as_default => @install_as_default,
245
- :dir_mode => @dir_mode,
246
- :data_mode => @data_mode,
247
- :prog_mode => @prog_mode,
231
+ bin_dir: @bin_dir,
232
+ build_args: @build_args,
233
+ document: @document,
234
+ env_shebang: @env_shebang,
235
+ force: @force,
236
+ format_executable: @format_executable,
237
+ ignore_dependencies: @ignore_dependencies,
238
+ prerelease: @prerelease,
239
+ security_policy: @security_policy,
240
+ user_install: @user_install,
241
+ wrappers: @wrappers,
242
+ build_root: @build_root,
243
+ install_as_default: @install_as_default,
244
+ dir_mode: @dir_mode,
245
+ data_mode: @data_mode,
246
+ prog_mode: @prog_mode,
248
247
  }
249
248
  options[:install_dir] = @install_dir if @only_install_dir
250
249
 
@@ -292,7 +291,7 @@ class Gem::DependencyInstaller
292
291
  src = Gem::Source::SpecificFile.new dep_or_name
293
292
  installer_set.add_local dep_or_name, src.spec, src
294
293
  version = src.spec.version if version == Gem::Requirement.default
295
- elsif dep_or_name =~ /\.gem$/
294
+ elsif dep_or_name =~ /\.gem$/ # rubocop:disable Performance/RegexpMatch
296
295
  Dir[dep_or_name].each do |name|
297
296
  src = Gem::Source::SpecificFile.new name
298
297
  installer_set.add_local dep_or_name, src.spec, src
@@ -105,7 +105,7 @@ class Gem::DependencyList
105
105
  end
106
106
 
107
107
  def inspect # :nodoc:
108
- "%s %p>" % [super[0..-2], map {|s| s.full_name }]
108
+ format("%s %p>", super[0..-2], map(&:full_name))
109
109
  end
110
110
 
111
111
  ##
@@ -70,7 +70,6 @@
70
70
  # end
71
71
 
72
72
  module Gem::Deprecate
73
-
74
73
  def self.skip # :nodoc:
75
74
  @skip ||= false
76
75
  end
@@ -105,12 +104,13 @@ module Gem::Deprecate
105
104
  old = "_deprecated_#{name}"
106
105
  alias_method old, name
107
106
  define_method name do |*args, &block|
108
- klass = self.is_a? Module
107
+ klass = is_a? Module
109
108
  target = klass ? "#{self}." : "#{self.class}#"
110
- msg = [ "NOTE: #{target}#{name} is deprecated",
111
- repl == :none ? " with no replacement" : "; use #{repl} instead",
112
- ". It will be removed on or after %4d-%02d." % [year, month],
113
- "\n#{target}#{name} called from #{Gem.location_of_caller.join(":")}",
109
+ msg = [
110
+ "NOTE: #{target}#{name} is deprecated",
111
+ repl == :none ? " with no replacement" : "; use #{repl} instead",
112
+ format(". It will be removed on or after %4d-%02d.", year, month),
113
+ "\n#{target}#{name} called from #{Gem.location_of_caller.join(":")}",
114
114
  ]
115
115
  warn "#{msg.join}." unless Gem::Deprecate.skip
116
116
  send old, *args, &block
@@ -130,12 +130,13 @@ module Gem::Deprecate
130
130
  old = "_deprecated_#{name}"
131
131
  alias_method old, name
132
132
  define_method name do |*args, &block|
133
- klass = self.is_a? Module
133
+ klass = is_a? Module
134
134
  target = klass ? "#{self}." : "#{self.class}#"
135
- msg = [ "NOTE: #{target}#{name} is deprecated",
136
- replacement == :none ? " with no replacement" : "; use #{replacement} instead",
137
- ". It will be removed in Rubygems #{Gem::Deprecate.next_rubygems_major_version}",
138
- "\n#{target}#{name} called from #{Gem.location_of_caller.join(":")}",
135
+ msg = [
136
+ "NOTE: #{target}#{name} is deprecated",
137
+ replacement == :none ? " with no replacement" : "; use #{replacement} instead",
138
+ ". It will be removed in Rubygems #{Gem::Deprecate.next_rubygems_major_version}",
139
+ "\n#{target}#{name} called from #{Gem.location_of_caller.join(":")}",
139
140
  ]
140
141
  warn "#{msg.join}." unless Gem::Deprecate.skip
141
142
  send old, *args, &block
@@ -152,15 +153,15 @@ module Gem::Deprecate
152
153
  end
153
154
 
154
155
  define_method "deprecation_warning" do
155
- msg = [ "#{self.command} command is deprecated",
156
- ". It will be removed in Rubygems #{version}.\n",
156
+ msg = [
157
+ "#{command} command is deprecated",
158
+ ". It will be removed in Rubygems #{version}.\n",
157
159
  ]
158
160
 
159
- alert_warning "#{msg.join}" unless Gem::Deprecate.skip
161
+ alert_warning msg.join.to_s unless Gem::Deprecate.skip
160
162
  end
161
163
  end
162
164
  end
163
165
 
164
166
  module_function :rubygems_deprecate, :rubygems_deprecate_command, :skip_during
165
-
166
167
  end