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
@@ -53,7 +53,7 @@ class Gem::Doctor
53
53
  # Specs installed in this gem repository
54
54
 
55
55
  def installed_specs # :nodoc:
56
- @installed_specs ||= Gem::Specification.map {|s| s.full_name }
56
+ @installed_specs ||= Gem::Specification.map(&:full_name)
57
57
  end
58
58
 
59
59
  ##
@@ -75,7 +75,7 @@ class Gem::Doctor
75
75
  Gem.use_paths @gem_repository.to_s
76
76
 
77
77
  unless gem_repository?
78
- say "This directory does not appear to be a RubyGems repository, " +
78
+ say "This directory does not appear to be a RubyGems repository, " \
79
79
  "skipping"
80
80
  say
81
81
  return
@@ -104,16 +104,16 @@ class Gem::Doctor
104
104
  directory = File.join(@gem_repository, sub_directory)
105
105
 
106
106
  Dir.entries(directory).sort.each do |ent|
107
- next if ent == "." || ent == ".."
107
+ next if [".", ".."].include?(ent)
108
108
 
109
109
  child = File.join(directory, ent)
110
110
  next unless File.exist?(child)
111
111
 
112
112
  basename = File.basename(child, extension)
113
113
  next if installed_specs.include? basename
114
- next if /^rubygems-\d/ =~ basename
115
- next if "specifications" == sub_directory && "default" == basename
116
- next if "plugins" == sub_directory && Gem.plugin_suffix_regexp =~ (basename)
114
+ next if /^rubygems-\d/.match?(basename)
115
+ next if sub_directory == "specifications" && basename == "default"
116
+ next if sub_directory == "plugins" && Gem.plugin_suffix_regexp =~ (basename)
117
117
 
118
118
  type = File.directory?(child) ? "directory" : "file"
119
119
 
@@ -134,11 +134,7 @@ module Gem
134
134
  ##
135
135
  # A wordy description of the error.
136
136
  def wordy
137
- "Found %s (%s), but was for platform%s %s" %
138
- [@name,
139
- @version,
140
- @platforms.size == 1 ? "" : "s",
141
- @platforms.join(" ,")]
137
+ format("Found %s (%s), but was for platform%s %s", @name, @version, @platforms.size == 1 ? "" : "s", @platforms.join(" ,"))
142
138
  end
143
139
  end
144
140
 
@@ -175,6 +171,6 @@ module Gem
175
171
  ##
176
172
  # The "exception" alias allows you to call raise on a SourceFetchProblem.
177
173
 
178
- alias exception error
174
+ alias_method :exception, :error
179
175
  end
180
176
  end
@@ -172,6 +172,7 @@ class Gem::ImpossibleDependenciesError < Gem::Exception
172
172
  end
173
173
 
174
174
  class Gem::InstallError < Gem::Exception; end
175
+
175
176
  class Gem::RuntimeRequirementNotMetError < Gem::InstallError
176
177
  attr_accessor :suggestion
177
178
  def message
@@ -231,7 +232,7 @@ class Gem::SystemExitException < SystemExit
231
232
  ##
232
233
  # The exit code for the process
233
234
 
234
- alias exit_code status
235
+ alias_method :exit_code, :status
235
236
 
236
237
  ##
237
238
  # Creates a new SystemExitException with the given +exit_code+
@@ -27,19 +27,17 @@ class Gem::Ext::Builder
27
27
  # try to find make program from Ruby configure arguments first
28
28
  RbConfig::CONFIG["configure_args"] =~ /with-make-prog\=(\w+)/
29
29
  make_program_name = ENV["MAKE"] || ENV["make"] || $1
30
- unless make_program_name
31
- make_program_name = (RUBY_PLATFORM.include?("mswin")) ? "nmake" : "make"
32
- end
30
+ make_program_name ||= RUBY_PLATFORM.include?("mswin") ? "nmake" : "make"
33
31
  make_program = Shellwords.split(make_program_name)
