rubygems-update 3.4.22 → 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 (528) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +99 -2
  3. data/Manifest.txt +34 -221
  4. data/README.md +1 -3
  5. data/bundler/CHANGELOG.md +53 -0
  6. data/bundler/bundler.gemspec +4 -2
  7. data/bundler/exe/bundle +1 -10
  8. data/bundler/lib/bundler/build_metadata.rb +3 -3
  9. data/bundler/lib/bundler/capistrano.rb +1 -1
  10. data/bundler/lib/bundler/checksum.rb +245 -0
  11. data/bundler/lib/bundler/ci_detector.rb +75 -0
  12. data/bundler/lib/bundler/cli/add.rb +3 -3
  13. data/bundler/lib/bundler/cli/binstubs.rb +4 -4
  14. data/bundler/lib/bundler/cli/cache.rb +1 -1
  15. data/bundler/lib/bundler/cli/check.rb +1 -1
  16. data/bundler/lib/bundler/cli/common.rb +9 -1
  17. data/bundler/lib/bundler/cli/config.rb +8 -7
  18. data/bundler/lib/bundler/cli/console.rb +3 -2
  19. data/bundler/lib/bundler/cli/doctor.rb +2 -2
  20. data/bundler/lib/bundler/cli/exec.rb +1 -1
  21. data/bundler/lib/bundler/cli/gem.rb +28 -23
  22. data/bundler/lib/bundler/cli/info.rb +2 -13
  23. data/bundler/lib/bundler/cli/install.rb +5 -4
  24. data/bundler/lib/bundler/cli/issue.rb +1 -1
  25. data/bundler/lib/bundler/cli/lock.rb +4 -4
  26. data/bundler/lib/bundler/cli/open.rb +1 -1
  27. data/bundler/lib/bundler/cli/outdated.rb +6 -6
  28. data/bundler/lib/bundler/cli/plugin.rb +7 -14
  29. data/bundler/lib/bundler/cli/pristine.rb +38 -30
  30. data/bundler/lib/bundler/cli/show.rb +2 -2
  31. data/bundler/lib/bundler/cli/update.rb +5 -5
  32. data/bundler/lib/bundler/cli.rb +215 -263
  33. data/bundler/lib/bundler/compact_index_client/cache.rb +29 -9
  34. data/bundler/lib/bundler/compact_index_client/cache_file.rb +153 -0
  35. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +7 -3
  36. data/bundler/lib/bundler/compact_index_client/updater.rb +79 -81
  37. data/bundler/lib/bundler/compact_index_client.rb +14 -7
  38. data/bundler/lib/bundler/constants.rb +1 -1
  39. data/bundler/lib/bundler/current_ruby.rb +5 -21
  40. data/bundler/lib/bundler/definition.rb +42 -15
  41. data/bundler/lib/bundler/dependency.rb +16 -12
  42. data/bundler/lib/bundler/digest.rb +2 -2
  43. data/bundler/lib/bundler/dsl.rb +43 -25
  44. data/bundler/lib/bundler/endpoint_specification.rb +5 -1
  45. data/bundler/lib/bundler/env.rb +1 -3
  46. data/bundler/lib/bundler/errors.rb +43 -0
  47. data/bundler/lib/bundler/fetcher/base.rb +3 -1
  48. data/bundler/lib/bundler/fetcher/compact_index.rb +4 -4
  49. data/bundler/lib/bundler/fetcher/downloader.rb +13 -11
  50. data/bundler/lib/bundler/fetcher/gem_remote_fetcher.rb +16 -0
  51. data/bundler/lib/bundler/fetcher/index.rb +1 -1
  52. data/bundler/lib/bundler/fetcher.rb +28 -25
  53. data/bundler/lib/bundler/friendly_errors.rb +5 -5
  54. data/bundler/lib/bundler/gem_helper.rb +1 -1
  55. data/bundler/lib/bundler/gem_helpers.rb +5 -2
  56. data/bundler/lib/bundler/graph.rb +9 -9
  57. data/bundler/lib/bundler/index.rb +1 -2
  58. data/bundler/lib/bundler/injector.rb +1 -1
  59. data/bundler/lib/bundler/inline.rb +3 -3
  60. data/bundler/lib/bundler/installer/gem_installer.rb +5 -5
  61. data/bundler/lib/bundler/installer/parallel_installer.rb +16 -8
  62. data/bundler/lib/bundler/installer/standalone.rb +2 -3
  63. data/bundler/lib/bundler/installer.rb +9 -9
  64. data/bundler/lib/bundler/lazy_specification.rb +24 -17
  65. data/bundler/lib/bundler/lockfile_generator.rb +9 -0
  66. data/bundler/lib/bundler/lockfile_parser.rb +81 -10
  67. data/bundler/lib/bundler/man/bundle-add.1 +3 -26
  68. data/bundler/lib/bundler/man/bundle-binstubs.1 +4 -16
  69. data/bundler/lib/bundler/man/bundle-cache.1 +3 -24
  70. data/bundler/lib/bundler/man/bundle-check.1 +3 -12
  71. data/bundler/lib/bundler/man/bundle-clean.1 +3 -10
  72. data/bundler/lib/bundler/man/bundle-config.1 +20 -211
  73. data/bundler/lib/bundler/man/bundle-config.1.ronn +6 -0
  74. data/bundler/lib/bundler/man/bundle-console.1 +4 -22
  75. data/bundler/lib/bundler/man/bundle-doctor.1 +4 -18
  76. data/bundler/lib/bundler/man/bundle-exec.1 +12 -73
  77. data/bundler/lib/bundler/man/bundle-gem.1 +13 -49
  78. data/bundler/lib/bundler/man/bundle-help.1 +3 -7
  79. data/bundler/lib/bundler/man/bundle-info.1 +3 -9
  80. data/bundler/lib/bundler/man/bundle-init.1 +3 -12
  81. data/bundler/lib/bundler/man/bundle-inject.1 +6 -19
  82. data/bundler/lib/bundler/man/bundle-install.1 +27 -125
  83. data/bundler/lib/bundler/man/bundle-install.1.ronn +1 -0
  84. data/bundler/lib/bundler/man/bundle-list.1 +4 -19
  85. data/bundler/lib/bundler/man/bundle-lock.1 +5 -29
  86. data/bundler/lib/bundler/man/bundle-open.1 +7 -27
  87. data/bundler/lib/bundler/man/bundle-outdated.1 +3 -55
  88. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +1 -0
  89. data/bundler/lib/bundler/man/bundle-platform.1 +5 -27
  90. data/bundler/lib/bundler/man/bundle-plugin.1 +3 -29
  91. data/bundler/lib/bundler/man/bundle-pristine.1 +5 -16
  92. data/bundler/lib/bundler/man/bundle-remove.1 +4 -14
  93. data/bundler/lib/bundler/man/bundle-show.1 +3 -10
  94. data/bundler/lib/bundler/man/bundle-update.1 +18 -137
  95. data/bundler/lib/bundler/man/bundle-version.1 +3 -16
  96. data/bundler/lib/bundler/man/bundle-viz.1 +4 -16
  97. data/bundler/lib/bundler/man/bundle.1 +5 -44
  98. data/bundler/lib/bundler/man/gemfile.5 +24 -301
  99. data/bundler/lib/bundler/man/gemfile.5.ronn +4 -0
  100. data/bundler/lib/bundler/match_metadata.rb +4 -0
  101. data/bundler/lib/bundler/match_platform.rb +1 -1
  102. data/bundler/lib/bundler/plugin/api/source.rb +3 -2
  103. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  104. data/bundler/lib/bundler/plugin.rb +3 -3
  105. data/bundler/lib/bundler/resolver/base.rb +1 -1
  106. data/bundler/lib/bundler/resolver/incompatibility.rb +1 -1
  107. data/bundler/lib/bundler/resolver/spec_group.rb +1 -4
  108. data/bundler/lib/bundler/resolver.rb +16 -16
  109. data/bundler/lib/bundler/ruby_dsl.rb +20 -12
  110. data/bundler/lib/bundler/ruby_version.rb +1 -1
  111. data/bundler/lib/bundler/rubygems_ext.rb +24 -50
  112. data/bundler/lib/bundler/rubygems_gem_installer.rb +6 -56
  113. data/bundler/lib/bundler/rubygems_integration.rb +25 -94
  114. data/bundler/lib/bundler/runtime.rb +2 -2
  115. data/bundler/lib/bundler/self_manager.rb +23 -7
  116. data/bundler/lib/bundler/settings.rb +27 -7
  117. data/bundler/lib/bundler/setup.rb +4 -1
  118. data/bundler/lib/bundler/shared_helpers.rb +35 -13
  119. data/bundler/lib/bundler/source/git/git_proxy.rb +15 -15
  120. data/bundler/lib/bundler/source/git.rb +4 -3
  121. data/bundler/lib/bundler/source/metadata.rb +15 -15
  122. data/bundler/lib/bundler/source/path.rb +7 -6
  123. data/bundler/lib/bundler/source/rubygems.rb +21 -14
  124. data/bundler/lib/bundler/source.rb +2 -0
  125. data/bundler/lib/bundler/spec_set.rb +38 -10
  126. data/bundler/lib/bundler/stub_specification.rb +1 -0
  127. data/bundler/lib/bundler/templates/Executable.bundler +1 -1
  128. data/bundler/lib/bundler/templates/newgem/README.md.tt +3 -3
  129. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +2 -6
  130. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +1 -1
  131. data/bundler/lib/bundler/templates/newgem/standard.yml.tt +1 -1
  132. data/bundler/lib/bundler/ui/shell.rb +1 -1
  133. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  134. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +53 -6
  135. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +8 -20
  136. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +3 -3
  137. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +2 -2
  138. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +1 -1
  139. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +35 -35
  140. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +3 -0
  141. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +256 -132
  142. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1 -0
  143. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +95 -31
  144. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  145. data/bundler/lib/bundler/vendored_net_http.rb +8 -0
  146. data/bundler/lib/bundler/vendored_persistent.rb +0 -4
  147. data/bundler/lib/bundler/vendored_timeout.rb +8 -0
  148. data/bundler/lib/bundler/version.rb +1 -1
  149. data/bundler/lib/bundler/vlad.rb +1 -1
  150. data/bundler/lib/bundler/yaml_serializer.rb +3 -3
  151. data/bundler/lib/bundler.rb +38 -27
  152. data/lib/rubygems/available_set.rb +4 -4
  153. data/lib/rubygems/basic_specification.rb +35 -37
  154. data/lib/rubygems/bundler_version_finder.rb +4 -4
  155. data/lib/rubygems/ci_detector.rb +75 -0
  156. data/lib/rubygems/command.rb +13 -15
  157. data/lib/rubygems/command_manager.rb +5 -4
  158. data/lib/rubygems/commands/build_command.rb +2 -2
  159. data/lib/rubygems/commands/cert_command.rb +1 -2
  160. data/lib/rubygems/commands/check_command.rb +4 -4
  161. data/lib/rubygems/commands/cleanup_command.rb +12 -14
  162. data/lib/rubygems/commands/contents_command.rb +4 -4
  163. data/lib/rubygems/commands/dependency_command.rb +4 -5
  164. data/lib/rubygems/commands/environment_command.rb +1 -3
  165. data/lib/rubygems/commands/exec_command.rb +1 -1
  166. data/lib/rubygems/commands/fetch_command.rb +2 -2
  167. data/lib/rubygems/commands/generate_index_command.rb +39 -74
  168. data/lib/rubygems/commands/help_command.rb +3 -3
  169. data/lib/rubygems/commands/info_command.rb +2 -2
  170. data/lib/rubygems/commands/install_command.rb +8 -16
  171. data/lib/rubygems/commands/list_command.rb +2 -2
  172. data/lib/rubygems/commands/lock_command.rb +1 -1
  173. data/lib/rubygems/commands/open_command.rb +1 -1
  174. data/lib/rubygems/commands/owner_command.rb +1 -1
  175. data/lib/rubygems/commands/pristine_command.rb +13 -15
  176. data/lib/rubygems/commands/push_command.rb +2 -2
  177. data/lib/rubygems/commands/query_command.rb +4 -5
  178. data/lib/rubygems/commands/rdoc_command.rb +2 -2
  179. data/lib/rubygems/commands/search_command.rb +2 -2
  180. data/lib/rubygems/commands/setup_command.rb +31 -34
  181. data/lib/rubygems/commands/sources_command.rb +12 -12
  182. data/lib/rubygems/commands/specification_command.rb +10 -10
  183. data/lib/rubygems/commands/stale_command.rb +1 -1
  184. data/lib/rubygems/commands/uninstall_command.rb +9 -10
  185. data/lib/rubygems/commands/unpack_command.rb +4 -4
  186. data/lib/rubygems/commands/update_command.rb +10 -12
  187. data/lib/rubygems/commands/which_command.rb +1 -1
  188. data/lib/rubygems/commands/yank_command.rb +1 -1
  189. data/lib/rubygems/compatibility.rb +5 -6
  190. data/lib/rubygems/config_file.rb +4 -4
  191. data/lib/rubygems/core_ext/kernel_gem.rb +0 -2
  192. data/lib/rubygems/core_ext/kernel_require.rb +19 -48
  193. data/lib/rubygems/core_ext/kernel_warn.rb +1 -1
  194. data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
  195. data/lib/rubygems/defaults.rb +15 -3
  196. data/lib/rubygems/dependency.rb +12 -14
  197. data/lib/rubygems/dependency_installer.rb +29 -30
  198. data/lib/rubygems/dependency_list.rb +1 -1
  199. data/lib/rubygems/deprecate.rb +16 -15
  200. data/lib/rubygems/doctor.rb +5 -5
  201. data/lib/rubygems/errors.rb +2 -6
  202. data/lib/rubygems/exceptions.rb +2 -1
  203. data/lib/rubygems/ext/builder.rb +15 -10
  204. data/lib/rubygems/ext/cargo_builder.rb +5 -5
  205. data/lib/rubygems/ext/ext_conf_builder.rb +1 -3
  206. data/lib/rubygems/gem_runner.rb +4 -4
  207. data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +3 -3
  208. data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +3 -3
  209. data/lib/rubygems/gemcutter_utilities.rb +18 -19
  210. data/lib/rubygems/install_update_options.rb +18 -19
  211. data/lib/rubygems/installer.rb +59 -33
  212. data/lib/rubygems/installer_uninstaller_utils.rb +0 -2
  213. data/lib/rubygems/local_remote_options.rb +7 -10
  214. data/lib/rubygems/name_tuple.rb +7 -9
  215. data/lib/rubygems/net/http.rb +3 -0
  216. data/lib/rubygems/net-http/LICENSE.txt +22 -0
  217. data/lib/rubygems/net-http/lib/net/http/backward.rb +40 -0
  218. data/lib/rubygems/net-http/lib/net/http/exceptions.rb +34 -0
  219. data/lib/rubygems/net-http/lib/net/http/generic_request.rb +414 -0
  220. data/lib/rubygems/net-http/lib/net/http/header.rb +981 -0
  221. data/lib/rubygems/net-http/lib/net/http/proxy_delta.rb +17 -0
  222. data/lib/rubygems/net-http/lib/net/http/request.rb +88 -0
  223. data/lib/rubygems/net-http/lib/net/http/requests.rb +425 -0
  224. data/lib/rubygems/net-http/lib/net/http/response.rb +738 -0
  225. data/lib/rubygems/net-http/lib/net/http/responses.rb +1174 -0
  226. data/lib/rubygems/net-http/lib/net/http/status.rb +84 -0
  227. data/lib/rubygems/net-http/lib/net/http.rb +2496 -0
  228. data/lib/rubygems/net-http/lib/net/https.rb +23 -0
  229. data/lib/rubygems/net-protocol/LICENSE.txt +22 -0
  230. data/lib/rubygems/net-protocol/lib/net/protocol.rb +544 -0
  231. data/lib/rubygems/optparse/lib/optparse.rb +39 -17
  232. data/lib/rubygems/package/old.rb +2 -2
  233. data/lib/rubygems/package/tar_header.rb +45 -39
  234. data/lib/rubygems/package/tar_reader/entry.rb +5 -4
  235. data/lib/rubygems/package/tar_reader.rb +5 -3
  236. data/lib/rubygems/package/tar_writer.rb +19 -17
  237. data/lib/rubygems/package.rb +27 -26
  238. data/lib/rubygems/package_task.rb +2 -2
  239. data/lib/rubygems/path_support.rb +9 -10
  240. data/lib/rubygems/platform.rb +60 -45
  241. data/lib/rubygems/query_utils.rb +7 -9
  242. data/lib/rubygems/remote_fetcher.rb +15 -15
  243. data/lib/rubygems/request/connection_pools.rb +3 -3
  244. data/lib/rubygems/request.rb +20 -17
  245. data/lib/rubygems/request_set/gem_dependency_api.rb +119 -122
  246. data/lib/rubygems/request_set/lockfile/parser.rb +9 -9
  247. data/lib/rubygems/request_set/lockfile/tokenizer.rb +20 -12
  248. data/lib/rubygems/request_set/lockfile.rb +6 -11
  249. data/lib/rubygems/request_set.rb +5 -5
  250. data/lib/rubygems/requirement.rb +7 -7
  251. data/lib/rubygems/resolv/LICENSE.txt +22 -0
  252. data/lib/rubygems/resolv/lib/resolv.rb +3387 -0
  253. data/lib/rubygems/resolver/activation_request.rb +1 -3
  254. data/lib/rubygems/resolver/api_set/gem_parser.rb +7 -3
  255. data/lib/rubygems/resolver/best_set.rb +1 -1
  256. data/lib/rubygems/resolver/composed_set.rb +1 -1
  257. data/lib/rubygems/resolver/conflict.rb +4 -12
  258. data/lib/rubygems/resolver/index_set.rb +4 -4
  259. data/lib/rubygems/resolver/index_specification.rb +2 -2
  260. data/lib/rubygems/resolver/installer_set.rb +5 -6
  261. data/lib/rubygems/resolver/lock_set.rb +1 -1
  262. data/lib/rubygems/resolver.rb +3 -10
  263. data/lib/rubygems/s3_uri_signer.rb +6 -6
  264. data/lib/rubygems/safe_marshal/elements.rb +138 -0
  265. data/lib/rubygems/safe_marshal/reader.rb +306 -0
  266. data/lib/rubygems/safe_marshal/visitors/stream_printer.rb +31 -0
  267. data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +385 -0
  268. data/lib/rubygems/safe_marshal/visitors/visitor.rb +74 -0
  269. data/lib/rubygems/safe_marshal.rb +74 -0
  270. data/lib/rubygems/safe_yaml.rb +5 -28
  271. data/lib/rubygems/security/policies.rb +36 -38
  272. data/lib/rubygems/security/policy.rb +7 -11
  273. data/lib/rubygems/security/signer.rb +1 -1
  274. data/lib/rubygems/security/trust_dir.rb +3 -3
  275. data/lib/rubygems/security.rb +8 -22
  276. data/lib/rubygems/source/git.rb +1 -3
  277. data/lib/rubygems/source/installed.rb +0 -2
  278. data/lib/rubygems/source/local.rb +5 -8
  279. data/lib/rubygems/source/lock.rb +1 -3
  280. data/lib/rubygems/source/specific_file.rb +0 -1
  281. data/lib/rubygems/source/vendor.rb +0 -2
  282. data/lib/rubygems/source.rb +12 -12
  283. data/lib/rubygems/source_list.rb +4 -4
  284. data/lib/rubygems/spec_fetcher.rb +29 -29
  285. data/lib/rubygems/specification.rb +125 -138
  286. data/lib/rubygems/specification_policy.rb +55 -25
  287. data/lib/rubygems/stub_specification.rb +4 -5
  288. data/lib/rubygems/text.rb +1 -2
  289. data/lib/rubygems/timeout/LICENSE.txt +22 -0
  290. data/lib/rubygems/timeout/lib/timeout.rb +199 -0
  291. data/lib/rubygems/timeout.rb +3 -0
  292. data/lib/rubygems/tsort/lib/tsort.rb +3 -0
  293. data/lib/rubygems/uninstaller.rb +7 -9
  294. data/lib/rubygems/update_suggestion.rb +5 -18
  295. data/lib/rubygems/uri_formatter.rb +1 -1
  296. data/lib/rubygems/user_interaction.rb +15 -21
  297. data/lib/rubygems/util/licenses.rb +65 -35
  298. data/lib/rubygems/util/list.rb +3 -1
  299. data/lib/rubygems/util.rb +2 -4
  300. data/lib/rubygems/validator.rb +5 -3
  301. data/lib/rubygems/version.rb +34 -28
  302. data/lib/rubygems/version_option.rb +2 -5
  303. data/lib/rubygems/yaml_serializer.rb +3 -3
  304. data/lib/rubygems.rb +37 -37
  305. data/rubygems-update.gemspec +4 -4
  306. data/setup.rb +2 -2
  307. metadata +38 -225
  308. data/lib/rubygems/indexer.rb +0 -428
  309. data/lib/rubygems/mock_gem_ui.rb +0 -86
  310. data/test/rubygems/alternate_cert.pem +0 -19
  311. data/test/rubygems/alternate_cert_32.pem +0 -19
  312. data/test/rubygems/alternate_key.pem +0 -27
  313. data/test/rubygems/bad_rake.rb +0 -3
  314. data/test/rubygems/bundler_test_gem.rb +0 -424
  315. data/test/rubygems/ca_cert.pem +0 -77
  316. data/test/rubygems/child_cert.pem +0 -19
  317. data/test/rubygems/child_cert_32.pem +0 -19
  318. data/test/rubygems/child_key.pem +0 -27
  319. data/test/rubygems/client.pem +0 -107
  320. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  321. data/test/rubygems/data/gem-private_key.pem +0 -27
  322. data/test/rubygems/data/gem-public_cert.pem +0 -20
  323. data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
  324. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  325. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  326. data/test/rubygems/encrypted_private_key.pem +0 -30
  327. data/test/rubygems/expired_cert.pem +0 -19
  328. data/test/rubygems/fake_certlib/openssl.rb +0 -9
  329. data/test/rubygems/foo/discover.rb +0 -1
  330. data/test/rubygems/future_cert.pem +0 -19
  331. data/test/rubygems/future_cert_32.pem +0 -19
  332. data/test/rubygems/good_rake.rb +0 -3
  333. data/test/rubygems/grandchild_cert.pem +0 -19
  334. data/test/rubygems/grandchild_cert_32.pem +0 -19
  335. data/test/rubygems/grandchild_key.pem +0 -27
  336. data/test/rubygems/helper.rb +0 -1649
  337. data/test/rubygems/installer_test_case.rb +0 -248
  338. data/test/rubygems/invalid_client.pem +0 -49
  339. data/test/rubygems/invalid_issuer_cert.pem +0 -20
  340. data/test/rubygems/invalid_issuer_cert_32.pem +0 -20
  341. data/test/rubygems/invalid_key.pem +0 -27
  342. data/test/rubygems/invalid_signer_cert.pem +0 -19
  343. data/test/rubygems/invalid_signer_cert_32.pem +0 -19
  344. data/test/rubygems/invalidchild_cert.pem +0 -19
  345. data/test/rubygems/invalidchild_cert_32.pem +0 -19
  346. data/test/rubygems/invalidchild_key.pem +0 -27
  347. data/test/rubygems/multifactor_auth_utilities.rb +0 -111
  348. data/test/rubygems/package/tar_test_case.rb +0 -175
  349. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  350. data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
  351. data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
  352. data/test/rubygems/plugin/exception/rubygems_plugin.rb +0 -4
  353. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -5
  354. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +0 -4
  355. data/test/rubygems/private3072_key.pem +0 -40
  356. data/test/rubygems/private_ec_key.pem +0 -9
  357. data/test/rubygems/private_key.pem +0 -27
  358. data/test/rubygems/public3072_cert.pem +0 -25
  359. data/test/rubygems/public_cert.pem +0 -20
  360. data/test/rubygems/public_cert_32.pem +0 -19
  361. data/test/rubygems/public_key.pem +0 -9
  362. data/test/rubygems/rubygems/commands/crash_command.rb +0 -5
  363. data/test/rubygems/rubygems_plugin.rb +0 -24
  364. data/test/rubygems/sff/discover.rb +0 -1
  365. data/test/rubygems/simple_gem.rb +0 -68
  366. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -9
  367. data/test/rubygems/specifications/foo-0.0.1-x86-mswin32.gemspec +0 -0
  368. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +0 -14
  369. data/test/rubygems/ssl_cert.pem +0 -80
  370. data/test/rubygems/ssl_key.pem +0 -27
  371. data/test/rubygems/test_bundled_ca.rb +0 -61
  372. data/test/rubygems/test_config.rb +0 -28
  373. data/test/rubygems/test_deprecate.rb +0 -158
  374. data/test/rubygems/test_exit.rb +0 -17
  375. data/test/rubygems/test_gem.rb +0 -1799
  376. data/test/rubygems/test_gem_available_set.rb +0 -130
  377. data/test/rubygems/test_gem_bundler_version_finder.rb +0 -127
  378. data/test/rubygems/test_gem_command.rb +0 -403
  379. data/test/rubygems/test_gem_command_manager.rb +0 -400
  380. data/test/rubygems/test_gem_commands_build_command.rb +0 -739
  381. data/test/rubygems/test_gem_commands_cert_command.rb +0 -866
  382. data/test/rubygems/test_gem_commands_check_command.rb +0 -68
  383. data/test/rubygems/test_gem_commands_cleanup_command.rb +0 -292
  384. data/test/rubygems/test_gem_commands_contents_command.rb +0 -271
  385. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -228
  386. data/test/rubygems/test_gem_commands_environment_command.rb +0 -169
  387. data/test/rubygems/test_gem_commands_exec_command.rb +0 -857
  388. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -258
  389. data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -81
  390. data/test/rubygems/test_gem_commands_help_command.rb +0 -94
  391. data/test/rubygems/test_gem_commands_info_command.rb +0 -70
  392. data/test/rubygems/test_gem_commands_install_command.rb +0 -1573
  393. data/test/rubygems/test_gem_commands_list_command.rb +0 -33
  394. data/test/rubygems/test_gem_commands_lock_command.rb +0 -67
  395. data/test/rubygems/test_gem_commands_mirror.rb +0 -20
  396. data/test/rubygems/test_gem_commands_open_command.rb +0 -101
  397. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -50
  398. data/test/rubygems/test_gem_commands_owner_command.rb +0 -503
  399. data/test/rubygems/test_gem_commands_pristine_command.rb +0 -708
  400. data/test/rubygems/test_gem_commands_push_command.rb +0 -603
  401. data/test/rubygems/test_gem_commands_query_command.rb +0 -858
  402. data/test/rubygems/test_gem_commands_search_command.rb +0 -16
  403. data/test/rubygems/test_gem_commands_server_command.rb +0 -20
  404. data/test/rubygems/test_gem_commands_setup_command.rb +0 -474
  405. data/test/rubygems/test_gem_commands_signin_command.rb +0 -259
  406. data/test/rubygems/test_gem_commands_signout_command.rb +0 -30
  407. data/test/rubygems/test_gem_commands_sources_command.rb +0 -534
  408. data/test/rubygems/test_gem_commands_specification_command.rb +0 -277
  409. data/test/rubygems/test_gem_commands_stale_command.rb +0 -43
  410. data/test/rubygems/test_gem_commands_uninstall_command.rb +0 -542
  411. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -224
  412. data/test/rubygems/test_gem_commands_update_command.rb +0 -836
  413. data/test/rubygems/test_gem_commands_which_command.rb +0 -85
  414. data/test/rubygems/test_gem_commands_yank_command.rb +0 -299
  415. data/test/rubygems/test_gem_config_file.rb +0 -551
  416. data/test/rubygems/test_gem_dependency.rb +0 -398
  417. data/test/rubygems/test_gem_dependency_installer.rb +0 -1190
  418. data/test/rubygems/test_gem_dependency_list.rb +0 -265
  419. data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -27
  420. data/test/rubygems/test_gem_doctor.rb +0 -195
  421. data/test/rubygems/test_gem_ext_builder.rb +0 -337
  422. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +0 -1
  423. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +0 -10
  424. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +0 -249
  425. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +0 -10
  426. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +0 -27
  427. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +0 -3
  428. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +0 -1
  429. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +0 -249
  430. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +0 -10
  431. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +0 -10
  432. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +0 -51
  433. data/test/rubygems/test_gem_ext_cargo_builder.rb +0 -167
  434. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +0 -34
  435. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +0 -60
  436. data/test/rubygems/test_gem_ext_cmake_builder.rb +0 -84
  437. data/test/rubygems/test_gem_ext_configure_builder.rb +0 -80
  438. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -229
  439. data/test/rubygems/test_gem_ext_rake_builder.rb +0 -113
  440. data/test/rubygems/test_gem_gem_runner.rb +0 -119
  441. data/test/rubygems/test_gem_gemcutter_utilities.rb +0 -361
  442. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -60
  443. data/test/rubygems/test_gem_indexer.rb +0 -381
  444. data/test/rubygems/test_gem_install_update_options.rb +0 -208
  445. data/test/rubygems/test_gem_installer.rb +0 -2512
  446. data/test/rubygems/test_gem_local_remote_options.rb +0 -133
  447. data/test/rubygems/test_gem_name_tuple.rb +0 -43
  448. data/test/rubygems/test_gem_package.rb +0 -1306
  449. data/test/rubygems/test_gem_package_old.rb +0 -91
  450. data/test/rubygems/test_gem_package_tar_header.rb +0 -226
  451. data/test/rubygems/test_gem_package_tar_reader.rb +0 -150
  452. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -350
  453. data/test/rubygems/test_gem_package_tar_writer.rb +0 -331
  454. data/test/rubygems/test_gem_package_task.rb +0 -118
  455. data/test/rubygems/test_gem_path_support.rb +0 -139
  456. data/test/rubygems/test_gem_platform.rb +0 -497
  457. data/test/rubygems/test_gem_rdoc.rb +0 -137
  458. data/test/rubygems/test_gem_remote_fetcher.rb +0 -1227
  459. data/test/rubygems/test_gem_request.rb +0 -547
  460. data/test/rubygems/test_gem_request_connection_pools.rb +0 -152
  461. data/test/rubygems/test_gem_request_set.rb +0 -672
  462. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +0 -853
  463. data/test/rubygems/test_gem_request_set_lockfile.rb +0 -469
  464. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +0 -544
  465. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +0 -307
  466. data/test/rubygems/test_gem_requirement.rb +0 -505
  467. data/test/rubygems/test_gem_resolver.rb +0 -859
  468. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -43
  469. data/test/rubygems/test_gem_resolver_api_set.rb +0 -210
  470. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -167
  471. data/test/rubygems/test_gem_resolver_best_set.rb +0 -159
  472. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -44
  473. data/test/rubygems/test_gem_resolver_conflict.rb +0 -82
  474. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -83
  475. data/test/rubygems/test_gem_resolver_git_set.rb +0 -188
  476. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -114
  477. data/test/rubygems/test_gem_resolver_index_set.rb +0 -88
  478. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -93
  479. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -47
  480. data/test/rubygems/test_gem_resolver_installer_set.rb +0 -320
  481. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -44
  482. data/test/rubygems/test_gem_resolver_lock_set.rb +0 -62
  483. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -98
  484. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -19
  485. data/test/rubygems/test_gem_resolver_specification.rb +0 -63
  486. data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -82
  487. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -82
  488. data/test/rubygems/test_gem_security.rb +0 -341
  489. data/test/rubygems/test_gem_security_policy.rb +0 -535
  490. data/test/rubygems/test_gem_security_signer.rb +0 -218
  491. data/test/rubygems/test_gem_security_trust_dir.rb +0 -99
  492. data/test/rubygems/test_gem_silent_ui.rb +0 -123
  493. data/test/rubygems/test_gem_source.rb +0 -254
  494. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -37
  495. data/test/rubygems/test_gem_source_git.rb +0 -310
  496. data/test/rubygems/test_gem_source_installed.rb +0 -35
  497. data/test/rubygems/test_gem_source_list.rb +0 -119
  498. data/test/rubygems/test_gem_source_local.rb +0 -107
  499. data/test/rubygems/test_gem_source_lock.rb +0 -113
  500. data/test/rubygems/test_gem_source_specific_file.rb +0 -76
  501. data/test/rubygems/test_gem_source_subpath_problem.rb +0 -50
  502. data/test/rubygems/test_gem_source_vendor.rb +0 -30
  503. data/test/rubygems/test_gem_spec_fetcher.rb +0 -338
  504. data/test/rubygems/test_gem_specification.rb +0 -3856
  505. data/test/rubygems/test_gem_stream_ui.rb +0 -255
  506. data/test/rubygems/test_gem_stub_specification.rb +0 -278
  507. data/test/rubygems/test_gem_text.rb +0 -103
  508. data/test/rubygems/test_gem_uninstaller.rb +0 -675
  509. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -31
  510. data/test/rubygems/test_gem_update_suggestion.rb +0 -209
  511. data/test/rubygems/test_gem_uri.rb +0 -41
  512. data/test/rubygems/test_gem_uri_formatter.rb +0 -27
  513. data/test/rubygems/test_gem_util.rb +0 -91
  514. data/test/rubygems/test_gem_validator.rb +0 -42
  515. data/test/rubygems/test_gem_version.rb +0 -305
  516. data/test/rubygems/test_gem_version_option.rb +0 -165
  517. data/test/rubygems/test_kernel.rb +0 -124
  518. data/test/rubygems/test_project_sanity.rb +0 -49
  519. data/test/rubygems/test_remote_fetch_error.rb +0 -20
  520. data/test/rubygems/test_require.rb +0 -732
  521. data/test/rubygems/test_rubygems.rb +0 -76
  522. data/test/rubygems/test_webauthn_listener.rb +0 -143
  523. data/test/rubygems/test_webauthn_listener_response.rb +0 -93
  524. data/test/rubygems/test_webauthn_poller.rb +0 -124
  525. data/test/rubygems/utilities.rb +0 -436
  526. data/test/rubygems/wrong_key_cert.pem +0 -19
  527. data/test/rubygems/wrong_key_cert_32.pem +0 -19
  528. data/test/test_changelog_generator.rb +0 -17
