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
@@ -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
@@ -11,10 +11,10 @@ class Gem::Commands::PristineCommand < Gem::Command
11
11
  def initialize
12
12
  super "pristine",
13
13
  "Restores installed gems to pristine condition from files located in the gem cache",
14
- :version => Gem::Requirement.default,
15
- :extensions => true,
16
- :extensions_set => false,
17
- :all => false
14
+ version: Gem::Requirement.default,
15
+ extensions: true,
16
+ extensions_set: false,
17
+ all: false
18
18
 
19
19
  add_option("--all",
20
20
  "Restore all installed gems to pristine",
@@ -114,16 +114,14 @@ extensions will be restored.
114
114
  spec.extensions && !spec.extensions.empty?
115
115
  end
116
116
  elsif options[:only_missing_extensions]
117
- Gem::Specification.select do |spec|
118
- spec.missing_extensions?
119
- end
117
+ Gem::Specification.select(&:missing_extensions?)
120
118
  else
121
119
  get_all_gem_names.sort.map do |gem_name|
122
120
  Gem::Specification.find_all_by_name(gem_name, options[:version]).reverse
123
121
  end.flatten
124
122
  end
125
123
 
126
- specs = specs.select {|spec| RUBY_ENGINE == spec.platform || Gem::Platform.local === spec.platform || spec.platform == Gem::Platform::RUBY }
124
+ specs = specs.select {|spec| spec.platform == RUBY_ENGINE || Gem::Platform.local === spec.platform || spec.platform == Gem::Platform::RUBY }
127
125
 
128
126
  if specs.to_a.empty?
129
127
  raise Gem::Exception,
@@ -138,7 +136,7 @@ extensions will be restored.
138
136
  next
139
137
  end
140
138
 
141
- if options.has_key? :skip
139
+ if options.key? :skip
142
140
  if options[:skip].include? spec.name
143
141
  say "Skipped #{spec.full_name}, it was given through options"
144
142
  next
@@ -181,12 +179,12 @@ extensions will be restored.
181
179
  install_dir = options[:install_dir] if options[:install_dir]
182
180
 
183
181
  installer_options = {
184
- :wrappers => true,
185
- :force => true,
186
- :install_dir => install_dir || spec.base_dir,
187
- :env_shebang => env_shebang,
188
- :build_args => spec.build_args,
189
- :bin_dir => bin_dir,
182
+ wrappers: true,
183
+ force: true,
184
+ install_dir: install_dir || spec.base_dir,
185
+ env_shebang: env_shebang,
186
+ build_args: spec.build_args,
187
+ bin_dir: bin_dir,
190
188
  }
191
189
 
192
190
  if options[:only_executables]
@@ -30,7 +30,7 @@ The push command will use ~/.gem/credentials to authenticate to a server, but yo
30
30
  end
31
31
 
32
32
  def initialize
33
- super "push", "Push a gem up to the gem server", :host => self.host
33
+ super "push", "Push a gem up to the gem server", host: host
34
34
 
35
35
  @user_defined_host = false
36
36
 
@@ -75,7 +75,7 @@ The push command will use ~/.gem/credentials to authenticate to a server, but yo
75
75
  @host ||= push_host
76
76
 
77
77
  # Always include @host, even if it's nil
78
- args += [ @host, push_host ]
78
+ args += [@host, push_host]
79
79
 
80
80
  say "Pushing gem to #{@host || Gem.host}..."
81
81
 
@@ -10,7 +10,7 @@ class Gem::Commands::QueryCommand < Gem::Command
10
10
 
11
11
  include Gem::QueryUtils
12
12
 
13
- alias warning_without_suggested_alternatives deprecation_warning
13
+ alias_method :warning_without_suggested_alternatives, :deprecation_warning
14
14
  def deprecation_warning
15
15
  warning_without_suggested_alternatives
16
16
 
@@ -18,11 +18,10 @@ class Gem::Commands::QueryCommand < Gem::Command
18
18
  alert_warning message unless Gem::Deprecate.skip
19
19
  end
20
20
 
21
- def initialize(name = "query",
22
- summary = "Query gem information in local or remote repositories")
21
+ def initialize(name = "query", summary = "Query gem information in local or remote repositories")
23
22
  super name, summary,
24
- :domain => :local, :details => false, :versions => true,
25
- :installed => nil, :version => Gem::Requirement.default
23
+ domain: :local, details: false, versions: true,
24
+ installed: nil, version: Gem::Requirement.default
26
25
 
27
26
  add_option("-n", "--name-matches REGEXP",
28
27
  "Name of gem(s) to query on matches the",
@@ -10,8 +10,8 @@ class Gem::Commands::RdocCommand < Gem::Command
10
10
 
11
11
  def initialize
12
12
  super "rdoc", "Generates RDoc for pre-installed gems",
13
- :version => Gem::Requirement.default,
14
- :include_rdoc => false, :include_ri => true, :overwrite => false
13
+ version: Gem::Requirement.default,
14
+ include_rdoc: false, include_ri: true, overwrite: false
15
15
 
16
16
  add_option("--all",
17
17
  "Generate RDoc/RI documentation for all",
@@ -8,8 +8,8 @@ class Gem::Commands::SearchCommand < Gem::Command
8
8
 
9
9
  def initialize
10
10
  super "search", "Display remote gems whose name matches REGEXP",
11
- :domain => :remote, :details => false, :versions => true,
12
- :installed => nil, :version => Gem::Requirement.default
11
+ domain: :remote, details: false, versions: true,
12
+ installed: nil, version: Gem::Requirement.default
13
13
 
14
14
  add_query_options
15
15
  end
@@ -7,19 +7,19 @@ require_relative "../command"
7
7
  # RubyGems checkout or tarball.
8
8
 
9
9
  class Gem::Commands::SetupCommand < Gem::Command
10
- HISTORY_HEADER = /^#\s*[\d.a-zA-Z]+\s*\/\s*\d{4}-\d{2}-\d{2}\s*$/.freeze
11
- VERSION_MATCHER = /^#\s*([\d.a-zA-Z]+)\s*\/\s*\d{4}-\d{2}-\d{2}\s*$/.freeze
10
+ HISTORY_HEADER = %r{^#\s*[\d.a-zA-Z]+\s*/\s*\d{4}-\d{2}-\d{2}\s*$}
11
+ VERSION_MATCHER = %r{^#\s*([\d.a-zA-Z]+)\s*/\s*\d{4}-\d{2}-\d{2}\s*$}
12
12
 
13
13
  ENV_PATHS = %w[/usr/bin/env /bin/env].freeze
14
14
 
15
15
  def initialize
16
16
  super "setup", "Install RubyGems",
17
- :format_executable => false, :document => %w[ri],
18
- :force => true,
19
- :site_or_vendor => "sitelibdir",
20
- :destdir => "", :prefix => "", :previous_version => "",
21
- :regenerate_binstubs => true,
22
- :regenerate_plugins => true
17
+ format_executable: false, document: %w[ri],
18
+ force: true,
19
+ site_or_vendor: "sitelibdir",
20
+ destdir: "", prefix: "", previous_version: "",
21
+ regenerate_binstubs: true,
22
+ regenerate_plugins: true
23
23
 
24
24
  add_option "--previous-version=VERSION",
25
25
  "Previous version of RubyGems",
@@ -55,9 +55,9 @@ class Gem::Commands::SetupCommand < Gem::Command
55
55
  "List the documentation types you wish to",
56
56
  "generate. For example: rdoc,ri" do |value, options|
57
57
  options[:document] = case value
58
- when nil then %w[rdoc ri]
59
- when false then []
60
- else value
58
+ when nil then %w[rdoc ri]
59
+ when false then []
60
+ else value
61
61
  end
62
62
  end
63
63
 
@@ -265,7 +265,7 @@ By default, this RubyGems will install gem as:
265
265
  fp.puts bin.join
266
266
  end
267
267
 
268
- install bin_tmp_file, dest_file, :mode => prog_mode
268
+ install bin_tmp_file, dest_file, mode: prog_mode
269
269
  bin_file_names << dest_file
270
270
  ensure
271
271
  rm bin_tmp_file
@@ -287,7 +287,7 @@ By default, this RubyGems will install gem as:
287
287
  TEXT
288
288
  end
289
289
 
290
- install bin_cmd_file, "#{dest_file}.bat", :mode => prog_mode
290
+ install bin_cmd_file, "#{dest_file}.bat", mode: prog_mode
291
291
  ensure
292
292
  rm bin_cmd_file
293
293
  end
@@ -357,7 +357,7 @@ By default, this RubyGems will install gem as:
357
357
  say "Set the GEM_HOME environment variable if you want RDoc generated"
358
358
  end
359
359
 
360
- return false
360
+ false
361
361
  end
362
362
 
363
363
  def install_default_bundler_gem(bin_dir)
@@ -369,18 +369,21 @@ By default, this RubyGems will install gem as:
369
369
  File.dirname(loaded_from)
370
370
  else
371
371
  target_specs_dir = File.join(default_dir, "specifications", "default")
372
- mkdir_p target_specs_dir, :mode => 0o755
372
+ mkdir_p target_specs_dir, mode: 0o755
373
373
  target_specs_dir
374
374
  end
375
375
 
376
- bundler_spec = Dir.chdir("bundler") { Gem::Specification.load("bundler.gemspec") }
377
- default_spec_path = File.join(specs_dir, "#{bundler_spec.full_name}.gemspec")
378
- Gem.write_binary(default_spec_path, bundler_spec.to_ruby)
376
+ new_bundler_spec = Dir.chdir("bundler") { Gem::Specification.load("bundler.gemspec") }
377
+ full_name = new_bundler_spec.full_name
378
+ gemspec_path = "#{full_name}.gemspec"
379
+
380
+ default_spec_path = File.join(specs_dir, gemspec_path)
381
+ Gem.write_binary(default_spec_path, new_bundler_spec.to_ruby)
379
382
 
380
383
  bundler_spec = Gem::Specification.load(default_spec_path)
381
384
 
382
385
  # Remove gemspec that was same version of vendored bundler.
383
- normal_gemspec = File.join(default_dir, "specifications", "bundler-#{bundler_spec.version}.gemspec")
386
+ normal_gemspec = File.join(default_dir, "specifications", gemspec_path)
384
387
  if File.file? normal_gemspec
385
388
  File.delete normal_gemspec
386
389
  end
@@ -388,20 +391,14 @@ By default, this RubyGems will install gem as:
388
391
  # Remove gem files that were same version of vendored bundler.
389
392
  if File.directory? bundler_spec.gems_dir
390
393
  Dir.entries(bundler_spec.gems_dir).
391
- select {|default_gem| File.basename(default_gem) == "bundler-#{bundler_spec.version}" }.
394
+ select {|default_gem| File.basename(default_gem) == full_name }.
392
395
  each {|default_gem| rm_r File.join(bundler_spec.gems_dir, default_gem) }
393
396
  end
394
397
 
395
- bundler_bin_dir = bundler_spec.bin_dir
396
- mkdir_p bundler_bin_dir, :mode => 0o755
397
- bundler_spec.executables.each do |e|
398
- cp File.join("bundler", bundler_spec.bindir, e), File.join(bundler_bin_dir, e)
399
- end
400
-
401
398
  require_relative "../installer"
402
399
 
403
400
  Dir.chdir("bundler") do
404
- built_gem = Gem::Package.build(bundler_spec)
401
+ built_gem = Gem::Package.build(new_bundler_spec)
405
402
  begin
406
403
  Gem::Installer.at(
407
404
  built_gem,
@@ -418,9 +415,9 @@ By default, this RubyGems will install gem as:
418
415
  end
419
416
  end
420
417
 
421
- bundler_spec.executables.each {|executable| bin_file_names << target_bin_path(bin_dir, executable) }
418
+ new_bundler_spec.executables.each {|executable| bin_file_names << target_bin_path(bin_dir, executable) }
422
419
 
423
- say "Bundler #{bundler_spec.version} installed"
420
+ say "Bundler #{new_bundler_spec.version} installed"
424
421
  end
425
422
 
426
423
  def make_destination_dirs
@@ -430,10 +427,10 @@ By default, this RubyGems will install gem as:
430
427
  lib_dir, bin_dir = generate_default_dirs
431
428
  end
432
429
 
433
- mkdir_p lib_dir, :mode => 0o755
434
- mkdir_p bin_dir, :mode => 0o755
430
+ mkdir_p lib_dir, mode: 0o755
431
+ mkdir_p bin_dir, mode: 0o755
435
432
 
436
- return lib_dir, bin_dir
433
+ [lib_dir, bin_dir]
437
434
  end
438
435
 
439
436
  def generate_default_man_dir
@@ -576,8 +573,8 @@ abort "#{deprecation_message}"
576
573
  def uninstall_old_gemcutter
577
574
  require_relative "../uninstaller"
578
575
 
579
- ui = Gem::Uninstaller.new("gemcutter", :all => true, :ignore => true,
580
- :version => "< 0.4")
576
+ ui = Gem::Uninstaller.new("gemcutter", all: true, ignore: true,
577
+ version: "< 0.4")
581
578
  ui.uninstall
582
579
  rescue Gem::InstallError
583
580
  end
@@ -639,10 +636,10 @@ abort "#{deprecation_message}"
639
636
  dest_file = File.join dest_dir, file
640
637
  dest_dir = File.dirname dest_file
641
638
  unless File.directory? dest_dir
642
- mkdir_p dest_dir, :mode => 0o755
639
+ mkdir_p dest_dir, mode: 0o755
643
640
  end
644
641
 
645
- install file, dest_file, :mode => options[:data_mode] || 0o644
642
+ install file, dest_file, mode: options[:data_mode] || 0o644
646
643
  end
647
644
 
648
645
  def remove_file_list(files, dir)
@@ -71,7 +71,7 @@ class Gem::Commands::SourcesCommand < Gem::Command
71
71
  def check_typo_squatting(source)
72
72
  if source.typo_squatting?("rubygems.org")
73
73
  question = <<-QUESTION.chomp
74
- #{source.uri.to_s} is too similar to https://rubygems.org
74
+ #{source.uri} is too similar to https://rubygems.org
75
75
 
76
76
  Do you want to add this source?
77
77
  QUESTION
@@ -83,8 +83,8 @@ Do you want to add this source?
83
83
  def check_rubygems_https(source_uri) # :nodoc:
84
84
  uri = URI source_uri
85
85
 
86
- if uri.scheme && uri.scheme.downcase == "http" &&
87
- uri.host.downcase == "rubygems.org"
86
+ if uri.scheme && uri.scheme.casecmp("http").zero? &&
87
+ uri.host.casecmp("rubygems.org").zero?
88
88
  question = <<-QUESTION.chomp
89
89
  https://rubygems.org is recommended for security over #{uri}
90
90
 
@@ -99,16 +99,16 @@ Do you want to add this insecure source?
99
99
  path = Gem.spec_cache_dir
100
100
  FileUtils.rm_rf path
101
101
 
102
- unless File.exist? path
103
- say "*** Removed specs cache ***"
104
- else
105
- unless File.writable? path
106
- say "*** Unable to remove source cache (write protected) ***"
107
- else
102
+ if File.exist? path
103
+ if File.writable? path
108
104
  say "*** Unable to remove source cache ***"
105
+ else
106
+ say "*** Unable to remove source cache (write protected) ***"
109
107
  end
110
108
 
111
109
  terminate_interaction 1
110
+ else
111
+ say "*** Removed specs cache ***"
112
112
  end
113
113
  end
114
114
 
@@ -194,13 +194,13 @@ To remove a source use the --remove argument:
194
194
  end
195
195
 
196
196
  def remove_source(source_uri) # :nodoc:
197
- unless Gem.sources.include? source_uri
198
- say "source #{source_uri} not present in cache"
199
- else
197
+ if Gem.sources.include? source_uri
200
198
  Gem.sources.delete source_uri
201
199
  Gem.configuration.write
202
200
 
203
201
  say "#{source_uri} removed from sources"
202
+ else
203
+ say "source #{source_uri} not present in cache"
204
204
  end
205
205
  end
206
206
 
@@ -13,27 +13,27 @@ class Gem::Commands::SpecificationCommand < Gem::Command
13
13
  Gem.load_yaml
14
14
 
15
15
  super "specification", "Display gem specification (in yaml)",
16
- :domain => :local, :version => Gem::Requirement.default,
17
- :format => :yaml
16
+ domain: :local, version: Gem::Requirement.default,
17
+ format: :yaml
18
18
 
19
19
  add_version_option("examine")
20
20
  add_platform_option
21
21
  add_prerelease_option
22
22
 
23
23
  add_option("--all", "Output specifications for all versions of",
24
- "the gem") do |value, options|
24
+ "the gem") do |_value, options|
25
25
  options[:all] = true
26
26
  end
27
27
 
28
- add_option("--ruby", "Output ruby format") do |value, options|
28
+ add_option("--ruby", "Output ruby format") do |_value, options|
29
29
  options[:format] = :ruby
30
30
  end
31
31
 
32
- add_option("--yaml", "Output YAML format") do |value, options|
32
+ add_option("--yaml", "Output YAML format") do |_value, options|
33
33
  options[:format] = :yaml
34
34
  end
35
35
 
36
- add_option("--marshal", "Output Marshal format") do |value, options|
36
+ add_option("--marshal", "Output Marshal format") do |_value, options|
37
37
  options[:format] = :marshal
38
38
  end
39
39
 
@@ -138,16 +138,16 @@ Specific fields in the specification can be extracted in YAML format:
138
138
  end
139
139
 
140
140
  unless options[:all]
141
- specs = [specs.max_by {|s| s.version }]
141
+ specs = [specs.max_by(&:version)]
142
142
  end
143
143
 
144
144
  specs.each do |s|
145
145
  s = s.send field if field
146
146
 
147
147
  say case options[:format]
148
- when :ruby then s.to_ruby
149
- when :marshal then Marshal.dump s
150
- else s.to_yaml
148
+ when :ruby then s.to_ruby
149
+ when :marshal then Marshal.dump s
150
+ else s.to_yaml
151
151
  end
152
152
 
153
153
  say "\n"
@@ -18,7 +18,7 @@ longer using.
18
18
  end
19
19
 
20
20
  def usage # :nodoc:
21
- "#{program_name}"
21
+ program_name.to_s
22
22
  end
23
23
 
24
24
  def execute
@@ -15,12 +15,11 @@ class Gem::Commands::UninstallCommand < Gem::Command
15
15
 
16
16
  def initialize
17
17
  super "uninstall", "Uninstall gems from the local repository",
18
- :version => Gem::Requirement.default, :user_install => true,
19
- :check_dev => false, :vendor => false
18
+ version: Gem::Requirement.default, user_install: true,
19
+ check_dev: false, vendor: false
20
20
 
21
21
  add_option("-a", "--[no-]all",
22
- "Uninstall all matching versions"
23
- ) do |value, options|
22
+ "Uninstall all matching versions") do |value, options|
24
23
  options[:all] = value
25
24
  end
26
25
 
@@ -80,7 +79,7 @@ class Gem::Commands::UninstallCommand < Gem::Command
80
79
 
81
80
  add_option("--vendor",
82
81
  "Uninstall gem from the vendor directory.",
83
- "Only for use by gem repackagers.") do |value, options|
82
+ "Only for use by gem repackagers.") do |_value, options|
84
83
  unless Gem.vendor_dir
85
84
  raise Gem::OptionParser::InvalidOption.new "your platform is not supported"
86
85
  end
@@ -96,7 +95,7 @@ class Gem::Commands::UninstallCommand < Gem::Command
96
95
  end
97
96
 
98
97
  def defaults_str # :nodoc:
99
- "--version '#{Gem::Requirement.default}' --no-force " +
98
+ "--version '#{Gem::Requirement.default}' --no-force " \
100
99
  "--user-install"
101
100
  end
102
101
 
@@ -139,7 +138,7 @@ that is a dependency of an existing gem. You can use the
139
138
  end
140
139
 
141
140
  def uninstall_all
142
- specs = Gem::Specification.reject {|spec| spec.default_gem? }
141
+ specs = Gem::Specification.reject(&:default_gem?)
143
142
 
144
143
  specs.each do |spec|
145
144
  options[:version] = spec.version
@@ -169,10 +168,10 @@ that is a dependency of an existing gem. You can use the
169
168
  gems_to_uninstall = {}
170
169
 
171
170
  deps.each do |dep|
172
- next if gems_to_uninstall[dep.name]
173
- gems_to_uninstall[dep.name] = true
174
-
175
- unless original_gem_version[dep.name] == Gem::Requirement.default
171
+ if original_gem_version[dep.name] == Gem::Requirement.default
172
+ next if gems_to_uninstall[dep.name]
173
+ gems_to_uninstall[dep.name] = true
174
+ else
176
175
  options[:version] = dep.version
177
176
  end
178
177
 
@@ -184,12 +183,12 @@ that is a dependency of an existing gem. You can use the
184
183
  uninstall(gem_name)
185
184
  rescue Gem::GemNotInHomeException => e
186
185
  spec = e.spec
187
- alert("In order to remove #{spec.name}, please execute:\n" +
186
+ alert("In order to remove #{spec.name}, please execute:\n" \
188
187
  "\tgem uninstall #{spec.name} --install-dir=#{spec.installation_path}")
189
188
  rescue Gem::UninstallError => e
190
189
  spec = e.spec
191
- alert_error("Error: unable to successfully uninstall '#{spec.name}' which is " +
192
- "located at '#{spec.full_gem_path}'. This is most likely because" +
190
+ alert_error("Error: unable to successfully uninstall '#{spec.name}' which is " \
191
+ "located at '#{spec.full_gem_path}'. This is most likely because" \
193
192
  "the current user does not have the appropriate permissions")
194
193
  terminate_interaction 1
195
194
  end
@@ -21,15 +21,15 @@ class Gem::Commands::UnpackCommand < Gem::Command
21
21
  require "fileutils"
22
22
 
23
23
  super "unpack", "Unpack an installed gem to the current directory",
24
- :version => Gem::Requirement.default,
25
- :target => Dir.pwd
24
+ version: Gem::Requirement.default,
25
+ target: Dir.pwd
26
26
 
27
27
  add_option("--target=DIR",
28
28
  "target directory for unpacking") do |value, options|
29
29
  options[:target] = value
30
30
  end
31
31
 
32
- add_option("--spec", "unpack the gem specification") do |value, options|
32
+ add_option("--spec", "unpack the gem specification") do |_value, options|
33
33
  options[:spec] = true
34
34
  end
35
35
 
@@ -130,7 +130,7 @@ command help for an example.
130
130
  return this_path if File.exist? this_path
131
131
  end
132
132
 
133
- return nil
133
+ nil
134
134
  end
135
135
 
136
136
  ##
@@ -151,16 +151,16 @@ command help for an example.
151
151
  # source directories?
152
152
 
153
153
  def get_path(dependency)
154
- return dependency.name if dependency.name =~ /\.gem$/i
154
+ return dependency.name if /\.gem$/i.match?(dependency.name)
155
155
 
156
156
  specs = dependency.matching_specs
157
157
 
158
- selected = specs.max_by {|s| s.version }
158
+ selected = specs.max_by(&:version)
159
159
 
160
160
  return Gem::RemoteFetcher.fetcher.download_to_cache(dependency) unless
161
161
  selected
162
162
 
163
- return unless dependency.name =~ /^#{selected.name}$/i
163
+ return unless /^#{selected.name}$/i.match?(dependency.name)
164
164
 
165
165
  # We expect to find (basename).gem in the 'cache' directory. Furthermore,
166
166
  # the name match must be exact (ignoring case).