34
32
 
35
33
  # The installation of the bundled gems is failed when DESTDIR is empty in mswin platform.
36
- destdir = (/\bnmake/i !~ make_program_name || ENV["DESTDIR"] && ENV["DESTDIR"] != "") ? "DESTDIR=%s" % ENV["DESTDIR"] : ""
34
+ destdir = /\bnmake/i !~ make_program_name || ENV["DESTDIR"] && ENV["DESTDIR"] != "" ? format("DESTDIR=%s", ENV["DESTDIR"]) : ""
37
35
 
38
36
  env = [destdir]
39
37
 
40
38
  if sitedir
41
- env << "sitearchdir=%s" % sitedir
42
- env << "sitelibdir=%s" % sitedir
39
+ env << format("sitearchdir=%s", sitedir)
40
+ env << format("sitelibdir=%s", sitedir)
43
41
  end
44
42
 
45
43
  targets.each do |target|
@@ -90,13 +88,20 @@ class Gem::Ext::Builder
90
88
  # Set $SOURCE_DATE_EPOCH for the subprocess.
91
89
  build_env = { "SOURCE_DATE_EPOCH" => Gem.source_date_epoch_string }.merge(env)
92
90
  output, status = begin
93
- Open3.capture2e(build_env, *command, :chdir => dir)
91
+ Open3.popen2e(build_env, *command, chdir: dir) do |_stdin, stdouterr, wait_thread|
92
+ output = String.new
93
+ while line = stdouterr.gets
94
+ output << line
95
+ if verbose
96
+ print line
97
+ end
98
+ end
99
+ [output, wait_thread.value]
100
+ end
94
101
  rescue StandardError => error
95
102
  raise Gem::InstallError, "#{command_name || class_name} failed#{error.message}"
96
103
  end
97
- if verbose
98
- puts output
99
- else
104
+ unless verbose
100
105
  results << output
101
106
  end
102
107
  ensure
@@ -198,7 +198,7 @@ class Gem::Ext::CargoBuilder < Gem::Ext::Builder
198
198
 
199
199
  output, status =
200
200
  begin
201
- Open3.capture2e(cargo, "metadata", "--no-deps", "--format-version", "1", :chdir => cargo_dir)
201
+ Open3.capture2e(cargo, "metadata", "--no-deps", "--format-version", "1", chdir: cargo_dir)
202
202
  rescue StandardError => error
203
203
  raise Gem::InstallError, "cargo metadata failed #{error.message}"
204
204
  end
@@ -246,10 +246,10 @@ EOF
246
246
  end
247
247
 
248
248
  def rustc_dynamic_linker_flags(dest_dir, crate_name)
249
- split_flags("DLDFLAGS")
250
- .map {|arg| maybe_resolve_ldflag_variable(arg, dest_dir, crate_name) }
251
- .compact
252
- .flat_map {|arg| ldflag_to_link_modifier(arg) }
249
+ split_flags("DLDFLAGS").
250
+ map {|arg| maybe_resolve_ldflag_variable(arg, dest_dir, crate_name) }.
251
+ compact.
252
+ flat_map {|arg| ldflag_to_link_modifier(arg) }
253
253
  end
254
254
 
255
255
  def rustc_lib_flags(dest_dir)
@@ -43,12 +43,12 @@ class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
43
43
 
44
44
  full_tmp_dest = File.join(extension_dir, tmp_dest_relative)
45
45
 
46
- # TODO remove in RubyGems 4
46
+ # TODO: remove in RubyGems 4
47
47
  if Gem.install_extension_in_lib && lib_dir
48
48
  FileUtils.mkdir_p lib_dir
49
49
  entries = Dir.entries(full_tmp_dest) - %w[. ..]
50
50
  entries = entries.map {|entry| File.join full_tmp_dest, entry }