@@ -20,9 +20,7 @@ require_relative "user_interaction"
20
20
  class Gem::Command
21
21
  include Gem::UserInteraction
22
22
 
23
- Gem::OptionParser.accept Symbol do |value|
24
- value.to_sym
25
- end
23
+ Gem::OptionParser.accept Symbol, &:to_sym
26
24
 
27
25
  ##
28
26
  # The name of the command.
@@ -192,7 +190,7 @@ class Gem::Command
192
190
  "Please specify at least one gem name (e.g. gem build GEMNAME)"
193
191
  end
194
192
 
195
- args.select {|arg| arg !~ /^-/ }
193
+ args.reject {|arg| arg.start_with?("-") }
196
194
  end
197
195
 
198
196
  ##
@@ -316,7 +314,7 @@ class Gem::Command
316
314
  options[:build_args] = build_args
317
315
 
318
316
  if options[:silent]
319
- old_ui = self.ui
317
+ old_ui = ui
320
318
  self.ui = ui = Gem::SilentUI.new
321
319
  end
322
320
 
@@ -459,7 +457,7 @@ class Gem::Command
459
457
  until extra.empty? do
460
458
  ex = []
461
459
  ex << extra.shift
462
- ex << extra.shift if /^[^-]/.match?(extra.first.to_s) # rubocop:disable Performance/StartWith
460
+ ex << extra.shift if /^[^-]/.match?(extra.first.to_s)
463
461
  result << ex if handles?(ex)