51
- FileUtils.cp_r entries, lib_dir, :remove_destination => true
51
+ FileUtils.cp_r entries, lib_dir, remove_destination: true
52
52
  end
53
53
 
54
54
  FileUtils::Entry_.new(full_tmp_dest).traverse do |ent|
@@ -66,8 +66,6 @@ class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
66
66
  FileUtils.rm_rf tmp_dest if tmp_dest
67
67
  end
68
68
 
69
- private
70
-
71
69
  def self.get_relative_path(path, base)
72
70
  path[0..base.length - 1] = "." if path.start_with?(base)
73
71
  path
@@ -10,7 +10,7 @@ require_relative "../shellwords"
10
10
 
11
11
  class Gem::Ext::RakeBuilder < Gem::Ext::Builder
12
12
  def self.build(extension, dest_path, results, args=[], lib_dir=nil, extension_dir=Dir.pwd)
13
- if File.basename(extension) =~ /mkrf_conf/i
13
+ if /mkrf_conf/i.match?(File.basename(extension))
14
14
  run([Gem.ruby, File.basename(extension), *args], results, class_name, extension_dir)
15
15
  end
16
16
 
@@ -45,10 +45,10 @@ class Gem::GemRunner
45
45
  cmd.command_names.each do |command_name|
46
46
  config_args = Gem.configuration[command_name]
47
47
  config_args = case config_args
48
- when String
49
- config_args.split " "
50
- else
51
- Array(config_args)
48
+ when String
49
+ config_args.split " "
50
+ else
51
+ Array(config_args)
52
52
  end
53
53
  Gem::Command.add_specific_extra_args command_name, config_args
54
54
  end
@@ -2,9 +2,9 @@
2
2
 
3
3
  ##
4
4
  # The WebauthnListener Response class is used by the WebauthnListener to create
5
- # responses to be sent to the Gem host. It creates a Net::HTTPResponse instance
5
+ # responses to be sent to the Gem host. It creates a Gem::Net::HTTPResponse instance
6
6
  # when initialized and can be converted to the appropriate format to be sent by a socket using `to_s`.
7
- # Net::HTTPResponse instances cannot be directly sent over a socket.
7
+ # Gem::Net::HTTPResponse instances cannot be directly sent over a socket.
8
8
  #
9
9
  # Types of response classes:
10
10
  # - OkResponse
@@ -60,7 +60,7 @@ module Gem::GemcutterUtilities
60
60
  def body; end
61
61
 
62
62
  def build_http_response
63
- response_class = Net::HTTPResponse::CODE_TO_OBJ[code.to_s]
63
+ response_class = Gem::Net::HTTPResponse::CODE_TO_OBJ[code.to_s]
64
64
  @http_response = response_class.new("1.1", code, reason_phrase)
65
65
  @http_response.instance_variable_set(:@read, true)
66
66
 
@@ -37,16 +37,16 @@ module Gem::GemcutterUtilities
37
37
  thread.abort_on_exception = true
38
38
  thread.report_on_exception = false
39
39
  thread[:otp] = new(options, host).poll_for_otp(webauthn_url, credentials)
40
- rescue Gem::WebauthnVerificationError, Timeout::Error => e
40
+ rescue Gem::WebauthnVerificationError, Gem::Timeout::Error => e
41
41
  thread[:error] = e
42
42
  end
43
43
  end
44
44
 
45
45
  def poll_for_otp(webauthn_url, credentials)
46
- Timeout.timeout(TIMEOUT_IN_SECONDS) do
46
+ Gem::Timeout.timeout(TIMEOUT_IN_SECONDS) do
47
47
  loop do
48
48
  response = webauthn_verification_poll_response(webauthn_url, credentials)
49
- raise Gem::WebauthnVerificationError, response.message unless response.is_a?(Net::HTTPSuccess)
49
+ raise Gem::WebauthnVerificationError, response.message unless response.is_a?(Gem::Net::HTTPSuccess)
50
50
 
51
51
  require "json"
52
52
  parsed_response = JSON.parse(response.body)
@@ -9,9 +9,8 @@ require_relative "gemcutter_utilities/webauthn_poller"
9
9
  # Utility methods for using the RubyGems API.
10
10
 
11
11
  module Gem::GemcutterUtilities
12
-
13
12
  ERROR_CODE = 1
14
- API_SCOPES = %i[index_rubygems push_rubygem yank_rubygem add_owner remove_owner access_webhooks show_dashboard].freeze
13
+ API_SCOPES = [:index_rubygems, :push_rubygem, :yank_rubygem, :add_owner, :remove_owner, :access_webhooks, :show_dashboard].freeze
15
14
 
16
15
  include Gem::Text
17
16
 
@@ -85,7 +84,7 @@ module Gem::GemcutterUtilities
85
84
  # If +allowed_push_host+ metadata is present, then it will only allow that host.
86
85
 
87
86
  def rubygems_api_request(method, path, host = nil, allowed_push_host = nil, scope: nil, credentials: {}, &block)
88
- require "net/http"
87
+ require_relative "net/http"
89
88
 
90
89
  self.host = host if host
91
90
  unless self.host
@@ -120,11 +119,11 @@ module Gem::GemcutterUtilities
120
119
  end
121
120
 
122
121
  def mfa_unauthorized?(response)
123
- response.is_a?(Net::HTTPUnauthorized) && response.body.start_with?("You have enabled multifactor authentication")
122
+ response.is_a?(Gem::Net::HTTPUnauthorized) && response.body.start_with?("You have enabled multifactor authentication")
124
123
  end
125
124
 
126
125
  def update_scope(scope)
127
- sign_in_host = self.host
126
+ sign_in_host = host
128
127
  pretty_host = pretty_host(sign_in_host)
129
128
  update_scope_params = { scope => true }
130
129
 
@@ -137,10 +136,10 @@ module Gem::GemcutterUtilities
137
136
  sign_in_host, scope: scope) do |request|
138
137
  request.basic_auth email, password
139
138
  request["OTP"] = otp if otp
140
- request.body = URI.encode_www_form({ :api_key => api_key }.merge(update_scope_params))
139
+ request.body = URI.encode_www_form({ api_key: api_key }.merge(update_scope_params))
141
140
  end
142
141
 
143
- with_response response do |resp|
142
+ with_response response do |_resp|
144
143
  say "Added #{scope} scope to the existing API key"
145
144
  end
146
145
  end
@@ -150,13 +149,13 @@ module Gem::GemcutterUtilities
150
149
  # key.
151
150
 
152
151
  def sign_in(sign_in_host = nil, scope: nil)
153
- sign_in_host ||= self.host
152
+ sign_in_host ||= host
154
153
  return if api_key
155
154
 
156
155
  pretty_host = pretty_host(sign_in_host)
157
156
 
158
157
  say "Enter your #{pretty_host} credentials."
159
- say "Don't have an account yet? " +
158
+ say "Don't have an account yet? " \
160
159
  "Create one at #{sign_in_host}/sign_up"
161
160
 
162
161
  email = ask " Email: "
@@ -209,13 +208,13 @@ module Gem::GemcutterUtilities
209
208
 
210
209
  def with_response(response, error_prefix = nil)
211
210
  case response
212
- when Net::HTTPSuccess then
211
+ when Gem::Net::HTTPSuccess then
213
212
  if block_given?
214
213
  yield response
215
214
  else
216
215
  say clean_text(response.body)
217
216
  end
218
- when Net::HTTPPermanentRedirect, Net::HTTPRedirection then
217
+ when Gem::Net::HTTPPermanentRedirect, Gem::Net::HTTPRedirection then
219
218
  message = "The request has redirected permanently to #{response["location"]}. Please check your defined push host URL."
220
219
  message = "#{error_prefix}: #{message}" if error_prefix
221
220
 