464
462
  end
465
463
 
@@ -475,7 +473,7 @@ class Gem::Command
475
473
  private
476
474
 
477
475
  def option_is_deprecated?(option)
478
- @deprecated_options[command].has_key?(option)
476
+ @deprecated_options[command].key?(option)
479
477
  end
480
478
 
481
479
  def add_parser_description # :nodoc:
@@ -487,7 +485,7 @@ class Gem::Command
487
485
 
488
486
  @parser.separator nil
489
487
  @parser.separator " Description:"
490
- formatted.split("\n").each do |line|
488
+ formatted.each_line do |line|
491
489
  @parser.separator " #{line.rstrip}"
492
490
  end
493
491
  end
@@ -514,8 +512,8 @@ class Gem::Command
514
512
 
515
513
  @parser.separator nil
516
514
  @parser.separator " #{title}:"
517
- content.split(/\n/).each do |line|
518
- @parser.separator " #{line}"
515
+ content.each_line do |line|
516
+ @parser.separator " #{line.rstrip}"
519
517
  end
520
518
  end
521
519
 
@@ -524,7 +522,7 @@ class Gem::Command
524
522
 
525
523
  @parser.separator nil
526
524
  @parser.separator " Summary:"
527
- wrap(@summary, 80 - 4).split("\n").each do |line|
525
+ wrap(@summary, 80 - 4).each_line do |line|
528
526
  @parser.separator " #{line.strip}"
529
527
  end
530
528
  end
@@ -581,12 +579,12 @@ class Gem::Command
581
579
  # Add the options common to all commands.
582
580
 
583
581
  add_common_option("-h", "--help",
584
- "Get help on this command") do |value, options|
582
+ "Get help on this command") do |_value, options|
585
583
  options[:help] = true
586
584
  end
587
585
 
588
586
  add_common_option("-V", "--[no-]verbose",
589
- "Set the verbose level of output") do |value, options|
587
+ "Set the verbose level of output") do |value, _options|
590
588
  # Set us to "really verbose" so the progress meter works
591
589
  if Gem.configuration.verbose && value
592
590
  Gem.configuration.verbose = 1
@@ -595,12 +593,12 @@ class Gem::Command
595
593
  end
596
594
  end
597
595
 
598
- add_common_option("-q", "--quiet", "Silence command progress meter") do |value, options|
596
+ add_common_option("-q", "--quiet", "Silence command progress meter") do |_value, _options|
599
597
  Gem.configuration.verbose = false
600
598
  end
601
599
 
602
600
  add_common_option("--silent",
603
- "Silence RubyGems output") do |value, options|
601
+ "Silence RubyGems output") do |_value, options|
604
602
  options[:silent] = true
605
603
  end
606
604
 