@@ -245,7 +244,7 @@ module Gem::GemcutterUtilities
245
244
  private
246
245
 
247
246
  def request_with_otp(method, uri, &block)
248
- request_method = Net::HTTP.const_get method.to_s.capitalize
247
+ request_method = Gem::Net::HTTP.const_get method.to_s.capitalize
249
248
 
250
249
  Gem::RemoteFetcher.fetcher.request(uri, request_method) do |req|
251
250
  req["OTP"] = otp if otp
@@ -298,7 +297,7 @@ module Gem::GemcutterUtilities
298
297
  request.basic_auth credentials[:email], credentials[:password]
299
298
  end
300
299
  end
301
- response.is_a?(Net::HTTPSuccess) ? response.body : nil
300
+ response.is_a?(Gem::Net::HTTPSuccess) ? response.body : nil
302
301
  end
303
302
 
304
303
  def pretty_host(host)
@@ -316,9 +315,9 @@ module Gem::GemcutterUtilities
316
315
  scope_params = { scope => true }
317
316
  else
318
317
  say "Please select scopes you want to enable for the API key (y/n)"
319
- API_SCOPES.each do |scope|
320
- selected = ask_yes_no("#{scope}", false)
321
- scope_params[scope] = true if selected
318
+ API_SCOPES.each do |s|
319
+ selected = ask_yes_no(s.to_s, false)
320
+ scope_params[s] = true if selected
322
321
  end
323
322
  say "\n"
324
323
  end
@@ -327,7 +326,7 @@ module Gem::GemcutterUtilities
327
326
  end
328
327
 
329
328
  def default_host?
330
- self.host == Gem::DEFAULT_HOST
329
+ host == Gem::DEFAULT_HOST
331
330
  end
332
331
 
333
332
  def get_user_profile(email, password)
@@ -345,7 +344,7 @@ module Gem::GemcutterUtilities
345
344
  def get_mfa_params(profile)
346
345
  mfa_level = profile["mfa"]
347
346
  params = {}
348
- if mfa_level == "ui_only" || mfa_level == "ui_and_gem_signin"
347
+ if ["ui_only", "ui_and_gem_signin"].include?(mfa_level)
349
348
  selected = ask_yes_no("Would you like to enable MFA for this key? (strongly recommended)")
350
349
  params["mfa"] = true if selected
351
350
  end
@@ -367,6 +366,6 @@ module Gem::GemcutterUtilities
367
366
  end
368
367
 
369
368
  def api_key_forbidden?(response)
370
- response.is_a?(Net::HTTPForbidden) && response.body.start_with?("The API key doesn't have access")
369
+ response.is_a?(Gem::Net::HTTPForbidden) && response.body.start_with?("The API key doesn't have access")
371
370
  end
372
371
  end
@@ -36,9 +36,9 @@ module Gem::InstallUpdateOptions
36
36
  "List the documentation types you wish to",
37
37
  "generate. For example: rdoc,ri") do |value, options|
38
38
  options[:document] = case value
39
- when nil then %w[ri]
40
- when false then []
41
- else value
39
+ when nil then %w[ri]
40
+ when false then []
41
+ else value
42
42
  end
43
43
  end
44
44
 
@@ -50,7 +50,7 @@ module Gem::InstallUpdateOptions
50
50
 
51
51
  add_option(:"Install/Update", "--vendor",
52
52
  "Install gem into the vendor directory.",
53
- "Only for use by gem repackagers.") do |value, options|
53
+ "Only for use by gem repackagers.") do |_value, options|
54
54
  unless Gem.vendor_dir
55
55
  raise Gem::OptionParser::InvalidOption.new "your platform is not supported"
56
56
  end
@@ -60,7 +60,7 @@ module Gem::InstallUpdateOptions
60
60
  end
61
61
 
62
62
  add_option(:"Install/Update", "-N", "--no-document",
63
- "Disable documentation generation") do |value, options|
63
+ "Disable documentation generation") do |_value, options|
64
64
  options[:document] = []