@@ -106,7 +106,7 @@ class Gem::CommandManager
106
106
  # Register all the subcommands supported by the gem command.
107
107
 
108
108
  def initialize
109
- require "timeout"
109
+ require_relative "timeout"
110
110
  @commands = {}
111
111
 
112
112
  BUILTIN_COMMANDS.each do |name|
@@ -141,7 +141,7 @@ class Gem::CommandManager
141
141
  # Return a sorted list of all command names as strings.
142
142
 
143
143
  def command_names
144
- @commands.keys.collect {|key| key.to_s }.sort
144
+ @commands.keys.collect(&:to_s).sort
145
145
  end
146
146
 
147
147
  ##
@@ -149,7 +149,7 @@ class Gem::CommandManager
149
149
 
150
150
  def run(args, build_args=nil)
151
151
  process_args(args, build_args)
152
- rescue StandardError, Timeout::Error => ex
152
+ rescue StandardError, Gem::Timeout::Error => ex
153
153
  if ex.respond_to?(:detailed_message)
154
154
  msg = ex.detailed_message(highlight: false).sub(/\A(.*?)(?: \(.+?\))/) { $1 }
155
155
  else
@@ -238,7 +238,7 @@ class Gem::CommandManager
238
238
  load_error = e
239
239
  end
240
240
  Gem::Commands.const_get(const_name).new
241
- rescue Exception => e
241
+ rescue StandardError => e
242
242
  e = load_error if load_error
243
243
 
244
244
  alert_error clean_text("Loading command: #{command_name} (#{e.class})\n\t#{e}")
@@ -249,6 +249,7 @@ class Gem::CommandManager
249
249
  def invoke_command(args, build_args)
250
250
  cmd_name = args.shift.downcase
251
251
  cmd = find_command cmd_name
252
+ terminate_interaction 1 unless cmd
252
253
  cmd.deprecation_warning if cmd.deprecated?
253
254
  cmd.invoke_with_build_args args, build_args
254
255
  end
@@ -12,11 +12,11 @@ class Gem::Commands::BuildCommand < Gem::Command
12
12
 
13
13
  add_platform_option
14
14
 
15
- add_option "--force", "skip validation of the spec" do |value, options|
15
+ add_option "--force", "skip validation of the spec" do |_value, options|
16
16
  options[:force] = true
17
17
  end
18
18
 
19
- add_option "--strict", "consider warnings as errors when validating the spec" do |value, options|
19
+ add_option "--strict", "consider warnings as errors when validating the spec" do |_value, options|
20
20
  options[:strict] = true
21
21
  end
22
22
 
@@ -6,7 +6,7 @@ require_relative "../security"
6
6
  class Gem::Commands::CertCommand < Gem::Command
7
7
  def initialize
8
8
  super "cert", "Manage RubyGems certificates and signing settings",
9
- :add => [], :remove => [], :list => [], :build => [], :sign => []
9
+ add: [], remove: [], list: [], build: [], sign: []
10
10
 
11
11
  add_option("-a", "--add CERT",
12
12
  "Add a trusted certificate.") do |cert_file, options|
@@ -263,7 +263,6 @@ For further reading on signing gems see `ri Gem::Security`.
263
263
  key = File.read key_file
264
264
  passphrase = ENV["GEM_PRIVATE_KEY_PASSPHRASE"]
265
265
  options[:key] = OpenSSL::PKey.read key, passphrase
266
-
267
266
  rescue Errno::ENOENT
268
267
  alert_error \
269
268
  "--private-key not specified and ~/.gem/gem-private_key.pem does not exist"
@@ -10,7 +10,7 @@ class Gem::Commands::CheckCommand < Gem::Command
10
10
 
11
11
  def initialize
12
12
  super "check", "Check a gem repository for added or missing files",
13
- :alien => true, :doctor => false, :dry_run => false, :gems => true
13
+ alien: true, doctor: false, dry_run: false, gems: true
14
14
 
15
15
  add_option("-a", "--[no-]alien",
16
16
  'Report "unmanaged" or rogue files in the',
@@ -48,14 +48,14 @@ class Gem::Commands::CheckCommand < Gem::Command
48
48
  end
49
49
 
50
50
  Gem::Validator.new.alien(gems).sort.each do |key, val|
51
- unless val.empty?
51
+ if val.empty?
52
+ say "#{key} is error-free" if Gem.configuration.verbose
53
+ else
52
54
  say "#{key} has #{val.size} problems"
53
55
  val.each do |error_entry|
54
56
  say " #{error_entry.path}:"
55
57
  say " #{error_entry.problem}"
56
58
  end
57
- else
58
- say "#{key} is error-free" if Gem.configuration.verbose
59
59
  end
60
60
  say
61
61
  end
@@ -8,16 +8,16 @@ class Gem::Commands::CleanupCommand < Gem::Command
8
8
  def initialize
9
9
  super "cleanup",
10
10
  "Clean up old versions of installed gems",
11
- :force => false, :install_dir => Gem.dir,
12
- :check_dev => true
11
+ force: false, install_dir: Gem.dir,
12
+ check_dev: true
13
13
 
14
14
  add_option("-n", "-d", "--dry-run",
15
- "Do not uninstall gems") do |value, options|
15
+ "Do not uninstall gems") do |_value, options|
16
16
  options[:dryrun] = true
17
17
  end
18
18
 
19
19
  add_option(:Deprecated, "--dryrun",
20
- "Do not uninstall gems") do |value, options|
20
+ "Do not uninstall gems") do |_value, options|
21
21
  options[:dryrun] = true
22
22
  end
23
23
  deprecate_option("--dryrun", extra_msg: "Use --dry-run instead")
@@ -75,7 +75,7 @@ If no gems are named all gems in GEM_HOME are cleaned.
75
75
  until done do
76
76
  clean_gems
77
77
 
78
- this_set = @gems_to_cleanup.map {|spec| spec.full_name }.sort
78
+ this_set = @gems_to_cleanup.map(&:full_name).sort
79
79
 
80
80
  done = this_set.empty? || last_set == this_set
81
81
 
@@ -88,7 +88,7 @@ If no gems are named all gems in GEM_HOME are cleaned.
88
88
  say "Clean up complete"
89
89
 
90
90
  verbose do
91
- skipped = @default_gems.map {|spec| spec.full_name }
91
+ skipped = @default_gems.map(&:full_name)
92
92
 
93
93
  "Skipped default gems: #{skipped.join ", "}"
94
94
  end
@@ -117,12 +117,12 @@ If no gems are named all gems in GEM_HOME are cleaned.
117
117
  end
118
118
 
119
119
  def get_candidate_gems
120
- @candidate_gems = unless options[:args].empty?
120
+ @candidate_gems = if options[:args].empty?
121
+ Gem::Specification.to_a
122
+ else
121
123
  options[:args].map do |gem_name|
122
124
  Gem::Specification.find_all_by_name gem_name
123
125
  end.flatten
124
- else
125
- Gem::Specification.to_a
126
126
  end
127
127
  end
128
128
 
@@ -131,9 +131,7 @@ If no gems are named all gems in GEM_HOME are cleaned.
131
131
  @primary_gems[spec.name].version != spec.version
132
132
  end
133
133
 
134
- default_gems, gems_to_cleanup = gems_to_cleanup.partition do |spec|
135
- spec.default_gem?
136
- end
134
+ default_gems, gems_to_cleanup = gems_to_cleanup.partition(&:default_gem?)
137
135
 
138
136
  uninstall_from = options[:user_install] ? Gem.user_dir : @original_home
139
137
 
@@ -168,8 +166,8 @@ If no gems are named all gems in GEM_HOME are cleaned.
168
166
  say "Attempting to uninstall #{spec.full_name}"
169
167
 
170
168
  uninstall_options = {
171
- :executables => false,
172
- :version => "= #{spec.version}",
169
+ executables: false,
170
+ version: "= #{spec.version}",
173
171
  }
174
172
 