65
65
  end
66
66
 
@@ -104,21 +104,21 @@ module Gem::InstallUpdateOptions
104
104
 
105
105
  add_option(:"Install/Update", "--development",
106
106
  "Install additional development",
107
- "dependencies") do |value, options|
107
+ "dependencies") do |_value, options|
108
108
  options[:development] = true
109
109
  options[:dev_shallow] = true
110
110
  end
111
111
 
112
112
  add_option(:"Install/Update", "--development-all",
113
113
  "Install development dependencies for all",
114
- "gems (including dev deps themselves)") do |value, options|
114
+ "gems (including dev deps themselves)") do |_value, options|
115
115
  options[:development] = true
116
116
  options[:dev_shallow] = false
117
117
  end
118
118
 
119
119
  add_option(:"Install/Update", "--conservative",
120
120
  "Don't attempt to upgrade gems already",
121
- "meeting version requirement") do |value, options|
121
+ "meeting version requirement") do |_value, options|
122
122
  options[:conservative] = true
123
123
  options[:minimal_deps] = true
124
124
  end
@@ -136,10 +136,10 @@ module Gem::InstallUpdateOptions
136
136
 
137
137
  add_option(:"Install/Update", "-g", "--file [FILE]",
138
138
  "Read from a gem dependencies API file and",
139
- "install the listed gems") do |v,o|
140
- v = Gem::GEM_DEP_FILES.find do |file|
139
+ "install the listed gems") do |v,_o|
140
+ v ||= Gem::GEM_DEP_FILES.find do |file|
141
141
  File.exist? file
142
- end unless v
142
+ end
143
143
 
144
144
  unless v
145
145
  message = v ? v : "(tried #{Gem::GEM_DEP_FILES.join ", "})"
@@ -154,29 +154,29 @@ module Gem::InstallUpdateOptions
154
154
  add_option(:"Install/Update", "--without GROUPS", Array,
155
155
  "Omit the named groups (comma separated)",
156
156
  "when installing from a gem dependencies",
157
- "file") do |v,o|
158
- options[:without_groups].concat v.map {|without| without.intern }
157
+ "file") do |v,_o|
158
+ options[:without_groups].concat v.map(&:intern)
159
159
  end
160
160
 
161
161
  add_option(:"Install/Update", "--default",
162
162
  "Add the gem's full specification to",
163
- "specifications/default and extract only its bin") do |v,o|
163
+ "specifications/default and extract only its bin") do |v,_o|
164
164
  options[:install_as_default] = v
165
165
  end
166
166
 
167
167
  add_option(:"Install/Update", "--explain",
168
168
  "Rather than install the gems, indicate which would",
169
- "be installed") do |v,o|
169
+ "be installed") do |v,_o|
170
170
  options[:explain] = v
171
171
  end
172
172
 
173
173
  add_option(:"Install/Update", "--[no-]lock",
174
- "Create a lock file (when used with -g/--file)") do |v,o|
174
+ "Create a lock file (when used with -g/--file)") do |v,_o|
175
175
  options[:lock] = v
176
176
  end
177
177
 
178
178
  add_option(:"Install/Update", "--[no-]suggestions",
179
- "Suggest alternates when gems are not found") do |v,o|
179
+ "Suggest alternates when gems are not found") do |v,_o|
180
180
  options[:suggest_alternate] = v
181
181
  end
182
182
  end
@@ -186,7 +186,7 @@ module Gem::InstallUpdateOptions
186
186
 
187
187
  def install_update_options
188
188
  {
189
- :document => %w[ri],
189
+ document: %w[ri],
190
190
  }
191
191
  end
192
192
 
@@ -196,5 +196,4 @@ module Gem::InstallUpdateOptions
196
196
  def install_update_defaults_str
197
197
  "--document=ri"
198
198
  end
199
-
200
199
  end