175
173
  uninstall_options[:user_install] = Gem.user_dir == spec.base_dir
@@ -8,8 +8,8 @@ class Gem::Commands::ContentsCommand < Gem::Command
8
8
 
9
9
  def initialize
10
10
  super "contents", "Display the contents of the installed gems",
11
- :specdirs => [], :lib_only => false, :prefix => true,
12
- :show_install_dir => false
11
+ specdirs: [], lib_only: false, prefix: true,
12
+ show_install_dir: false
13
13
 
14
14
  add_version_option
15
15
 
@@ -94,7 +94,7 @@ prefix or only the files that are requireable.
94
94
  gem_path = spec.full_gem_path
95
95
  extra = "/{#{spec.require_paths.join ","}}" if options[:lib_only]
96
96
  glob = "#{gem_path}#{extra}/**/*"
97
- prefix_re = /#{Regexp.escape(gem_path)}\//
97
+ prefix_re = %r{#{Regexp.escape(gem_path)}/}
98
98
 
99
99
  Dir[glob].map do |file|
100
100
  [gem_path, file.sub(prefix_re, "")]
@@ -104,7 +104,7 @@ prefix or only the files that are requireable.
104
104
  def files_in_default_gem(spec)
105
105
  spec.files.map do |file|
106
106
  case file
107
- when /\A#{spec.bindir}\//
107
+ when %r{\A#{spec.bindir}/}
108
108
  # $' is POSTMATCH
109
109
  [RbConfig::CONFIG["bindir"], $']
110
110
  when /\.so\z/
@@ -11,15 +11,14 @@ class Gem::Commands::DependencyCommand < Gem::Command
11
11
  def initialize
12
12
  super "dependency",
13
13
  "Show the dependencies of an installed gem",
14
- :version => Gem::Requirement.default, :domain => :local
14
+ version: Gem::Requirement.default, domain: :local
15
15
 
16
16
  add_version_option
17
17
  add_platform_option
18
18
  add_prerelease_option
19
19
 
20
20
  add_option("-R", "--[no-]reverse-dependencies",
21
- "Include reverse dependencies in the output") do
22
- |value, options|
21
+ "Include reverse dependencies in the output") do |value, options|
23
22
  options[:reverse_dependencies] = value
24
23
  end
25
24
 
@@ -92,7 +91,7 @@ use with other commands.
92
91
  def display_pipe(specs) # :nodoc:
93
92
  specs.each do |spec|
94
93
  next if spec.dependencies.empty?
95
- spec.dependencies.sort_by {|dep| dep.name }.each do |dep|
94
+ spec.dependencies.sort_by(&:name).each do |dep|
96
95
  say "#{dep.name} --version '#{dep.requirement}'"
97
96
  end
98
97
  end
@@ -153,7 +152,7 @@ use with other commands.
153
152
  response = String.new
154
153
  response << " " * level + "Gem #{spec.full_name}\n"
155
154
  unless spec.dependencies.empty?
156
- spec.dependencies.sort_by {|dep| dep.name }.each do |dep|
155
+ spec.dependencies.sort_by(&:name).each do |dep|
157
156
  response << " " * level + " #{dep}\n"
158
157
  end
159
158
  end
@@ -108,9 +108,7 @@ lib/rubygems/defaults/operating_system.rb
108
108
 
109
109
  out << " - RUBYGEMS VERSION: #{Gem::VERSION}\n"
110
110
 
111
- out << " - RUBY VERSION: #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}"
112
- out << " patchlevel #{RUBY_PATCHLEVEL}" if defined? RUBY_PATCHLEVEL
113
- out << ") [#{RUBY_PLATFORM}]\n"
111
+ out << " - RUBY VERSION: #{RUBY_VERSION} (#{RUBY_RELEASE_DATE} patchlevel #{RUBY_PATCHLEVEL}) [#{RUBY_PLATFORM}]\n"
114
112
 
115
113
  out << " - INSTALLATION DIRECTORY: #{Gem.dir}\n"
116
114
 
@@ -23,7 +23,7 @@ class Gem::Commands::ExecCommand < Gem::Command
23
23
 
24
24
  add_option(:"Install/Update", "--conservative",
25
25
  "Prefer the most recent installed version, ",
26
- "rather than the latest version overall") do |value, options|
26
+ "rather than the latest version overall") do |_value, options|
27
27
  options[:conservative] = true
28
28
  end
29
29
  end
@@ -10,8 +10,8 @@ class Gem::Commands::FetchCommand < Gem::Command
10
10
 
11
11
  def initialize
12
12
  defaults = {
13
- :suggest_alternate => true,
14
- :version => Gem::Requirement.default,
13
+ suggest_alternate: true,
14
+ version: Gem::Requirement.default,
15
15
  }
16
16
 
17
17
  super "fetch", "Download a gem and place it in the current directory", defaults
@@ -1,86 +1,51 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "../command"
4
- require_relative "../indexer"
5
4
 
6
- ##
7
- # Generates a index files for use as a gem server.
8
- #
9
- # See `gem help generate_index`
10
-
11
- class Gem::Commands::GenerateIndexCommand < Gem::Command
12
- def initialize
13
- super "generate_index",
14
- "Generates the index files for a gem server directory",
15
- :directory => ".", :build_modern => true
5
+ unless defined? Gem::Commands::GenerateIndexCommand
6
+ class Gem::Commands::GenerateIndexCommand < Gem::Command
7
+ module RubygemsTrampoline
8
+ def description # :nodoc:
9
+ <<~EOF
10
+ The generate_index command has been moved to the rubygems-generate_index gem.
11
+ EOF
12
+ end
16
13
 
17
- add_option "-d", "--directory=DIRNAME",
18
- "repository base dir containing gems subdir" do |dir, options|
19
- options[:directory] = File.expand_path dir
20
- end
14
+ def execute
15
+ alert_error "Install the rubygems-generate_index gem for the generate_index command"
16
+ end
21
17
 
22
- add_option "--[no-]modern",
23
- "Generate indexes for RubyGems",
24
- "(always true)" do |value, options|
25
- options[:build_modern] = value
18
+ def invoke_with_build_args(args, build_args)
19
+ name = "rubygems-generate_index"
20
+ spec = begin
21
+ Gem::Specification.find_by_name(name)
22
+ rescue Gem::LoadError
23
+ require "rubygems/dependency_installer"
24
+ Gem.install(name, Gem::Requirement.default, Gem::DependencyInstaller::DEFAULT_OPTIONS).find {|s| s.name == name }
25
+ end
26
+
27
+ # remove the methods defined in this file so that the methods defined in the gem are used instead,
28
+ # and without a method redefinition warning
29
+ %w[description execute invoke_with_build_args].each do |method|
30
+ RubygemsTrampoline.remove_method(method)
31
+ end
32
+ self.class.singleton_class.remove_method(:new)
33
+
34
+ spec.activate
35
+ Gem.load_plugin_files spec.matches_for_glob("rubygems_plugin#{Gem.suffix_pattern}")
36
+
37
+ self.class.new.invoke_with_build_args(args, build_args)
38
+ end
26
39
  end
40
+ private_constant :RubygemsTrampoline
27
41
 
28
- deprecate_option("--modern", version: "4.0", extra_msg: "Modern indexes (specs, latest_specs, and prerelease_specs) are always generated, so this option is not needed.")
29
- deprecate_option("--no-modern", version: "4.0", extra_msg: "The `--no-modern` option is currently ignored. Modern indexes (specs, latest_specs, and prerelease_specs) are always generated.")
30
-
31
- add_option "--update",
32
- "Update modern indexes with gems added",
33
- "since the last update" do |value, options|
34
- options[:update] = value
42
+ # remove_method(:initialize) warns, but removing new does not warn
43
+ def self.new
44
+ command = allocate
45
+ command.send(:initialize, "generate_index", "Generates the index files for a gem server directory (requires rubygems-generate_index)")
46
+ command
35
47
  end
36
- end
37
-
38
- def defaults_str # :nodoc:
39
- "--directory . --modern"
40
- end
41
-
42
- def description # :nodoc:
43
- <<-EOF
44
- The generate_index command creates a set of indexes for serving gems
45
- statically. The command expects a 'gems' directory under the path given to
46
- the --directory option. The given directory will be the directory you serve
47
- as the gem repository.
48
48
 
49
- For `gem generate_index --directory /path/to/repo`, expose /path/to/repo via
50
- your HTTP server configuration (not /path/to/repo/gems).
51
-
52
- When done, it will generate a set of files like this:
53
-
54
- gems/*.gem # .gem files you want to
55
- # index
56
-
57
- specs.<version>.gz # specs index
58
- latest_specs.<version>.gz # latest specs index
59
- prerelease_specs.<version>.gz # prerelease specs index
60
- quick/Marshal.<version>/<gemname>.gemspec.rz # Marshal quick index file
61
-
62
- The .rz extension files are compressed with the inflate algorithm.
63
- The Marshal version number comes from ruby's Marshal::MAJOR_VERSION and
64
- Marshal::MINOR_VERSION constants. It is used to ensure compatibility.
65
- EOF
66
- end
67
-
68
- def execute
69
- # This is always true because it's the only way now.
70
- options[:build_modern] = true
71
-
72
- if !File.exist?(options[:directory]) ||
73
- !File.directory?(options[:directory])
74
- alert_error "unknown directory name #{options[:directory]}."
75
- terminate_interaction 1
76
- else
77
- indexer = Gem::Indexer.new options.delete(:directory), options
78
-
79
- if options[:update]
80
- indexer.update_index
81
- else
82
- indexer.generate_index
83
- end
84
- end
49
+ prepend(RubygemsTrampoline)
85
50
  end
86
51
  end
@@ -324,7 +324,7 @@ platform.
324
324
 
325
325
  margin_width = 4
326
326
 
327
- desc_width = @command_manager.command_names.map {|n| n.size }.max + 4
327
+ desc_width = @command_manager.command_names.map(&:size).max + 4
328
328
 
329
329
  summary_width = 80 - margin_width - desc_width
330
330
  wrap_indent = " " * (margin_width + desc_width)
@@ -333,7 +333,7 @@ platform.
333
333
  @command_manager.command_names.each do |cmd_name|
334
334
  command = @command_manager[cmd_name]
335
335
 
336
- next if command.deprecated?
336
+ next if command&.deprecated?
337
337
 
338
338
  summary =
339
339
  if command
@@ -343,7 +343,7 @@ platform.
343
343
  end
344
344
 
345
345
  summary = wrap(summary, summary_width).split "\n"
346
- out << sprintf(format, cmd_name, summary.shift)
346
+ out << format(format, cmd_name, summary.shift)
347
347
  until summary.empty? do
348
348
  out << "#{wrap_indent}#{summary.shift}"
349
349
  end
@@ -8,8 +8,8 @@ class Gem::Commands::InfoCommand < Gem::Command
8
8
 
9
9
  def initialize
10
10
  super "info", "Show information for the given gem",
11
- :name => //, :domain => :local, :details => false, :versions => true,
12
- :installed => nil, :version => Gem::Requirement.default
11
+ name: //, domain: :local, details: false, versions: true,
12
+ installed: nil, version: Gem::Requirement.default
13
13
 
14
14
  add_query_options
15
15
 
@@ -23,11 +23,11 @@ class Gem::Commands::InstallCommand < Gem::Command
23
23
 
24
24
  def initialize
25
25
  defaults = Gem::DependencyInstaller::DEFAULT_OPTIONS.merge({
26
- :format_executable => false,
27
- :lock => true,
28
- :suggest_alternate => true,
29
- :version => Gem::Requirement.default,
30
- :without_groups => [],
26
+ format_executable: false,
27
+ lock: true,
28
+ suggest_alternate: true,
29
+ version: Gem::Requirement.default,
30
+ without_groups: [],
31
31
  })
32
32
 
33
33
  defaults.merge!(install_update_options)
@@ -48,7 +48,7 @@ class Gem::Commands::InstallCommand < Gem::Command
48
48
  end
49
49
 
50
50
  def defaults_str # :nodoc:
51
- "--both --version '#{Gem::Requirement.default}' --no-force\n" +
51
+ "--both --version '#{Gem::Requirement.default}' --no-force\n" \
52
52
  "--install-dir #{Gem.dir} --lock\n" +
53
53
  install_update_defaults_str
54
54
  end
@@ -136,13 +136,6 @@ You can use `i` command instead of `install`.
136
136
  "#{program_name} [options] GEMNAME [GEMNAME ...] -- --build-flags"
137
137
  end
138
138
 
139
- def check_install_dir # :nodoc:
140
- if options[:install_dir] && options[:user_install]
141
- alert_error "Use --install-dir or --user-install but not both"
142
- terminate_interaction 1
143
- end
144
- end
145
-
146
139
  def check_version # :nodoc:
147
140
  if options[:version] != Gem::Requirement.default &&
148
141
  get_all_gem_names.size > 1
@@ -162,7 +155,6 @@ You can use `i` command instead of `install`.
162
155
 
163
156
  ENV.delete "GEM_PATH" if options[:install_dir].nil?
164
157
 
165
- check_install_dir
166
158
  check_version
167
159
 
168
160
  load_hooks
@@ -171,7 +163,7 @@ You can use `i` command instead of `install`.
171
163
 
172
164
  show_installed
173
165
 
174
- say update_suggestion if eglible_for_update?
166
+ say update_suggestion if eligible_for_update?
175
167
 
176
168
  terminate_interaction exit_code
177
169
  end
@@ -263,7 +255,7 @@ You can use `i` command instead of `install`.
263
255
  return unless errors
264
256
 
265
257
  errors.each do |x|
266
- return unless Gem::SourceFetchProblem === x
258
+ next unless Gem::SourceFetchProblem === x
267
259
 
268
260
  require_relative "../uri"
269
261
  msg = "Unable to pull data from '#{Gem::Uri.redact(x.source.uri)}': #{x.error.message}"
@@ -11,8 +11,8 @@ class Gem::Commands::ListCommand < Gem::Command
11
11
 
12
12
  def initialize
13
13
  super "list", "Display local gems whose name matches REGEXP",
14
- :domain => :local, :details => false, :versions => true,
15
- :installed => nil, :version => Gem::Requirement.default
14
+ domain: :local, details: false, versions: true,
15
+ installed: nil, version: Gem::Requirement.default
16
16
 
17
17
  add_query_options
18
18
  end
@@ -5,7 +5,7 @@ require_relative "../command"
5
5
  class Gem::Commands::LockCommand < Gem::Command
6
6
  def initialize
7
7
  super "lock", "Generate a lockdown list of gems",
8
- :strict => false
8
+ strict: false
9
9
 
10
10
  add_option "-s", "--[no-]strict",
11
11
  "fail if unable to satisfy a dependency" do |strict, options|
@@ -70,7 +70,7 @@ class Gem::Commands::OpenCommand < Gem::Command
70
70
  end
71
71
 
72
72
  def open_editor(path)
73
- system(*@editor.split(/\s+/) + [path], { :chdir => path })
73
+ system(*@editor.split(/\s+/) + [path], { chdir: path })
74
74
  end
75
75
 
76
76
  def spec_for(name)
@@ -39,7 +39,7 @@ permission to.
39
39
  add_proxy_option
40
40
  add_key_option
41
41
  add_otp_option
42
- defaults.merge! :add => [], :remove => []
42
+ defaults.merge! add: [], remove: []
43
43
 
44
44
  add_option "-a", "--add NEW_OWNER", "Add an owner by user identifier" do |value, options|
45
45
  options[:add] << value