rubygems-update 3.3.18 → 3.4.19

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 (615) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1429 -1064
  3. data/CONTRIBUTING.md +31 -8
  4. data/Manifest.txt +61 -36
  5. data/POLICIES.md +55 -20
  6. data/README.md +19 -6
  7. data/bundler/CHANGELOG.md +457 -1
  8. data/bundler/README.md +3 -6
  9. data/bundler/UPGRADING.md +11 -4
  10. data/bundler/bundler.gemspec +8 -10
  11. data/bundler/exe/bundle +5 -16
  12. data/bundler/lib/bundler/build_metadata.rb +2 -2
  13. data/bundler/lib/bundler/cli/add.rb +1 -1
  14. data/bundler/lib/bundler/cli/binstubs.rb +6 -2
  15. data/bundler/lib/bundler/cli/check.rb +1 -1
  16. data/bundler/lib/bundler/cli/common.rb +2 -0
  17. data/bundler/lib/bundler/cli/console.rb +2 -2
  18. data/bundler/lib/bundler/cli/doctor.rb +4 -6
  19. data/bundler/lib/bundler/cli/gem.rb +62 -40
  20. data/bundler/lib/bundler/cli/info.rb +1 -1
  21. data/bundler/lib/bundler/cli/init.rb +6 -2
  22. data/bundler/lib/bundler/cli/install.rb +8 -6
  23. data/bundler/lib/bundler/cli/lock.rb +8 -5
  24. data/bundler/lib/bundler/cli/open.rb +6 -4
  25. data/bundler/lib/bundler/cli/outdated.rb +14 -7
  26. data/bundler/lib/bundler/cli/platform.rb +7 -5
  27. data/bundler/lib/bundler/cli/viz.rb +1 -1
  28. data/bundler/lib/bundler/cli.rb +53 -7
  29. data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
  30. data/bundler/lib/bundler/compact_index_client/updater.rb +40 -39
  31. data/bundler/lib/bundler/constants.rb +1 -1
  32. data/bundler/lib/bundler/current_ruby.rb +16 -5
  33. data/bundler/lib/bundler/definition.rb +262 -133
  34. data/bundler/lib/bundler/dependency.rb +20 -86
  35. data/bundler/lib/bundler/digest.rb +1 -1
  36. data/bundler/lib/bundler/dsl.rb +6 -7
  37. data/bundler/lib/bundler/endpoint_specification.rb +2 -13
  38. data/bundler/lib/bundler/env.rb +2 -2
  39. data/bundler/lib/bundler/environment_preserver.rb +3 -2
  40. data/bundler/lib/bundler/errors.rb +1 -11
  41. data/bundler/lib/bundler/feature_flag.rb +0 -2
  42. data/bundler/lib/bundler/fetcher/compact_index.rb +11 -13
  43. data/bundler/lib/bundler/fetcher/dependency.rb +2 -6
  44. data/bundler/lib/bundler/fetcher/downloader.rb +4 -5
  45. data/bundler/lib/bundler/fetcher/index.rb +1 -2
  46. data/bundler/lib/bundler/fetcher.rb +21 -15
  47. data/bundler/lib/bundler/force_platform.rb +18 -0
  48. data/bundler/lib/bundler/friendly_errors.rb +1 -4
  49. data/bundler/lib/bundler/gem_helper.rb +3 -4
  50. data/bundler/lib/bundler/gem_helpers.rb +7 -2
  51. data/bundler/lib/bundler/gem_version_promoter.rb +53 -98
  52. data/bundler/lib/bundler/graph.rb +3 -3
  53. data/bundler/lib/bundler/index.rb +13 -47
  54. data/bundler/lib/bundler/injector.rb +5 -4
  55. data/bundler/lib/bundler/inline.rb +9 -11
  56. data/bundler/lib/bundler/installer/parallel_installer.rb +4 -34
  57. data/bundler/lib/bundler/installer/standalone.rb +13 -9
  58. data/bundler/lib/bundler/installer.rb +17 -29
  59. data/bundler/lib/bundler/lazy_specification.rb +54 -53
  60. data/bundler/lib/bundler/lockfile_generator.rb +3 -3
  61. data/bundler/lib/bundler/lockfile_parser.rb +17 -16
  62. data/bundler/lib/bundler/man/bundle-add.1 +6 -2
  63. data/bundler/lib/bundler/man/bundle-add.1.ronn +4 -1
  64. data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
  65. data/bundler/lib/bundler/man/bundle-cache.1 +9 -3
  66. data/bundler/lib/bundler/man/bundle-cache.1.ronn +9 -2
  67. data/bundler/lib/bundler/man/bundle-check.1 +1 -1
  68. data/bundler/lib/bundler/man/bundle-clean.1 +2 -2
  69. data/bundler/lib/bundler/man/bundle-clean.1.ronn +1 -1
  70. data/bundler/lib/bundler/man/bundle-config.1 +26 -10
  71. data/bundler/lib/bundler/man/bundle-config.1.ronn +17 -10
  72. data/bundler/lib/bundler/man/bundle-console.1 +53 -0
  73. data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
  74. data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
  75. data/bundler/lib/bundler/man/bundle-exec.1 +6 -6
  76. data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -6
  77. data/bundler/lib/bundler/man/bundle-gem.1 +27 -37
  78. data/bundler/lib/bundler/man/bundle-gem.1.ronn +5 -5
  79. data/bundler/lib/bundler/man/bundle-help.1 +13 -0
  80. data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
  81. data/bundler/lib/bundler/man/bundle-info.1 +3 -3
  82. data/bundler/lib/bundler/man/bundle-info.1.ronn +3 -3
  83. data/bundler/lib/bundler/man/bundle-init.1 +5 -1
  84. data/bundler/lib/bundler/man/bundle-init.1.ronn +2 -0
  85. data/bundler/lib/bundler/man/bundle-inject.1 +5 -2
  86. data/bundler/lib/bundler/man/bundle-inject.1.ronn +3 -1
  87. data/bundler/lib/bundler/man/bundle-install.1 +5 -30
  88. data/bundler/lib/bundler/man/bundle-install.1.ronn +6 -29
  89. data/bundler/lib/bundler/man/bundle-list.1 +1 -1
  90. data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
  91. data/bundler/lib/bundler/man/bundle-open.1 +22 -2
  92. data/bundler/lib/bundler/man/bundle-open.1.ronn +9 -1
  93. data/bundler/lib/bundler/man/bundle-outdated.1 +13 -9
  94. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +12 -9
  95. data/bundler/lib/bundler/man/bundle-platform.1 +16 -6
  96. data/bundler/lib/bundler/man/bundle-platform.1.ronn +14 -7
  97. data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
  98. data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
  99. data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
  100. data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
  101. data/bundler/lib/bundler/man/bundle-show.1 +1 -1
  102. data/bundler/lib/bundler/man/bundle-update.1 +1 -1
  103. data/bundler/lib/bundler/man/bundle-version.1 +35 -0
  104. data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
  105. data/bundler/lib/bundler/man/bundle-viz.1 +4 -1
  106. data/bundler/lib/bundler/man/bundle-viz.1.ronn +2 -0
  107. data/bundler/lib/bundler/man/bundle.1 +15 -10
  108. data/bundler/lib/bundler/man/bundle.1.ronn +12 -7
  109. data/bundler/lib/bundler/man/gemfile.5 +55 -55
  110. data/bundler/lib/bundler/man/gemfile.5.ronn +57 -53
  111. data/bundler/lib/bundler/man/index.txt +4 -0
  112. data/bundler/lib/bundler/match_metadata.rb +13 -0
  113. data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
  114. data/bundler/lib/bundler/mirror.rb +5 -7
  115. data/bundler/lib/bundler/plugin/index.rb +5 -5
  116. data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -4
  117. data/bundler/lib/bundler/plugin/installer.rb +5 -2
  118. data/bundler/lib/bundler/plugin.rb +3 -1
  119. data/bundler/lib/bundler/remote_specification.rb +7 -12
  120. data/bundler/lib/bundler/resolver/base.rb +107 -0
  121. data/bundler/lib/bundler/resolver/candidate.rb +94 -0
  122. data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
  123. data/bundler/lib/bundler/resolver/package.rb +72 -0
  124. data/bundler/lib/bundler/resolver/root.rb +25 -0
  125. data/bundler/lib/bundler/resolver/spec_group.rb +42 -71
  126. data/bundler/lib/bundler/resolver.rb +335 -328
  127. data/bundler/lib/bundler/ruby_dsl.rb +7 -1
  128. data/bundler/lib/bundler/ruby_version.rb +8 -8
  129. data/bundler/lib/bundler/rubygems_ext.rb +100 -9
  130. data/bundler/lib/bundler/rubygems_gem_installer.rb +23 -14
  131. data/bundler/lib/bundler/rubygems_integration.rb +11 -15
  132. data/bundler/lib/bundler/runtime.rb +2 -6
  133. data/bundler/lib/bundler/safe_marshal.rb +31 -0
  134. data/bundler/lib/bundler/settings.rb +5 -11
  135. data/bundler/lib/bundler/setup.rb +4 -1
  136. data/bundler/lib/bundler/shared_helpers.rb +3 -3
  137. data/bundler/lib/bundler/source/git/git_proxy.rb +237 -74
  138. data/bundler/lib/bundler/source/git.rb +55 -30
  139. data/bundler/lib/bundler/source/metadata.rb +1 -2
  140. data/bundler/lib/bundler/source/path/installer.rb +1 -22
  141. data/bundler/lib/bundler/source/path.rb +6 -6
  142. data/bundler/lib/bundler/source/rubygems.rb +26 -81
  143. data/bundler/lib/bundler/source.rb +1 -1
  144. data/bundler/lib/bundler/source_list.rb +8 -2
  145. data/bundler/lib/bundler/spec_set.rb +60 -37
  146. data/bundler/lib/bundler/templates/Executable +1 -1
  147. data/bundler/lib/bundler/templates/Executable.bundler +5 -10
  148. data/bundler/lib/bundler/templates/Executable.standalone +2 -0
  149. data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
  150. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +3 -0
  151. data/bundler/lib/bundler/templates/newgem/README.md.tt +6 -4
  152. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +12 -1
  153. data/bundler/lib/bundler/templates/newgem/bin/console.tt +0 -4
  154. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
  155. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
  156. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt +10 -0
  157. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
  158. data/bundler/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +1 -1
  159. data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
  160. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +10 -0
  161. data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
  162. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
  163. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +9 -2
  164. data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
  165. data/bundler/lib/bundler/ui/shell.rb +35 -12
  166. data/bundler/lib/bundler/ui/silent.rb +21 -5
  167. data/bundler/lib/bundler/uri_normalizer.rb +23 -0
  168. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
  169. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
  170. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
  171. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1351 -409
  172. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
  173. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
  174. data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  175. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  176. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
  177. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  178. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
  179. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  180. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  181. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  182. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  183. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
  184. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  185. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  186. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
  187. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
  188. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +248 -0
  189. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  190. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  191. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +1 -1
  192. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +64 -16
  193. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
  194. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -1
  195. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +27 -7
  196. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -2
  197. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -1
  198. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
  199. data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
  200. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -2
  201. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +15 -9
  202. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +11 -6
  203. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  204. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +1 -2
  205. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +2 -1
  206. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -2
  207. data/bundler/lib/bundler/vendored_persistent.rb +1 -33
  208. data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_pub_grub.rb} +1 -1
  209. data/bundler/lib/bundler/version.rb +5 -1
  210. data/bundler/lib/bundler/worker.rb +5 -7
  211. data/bundler/lib/bundler.rb +25 -77
  212. data/{bin → exe}/gem +4 -5
  213. data/{bin → exe}/update_rubygems +12 -10
  214. data/lib/rubygems/available_set.rb +4 -3
  215. data/lib/rubygems/basic_specification.rb +5 -4
  216. data/lib/rubygems/bundler_version_finder.rb +2 -2
  217. data/lib/rubygems/command.rb +41 -32
  218. data/lib/rubygems/command_manager.rb +30 -15
  219. data/lib/rubygems/commands/build_command.rb +12 -8
  220. data/lib/rubygems/commands/cert_command.rb +34 -33
  221. data/lib/rubygems/commands/check_command.rb +21 -20
  222. data/lib/rubygems/commands/cleanup_command.rb +18 -17
  223. data/lib/rubygems/commands/contents_command.rb +14 -13
  224. data/lib/rubygems/commands/dependency_command.rb +17 -16
  225. data/lib/rubygems/commands/environment_command.rb +6 -5
  226. data/lib/rubygems/commands/exec_command.rb +249 -0
  227. data/lib/rubygems/commands/fetch_command.rb +10 -9
  228. data/lib/rubygems/commands/generate_index_command.rb +18 -17
  229. data/lib/rubygems/commands/help_command.rb +7 -6
  230. data/lib/rubygems/commands/info_command.rb +3 -3
  231. data/lib/rubygems/commands/install_command.rb +28 -23
  232. data/lib/rubygems/commands/list_command.rb +4 -3
  233. data/lib/rubygems/commands/lock_command.rb +5 -4
  234. data/lib/rubygems/commands/mirror_command.rb +4 -3
  235. data/lib/rubygems/commands/open_command.rb +10 -9
  236. data/lib/rubygems/commands/outdated_command.rb +6 -5
  237. data/lib/rubygems/commands/owner_command.rb +17 -14
  238. data/lib/rubygems/commands/pristine_command.rb +46 -36
  239. data/lib/rubygems/commands/push_command.rb +9 -8
  240. data/lib/rubygems/commands/query_command.rb +9 -8
  241. data/lib/rubygems/commands/rdoc_command.rb +21 -19
  242. data/lib/rubygems/commands/search_command.rb +4 -3
  243. data/lib/rubygems/commands/server_command.rb +4 -3
  244. data/lib/rubygems/commands/setup_command.rb +97 -106
  245. data/lib/rubygems/commands/signin_command.rb +10 -9
  246. data/lib/rubygems/commands/signout_command.rb +8 -7
  247. data/lib/rubygems/commands/sources_command.rb +22 -21
  248. data/lib/rubygems/commands/specification_command.rb +14 -13
  249. data/lib/rubygems/commands/stale_command.rb +3 -2
  250. data/lib/rubygems/commands/uninstall_command.rb +44 -40
  251. data/lib/rubygems/commands/unpack_command.rb +14 -13
  252. data/lib/rubygems/commands/update_command.rb +42 -63
  253. data/lib/rubygems/commands/which_command.rb +8 -7
  254. data/lib/rubygems/commands/yank_command.rb +12 -11
  255. data/lib/rubygems/config_file.rb +55 -21
  256. data/lib/rubygems/core_ext/kernel_gem.rb +1 -6
  257. data/lib/rubygems/core_ext/kernel_require.rb +109 -115
  258. data/lib/rubygems/core_ext/kernel_warn.rb +33 -37
  259. data/lib/rubygems/core_ext/tcpsocket_init.rb +3 -1
  260. data/lib/rubygems/defaults.rb +33 -18
  261. data/lib/rubygems/dependency.rb +15 -11
  262. data/lib/rubygems/dependency_installer.rb +38 -37
  263. data/lib/rubygems/dependency_list.rb +7 -6
  264. data/lib/rubygems/deprecate.rb +3 -2
  265. data/lib/rubygems/doctor.rb +19 -18
  266. data/lib/rubygems/errors.rb +3 -2
  267. data/lib/rubygems/exceptions.rb +16 -8
  268. data/lib/rubygems/ext/build_error.rb +2 -1
  269. data/lib/rubygems/ext/builder.rb +37 -21
  270. data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +9 -5
  271. data/lib/rubygems/ext/cargo_builder.rb +150 -111
  272. data/lib/rubygems/ext/cmake_builder.rb +2 -2
  273. data/lib/rubygems/ext/configure_builder.rb +2 -1
  274. data/lib/rubygems/ext/ext_conf_builder.rb +11 -9
  275. data/lib/rubygems/ext/rake_builder.rb +7 -5
  276. data/lib/rubygems/ext.rb +8 -7
  277. data/lib/rubygems/gem_runner.rb +6 -5
  278. data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +163 -0
  279. data/lib/rubygems/gemcutter_utilities/webauthn_listener.rb +105 -0
  280. data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +78 -0
  281. data/lib/rubygems/gemcutter_utilities.rb +90 -34
  282. data/lib/rubygems/indexer.rb +29 -28
  283. data/lib/rubygems/install_default_message.rb +3 -2
  284. data/lib/rubygems/install_message.rb +3 -2
  285. data/lib/rubygems/install_update_options.rb +56 -55
  286. data/lib/rubygems/installer.rb +54 -46
  287. data/lib/rubygems/installer_uninstaller_utils.rb +2 -2
  288. data/lib/rubygems/local_remote_options.rb +19 -20
  289. data/lib/rubygems/mock_gem_ui.rb +3 -2
  290. data/lib/rubygems/name_tuple.rb +5 -4
  291. data/lib/rubygems/optparse/lib/optparse.rb +20 -15
  292. data/lib/rubygems/optparse.rb +1 -1
  293. data/lib/rubygems/package/digest_io.rb +1 -0
  294. data/lib/rubygems/package/file_source.rb +3 -2
  295. data/lib/rubygems/package/io_source.rb +1 -0
  296. data/lib/rubygems/package/old.rb +9 -8
  297. data/lib/rubygems/package/source.rb +1 -0
  298. data/lib/rubygems/package/tar_header.rb +63 -62
  299. data/lib/rubygems/package/tar_reader/entry.rb +91 -9
  300. data/lib/rubygems/package/tar_reader.rb +2 -29
  301. data/lib/rubygems/package/tar_writer.rb +8 -7
  302. data/lib/rubygems/package.rb +64 -48
  303. data/lib/rubygems/package_task.rb +5 -4
  304. data/lib/rubygems/path_support.rb +1 -0
  305. data/lib/rubygems/platform.rb +79 -53
  306. data/lib/rubygems/psych_tree.rb +2 -1
  307. data/lib/rubygems/query_utils.rb +35 -35
  308. data/lib/rubygems/rdoc.rb +3 -2
  309. data/lib/rubygems/remote_fetcher.rb +23 -22
  310. data/lib/rubygems/request/connection_pools.rb +4 -4
  311. data/lib/rubygems/request/http_pool.rb +2 -1
  312. data/lib/rubygems/request/https_pool.rb +1 -0
  313. data/lib/rubygems/request.rb +23 -22
  314. data/lib/rubygems/request_set/gem_dependency_api.rb +123 -123
  315. data/lib/rubygems/request_set/lockfile/parser.rb +28 -27
  316. data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -3
  317. data/lib/rubygems/request_set/lockfile.rb +6 -5
  318. data/lib/rubygems/request_set.rb +20 -19
  319. data/lib/rubygems/requirement.rb +15 -14
  320. data/lib/rubygems/resolver/activation_request.rb +4 -3
  321. data/lib/rubygems/resolver/api_set.rb +5 -4
  322. data/lib/rubygems/resolver/api_specification.rb +7 -6
  323. data/lib/rubygems/resolver/best_set.rb +6 -5
  324. data/lib/rubygems/resolver/composed_set.rb +1 -0
  325. data/lib/rubygems/resolver/conflict.rb +11 -10
  326. data/lib/rubygems/resolver/current_set.rb +1 -0
  327. data/lib/rubygems/resolver/dependency_request.rb +3 -2
  328. data/lib/rubygems/resolver/git_set.rb +3 -2
  329. data/lib/rubygems/resolver/git_specification.rb +7 -6
  330. data/lib/rubygems/resolver/index_set.rb +4 -3
  331. data/lib/rubygems/resolver/index_specification.rb +7 -5
  332. data/lib/rubygems/resolver/installed_specification.rb +5 -4
  333. data/lib/rubygems/resolver/installer_set.rb +15 -17
  334. data/lib/rubygems/resolver/local_specification.rb +3 -2
  335. data/lib/rubygems/resolver/lock_set.rb +5 -4
  336. data/lib/rubygems/resolver/lock_specification.rb +5 -4
  337. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +1 -1
  338. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
  339. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  340. data/lib/rubygems/resolver/molinillo.rb +2 -1
  341. data/lib/rubygems/resolver/requirement_list.rb +1 -0
  342. data/lib/rubygems/resolver/set.rb +1 -0
  343. data/lib/rubygems/resolver/source_set.rb +2 -0
  344. data/lib/rubygems/resolver/spec_specification.rb +1 -0
  345. data/lib/rubygems/resolver/specification.rb +2 -1
  346. data/lib/rubygems/resolver/stats.rb +2 -1
  347. data/lib/rubygems/resolver/vendor_set.rb +2 -1
  348. data/lib/rubygems/resolver/vendor_specification.rb +4 -3
  349. data/lib/rubygems/resolver.rb +41 -40
  350. data/lib/rubygems/s3_uri_signer.rb +10 -8
  351. data/lib/rubygems/safe_yaml.rb +4 -2
  352. data/lib/rubygems/security/policies.rb +48 -47
  353. data/lib/rubygems/security/policy.rb +19 -18
  354. data/lib/rubygems/security/signer.rb +6 -5
  355. data/lib/rubygems/security/trust_dir.rb +5 -4
  356. data/lib/rubygems/security.rb +30 -42
  357. data/lib/rubygems/security_option.rb +6 -5
  358. data/lib/rubygems/shellwords.rb +3 -0
  359. data/lib/rubygems/source/git.rb +22 -22
  360. data/lib/rubygems/source/installed.rb +2 -1
  361. data/lib/rubygems/source/local.rb +3 -2
  362. data/lib/rubygems/source/lock.rb +1 -0
  363. data/lib/rubygems/source/specific_file.rb +2 -1
  364. data/lib/rubygems/source/vendor.rb +1 -0
  365. data/lib/rubygems/source.rb +16 -16
  366. data/lib/rubygems/spec_fetcher.rb +10 -9
  367. data/lib/rubygems/specification.rb +121 -114
  368. data/lib/rubygems/specification_policy.rb +36 -15
  369. data/lib/rubygems/stub_specification.rb +11 -9
  370. data/lib/rubygems/text.rb +2 -2
  371. data/lib/rubygems/tsort/lib/tsort.rb +308 -310
  372. data/lib/rubygems/tsort.rb +1 -1
  373. data/lib/rubygems/uninstaller.rb +19 -18
  374. data/lib/rubygems/update_suggestion.rb +69 -0
  375. data/lib/rubygems/uri.rb +4 -4
  376. data/lib/rubygems/uri_formatter.rb +1 -1
  377. data/lib/rubygems/user_interaction.rb +37 -21
  378. data/lib/rubygems/util/licenses.rb +4 -3
  379. data/lib/rubygems/util/list.rb +1 -0
  380. data/lib/rubygems/util.rb +12 -15
  381. data/lib/rubygems/validator.rb +7 -6
  382. data/lib/rubygems/version.rb +17 -11
  383. data/lib/rubygems/version_option.rb +4 -3
  384. data/lib/rubygems.rb +89 -68
  385. data/rubygems-update.gemspec +10 -8
  386. data/setup.rb +10 -9
  387. data/test/rubygems/alternate_cert.pem +14 -14
  388. data/test/rubygems/alternate_cert_32.pem +15 -15
  389. data/test/rubygems/alternate_key.pem +25 -25
  390. data/test/rubygems/bad_rake.rb +1 -0
  391. data/test/rubygems/bundler_test_gem.rb +421 -0
  392. data/test/rubygems/child_cert.pem +15 -16
  393. data/test/rubygems/child_cert_32.pem +15 -16
  394. data/test/rubygems/child_key.pem +25 -25
  395. data/test/rubygems/encrypted_private_key.pem +26 -26
  396. data/test/rubygems/expired_cert.pem +15 -15
  397. data/test/rubygems/fake_certlib/openssl.rb +1 -0
  398. data/test/rubygems/future_cert.pem +15 -15
  399. data/test/rubygems/future_cert_32.pem +15 -15
  400. data/test/rubygems/good_rake.rb +1 -0
  401. data/test/rubygems/grandchild_cert.pem +15 -16
  402. data/test/rubygems/grandchild_cert_32.pem +15 -16
  403. data/test/rubygems/grandchild_key.pem +25 -25
  404. data/test/rubygems/helper.rb +172 -151
  405. data/test/rubygems/installer_test_case.rb +14 -13
  406. data/test/rubygems/invalid_issuer_cert.pem +16 -16
  407. data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
  408. data/test/rubygems/invalid_key.pem +25 -25
  409. data/test/rubygems/invalid_signer_cert.pem +15 -15
  410. data/test/rubygems/invalid_signer_cert_32.pem +15 -15
  411. data/test/rubygems/invalidchild_cert.pem +15 -16
  412. data/test/rubygems/invalidchild_cert_32.pem +15 -16
  413. data/test/rubygems/invalidchild_key.pem +25 -25
  414. data/test/rubygems/multifactor_auth_utilities.rb +111 -0
  415. data/test/rubygems/package/tar_test_case.rb +53 -17
  416. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  417. data/test/rubygems/plugin/exception/rubygems_plugin.rb +2 -1
  418. data/test/rubygems/plugin/load/rubygems_plugin.rb +1 -0
  419. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +2 -1
  420. data/test/rubygems/private_key.pem +25 -25
  421. data/test/rubygems/public_cert.pem +16 -16
  422. data/test/rubygems/public_cert_32.pem +15 -15
  423. data/test/rubygems/public_key.pem +7 -7
  424. data/test/rubygems/rubygems/commands/crash_command.rb +1 -0
  425. data/test/rubygems/rubygems_plugin.rb +3 -2
  426. data/test/rubygems/simple_gem.rb +2 -1
  427. data/test/rubygems/specifications/bar-0.0.2.gemspec +2 -0
  428. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +6 -4
  429. data/test/rubygems/test_bundled_ca.rb +13 -12
  430. data/test/rubygems/test_config.rb +5 -4
  431. data/test/rubygems/test_deprecate.rb +5 -4
  432. data/test/rubygems/test_exit.rb +9 -3
  433. data/test/rubygems/test_gem.rb +339 -677
  434. data/test/rubygems/test_gem_available_set.rb +22 -21
  435. data/test/rubygems/test_gem_bundler_version_finder.rb +6 -4
  436. data/test/rubygems/test_gem_command.rb +45 -44
  437. data/test/rubygems/test_gem_command_manager.rb +96 -30
  438. data/test/rubygems/test_gem_commands_build_command.rb +74 -63
  439. data/test/rubygems/test_gem_commands_cert_command.rb +98 -99
  440. data/test/rubygems/test_gem_commands_check_command.rb +5 -4
  441. data/test/rubygems/test_gem_commands_cleanup_command.rb +41 -40
  442. data/test/rubygems/test_gem_commands_contents_command.rb +28 -27
  443. data/test/rubygems/test_gem_commands_dependency_command.rb +37 -36
  444. data/test/rubygems/test_gem_commands_environment_command.rb +17 -16
  445. data/test/rubygems/test_gem_commands_exec_command.rb +853 -0
  446. data/test/rubygems/test_gem_commands_fetch_command.rb +38 -37
  447. data/test/rubygems/test_gem_commands_generate_index_command.rb +8 -7
  448. data/test/rubygems/test_gem_commands_help_command.rb +14 -13
  449. data/test/rubygems/test_gem_commands_info_command.rb +29 -2
  450. data/test/rubygems/test_gem_commands_install_command.rb +152 -132
  451. data/test/rubygems/test_gem_commands_list_command.rb +5 -4
  452. data/test/rubygems/test_gem_commands_lock_command.rb +11 -10
  453. data/test/rubygems/test_gem_commands_mirror.rb +3 -2
  454. data/test/rubygems/test_gem_commands_open_command.rb +5 -4
  455. data/test/rubygems/test_gem_commands_outdated_command.rb +10 -9
  456. data/test/rubygems/test_gem_commands_owner_command.rb +227 -50
  457. data/test/rubygems/test_gem_commands_pristine_command.rb +142 -93
  458. data/test/rubygems/test_gem_commands_push_command.rb +189 -64
  459. data/test/rubygems/test_gem_commands_query_command.rb +74 -73
  460. data/test/rubygems/test_gem_commands_search_command.rb +3 -2
  461. data/test/rubygems/test_gem_commands_server_command.rb +3 -2
  462. data/test/rubygems/test_gem_commands_setup_command.rb +123 -96
  463. data/test/rubygems/test_gem_commands_signin_command.rb +71 -31
  464. data/test/rubygems/test_gem_commands_signout_command.rb +3 -3
  465. data/test/rubygems/test_gem_commands_sources_command.rb +29 -29
  466. data/test/rubygems/test_gem_commands_specification_command.rb +33 -32
  467. data/test/rubygems/test_gem_commands_stale_command.rb +5 -4
  468. data/test/rubygems/test_gem_commands_uninstall_command.rb +99 -81
  469. data/test/rubygems/test_gem_commands_unpack_command.rb +32 -31
  470. data/test/rubygems/test_gem_commands_update_command.rb +96 -95
  471. data/test/rubygems/test_gem_commands_which_command.rb +7 -6
  472. data/test/rubygems/test_gem_commands_yank_command.rb +162 -43
  473. data/test/rubygems/test_gem_config_file.rb +94 -81
  474. data/test/rubygems/test_gem_dependency.rb +76 -73
  475. data/test/rubygems/test_gem_dependency_installer.rb +200 -165
  476. data/test/rubygems/test_gem_dependency_list.rb +48 -47
  477. data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -4
  478. data/test/rubygems/test_gem_doctor.rb +27 -26
  479. data/test/rubygems/test_gem_ext_builder.rb +60 -61
  480. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +4 -4
  481. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.lock → ext/custom_name_lib/Cargo.lock} +23 -33
  482. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{Cargo.toml → ext/custom_name_lib/Cargo.toml} +1 -1
  483. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/{src → ext/custom_name_lib/src}/lib.rs +1 -1
  484. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +3 -0
  485. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +37 -33
  486. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +1 -1
  487. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +2 -0
  488. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +12 -0
  489. data/test/rubygems/test_gem_ext_cargo_builder.rb +48 -59
  490. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +20 -19
  491. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +21 -36
  492. data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -15
  493. data/test/rubygems/test_gem_ext_configure_builder.rb +14 -13
  494. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +51 -52
  495. data/test/rubygems/test_gem_ext_rake_builder.rb +16 -15
  496. data/test/rubygems/test_gem_gem_runner.rb +15 -9
  497. data/test/rubygems/test_gem_gemcutter_utilities.rb +170 -84
  498. data/test/rubygems/test_gem_impossible_dependencies_error.rb +5 -4
  499. data/test/rubygems/test_gem_indexer.rb +87 -67
  500. data/test/rubygems/test_gem_install_update_options.rb +17 -16
  501. data/test/rubygems/test_gem_installer.rb +422 -304
  502. data/test/rubygems/test_gem_local_remote_options.rb +11 -10
  503. data/test/rubygems/test_gem_name_tuple.rb +5 -4
  504. data/test/rubygems/test_gem_package.rb +243 -231
  505. data/test/rubygems/test_gem_package_old.rb +14 -13
  506. data/test/rubygems/test_gem_package_tar_header.rb +48 -47
  507. data/test/rubygems/test_gem_package_tar_reader.rb +56 -8
  508. data/test/rubygems/test_gem_package_tar_reader_entry.rb +162 -16
  509. data/test/rubygems/test_gem_package_tar_writer.rb +77 -76
  510. data/test/rubygems/test_gem_package_task.rb +19 -18
  511. data/test/rubygems/test_gem_path_support.rb +15 -14
  512. data/test/rubygems/test_gem_platform.rb +333 -227
  513. data/test/rubygems/test_gem_rdoc.rb +15 -14
  514. data/test/rubygems/test_gem_remote_fetcher.rb +155 -154
  515. data/test/rubygems/test_gem_request.rb +64 -58
  516. data/test/rubygems/test_gem_request_connection_pools.rb +30 -29
  517. data/test/rubygems/test_gem_request_set.rb +101 -100
  518. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +210 -211
  519. data/test/rubygems/test_gem_request_set_lockfile.rb +87 -86
  520. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +58 -57
  521. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +63 -62
  522. data/test/rubygems/test_gem_requirement.rb +48 -41
  523. data/test/rubygems/test_gem_resolver.rb +167 -99
  524. data/test/rubygems/test_gem_resolver_activation_request.rb +7 -6
  525. data/test/rubygems/test_gem_resolver_api_set.rb +34 -33
  526. data/test/rubygems/test_gem_resolver_api_specification.rb +48 -47
  527. data/test/rubygems/test_gem_resolver_best_set.rb +23 -22
  528. data/test/rubygems/test_gem_resolver_composed_set.rb +2 -1
  529. data/test/rubygems/test_gem_resolver_conflict.rb +13 -12
  530. data/test/rubygems/test_gem_resolver_dependency_request.rb +16 -15
  531. data/test/rubygems/test_gem_resolver_git_set.rb +22 -21
  532. data/test/rubygems/test_gem_resolver_git_specification.rb +22 -21
  533. data/test/rubygems/test_gem_resolver_index_set.rb +13 -12
  534. data/test/rubygems/test_gem_resolver_index_specification.rb +17 -16
  535. data/test/rubygems/test_gem_resolver_installed_specification.rb +6 -5
  536. data/test/rubygems/test_gem_resolver_installer_set.rb +79 -34
  537. data/test/rubygems/test_gem_resolver_local_specification.rb +8 -7
  538. data/test/rubygems/test_gem_resolver_lock_set.rb +13 -12
  539. data/test/rubygems/test_gem_resolver_lock_specification.rb +18 -17
  540. data/test/rubygems/test_gem_resolver_requirement_list.rb +2 -1
  541. data/test/rubygems/test_gem_resolver_specification.rb +9 -8
  542. data/test/rubygems/test_gem_resolver_vendor_set.rb +7 -6
  543. data/test/rubygems/test_gem_resolver_vendor_specification.rb +11 -10
  544. data/test/rubygems/test_gem_security.rb +69 -68
  545. data/test/rubygems/test_gem_security_policy.rb +72 -72
  546. data/test/rubygems/test_gem_security_signer.rb +35 -34
  547. data/test/rubygems/test_gem_security_trust_dir.rb +7 -6
  548. data/test/rubygems/test_gem_silent_ui.rb +39 -32
  549. data/test/rubygems/test_gem_source.rb +45 -44
  550. data/test/rubygems/test_gem_source_fetch_problem.rb +10 -9
  551. data/test/rubygems/test_gem_source_git.rb +69 -62
  552. data/test/rubygems/test_gem_source_installed.rb +17 -16
  553. data/test/rubygems/test_gem_source_list.rb +6 -5
  554. data/test/rubygems/test_gem_source_local.rb +15 -14
  555. data/test/rubygems/test_gem_source_lock.rb +32 -31
  556. data/test/rubygems/test_gem_source_specific_file.rb +18 -17
  557. data/test/rubygems/test_gem_source_subpath_problem.rb +8 -7
  558. data/test/rubygems/test_gem_source_vendor.rb +14 -13
  559. data/test/rubygems/test_gem_spec_fetcher.rb +73 -72
  560. data/test/rubygems/test_gem_specification.rb +533 -469
  561. data/test/rubygems/test_gem_stream_ui.rb +53 -22
  562. data/test/rubygems/test_gem_stub_specification.rb +33 -32
  563. data/test/rubygems/test_gem_text.rb +2 -1
  564. data/test/rubygems/test_gem_uninstaller.rb +118 -117
  565. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +4 -3
  566. data/test/rubygems/test_gem_update_suggestion.rb +209 -0
  567. data/test/rubygems/test_gem_uri.rb +6 -4
  568. data/test/rubygems/test_gem_uri_formatter.rb +15 -14
  569. data/test/rubygems/test_gem_util.rb +24 -23
  570. data/test/rubygems/test_gem_validator.rb +8 -8
  571. data/test/rubygems/test_gem_version.rb +24 -16
  572. data/test/rubygems/test_gem_version_option.rb +16 -15
  573. data/test/rubygems/test_kernel.rb +43 -48
  574. data/test/rubygems/test_project_sanity.rb +32 -3
  575. data/test/rubygems/test_remote_fetch_error.rb +8 -7
  576. data/test/rubygems/test_require.rb +118 -103
  577. data/test/rubygems/test_rubygems.rb +10 -8
  578. data/test/rubygems/test_webauthn_listener.rb +143 -0
  579. data/test/rubygems/test_webauthn_listener_response.rb +93 -0
  580. data/test/rubygems/test_webauthn_poller.rb +124 -0
  581. data/test/rubygems/utilities.rb +98 -34
  582. data/test/rubygems/wrong_key_cert.pem +15 -15
  583. data/test/rubygems/wrong_key_cert_32.pem +15 -15
  584. data/test/test_changelog_generator.rb +1 -1
  585. metadata +99 -46
  586. data/bundler/lib/bundler/dep_proxy.rb +0 -55
  587. data/bundler/lib/bundler/templates/gems.rb +0 -5
  588. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +0 -5
  589. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
  590. data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
  591. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
  592. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
  593. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
  594. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
  595. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
  596. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
  597. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
  598. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
  599. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
  600. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
  601. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
  602. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
  603. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -149
  604. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
  605. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
  606. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
  607. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
  608. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
  609. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
  610. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
  611. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
  612. data/bundler/lib/bundler/vendored_molinillo.rb +0 -4
  613. data/bundler/lib/bundler/version_ranges.rb +0 -122
  614. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +0 -21
  615. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/build.rb +0 -21
@@ -1,8 +1,9 @@
1
1
  # frozen_string_literal: true
2
- require_relative '../command'
3
- require_relative '../local_remote_options'
4
- require_relative '../version_option'
5
- require_relative '../package'
2
+
3
+ require_relative "../command"
4
+ require_relative "../local_remote_options"
5
+ require_relative "../version_option"
6
+ require_relative "../package"
6
7
 
7
8
  class Gem::Commands::SpecificationCommand < Gem::Command
8
9
  include Gem::LocalRemoteOptions
@@ -11,28 +12,28 @@ class Gem::Commands::SpecificationCommand < Gem::Command
11
12
  def initialize
12
13
  Gem.load_yaml
13
14
 
14
- super 'specification', 'Display gem specification (in yaml)',
15
+ super "specification", "Display gem specification (in yaml)",
15
16
  :domain => :local, :version => Gem::Requirement.default,
16
17
  :format => :yaml
17
18
 
18
- add_version_option('examine')
19
+ add_version_option("examine")
19
20
  add_platform_option
20
21
  add_prerelease_option
21
22
 
22
- add_option('--all', 'Output specifications for all versions of',
23
- 'the gem') do |value, options|
23
+ add_option("--all", "Output specifications for all versions of",
24
+ "the gem") do |value, options|
24
25
  options[:all] = true
25
26
  end
26
27
 
27
- add_option('--ruby', 'Output ruby format') do |value, options|
28
+ add_option("--ruby", "Output ruby format") do |value, options|
28
29
  options[:format] = :ruby
29
30
  end
30
31
 
31
- add_option('--yaml', 'Output YAML format') do |value, options|
32
+ add_option("--yaml", "Output YAML format") do |value, options|
32
33
  options[:format] = :yaml
33
34
  end
34
35
 
35
- add_option('--marshal', 'Output Marshal format') do |value, options|
36
+ add_option("--marshal", "Output Marshal format") do |value, options|
36
37
  options[:format] = :marshal
37
38
  end
38
39
 
@@ -88,7 +89,7 @@ Specific fields in the specification can be extracted in YAML format:
88
89
  raise Gem::CommandLineError, "Unsupported version type: '#{v}'"
89
90
  end
90
91
 
91
- if !req.none? and options[:all]
92
+ if !req.none? && options[:all]
92
93
  alert_error "Specify --all or -v, not both"
93
94
  terminate_interaction 1
94
95
  end
@@ -102,7 +103,7 @@ Specific fields in the specification can be extracted in YAML format:
102
103
  field = get_one_optional_argument
103
104
 
104
105
  raise Gem::CommandLineError, "--ruby and FIELD are mutually exclusive" if
105
- field and options[:format] == :ruby
106
+ field && options[:format] == :ruby
106
107
 
107
108
  if local?
108
109
  if File.exist? gem
@@ -1,9 +1,10 @@
1
1
  # frozen_string_literal: true
2
- require_relative '../command'
2
+
3
+ require_relative "../command"
3
4
 
4
5
  class Gem::Commands::StaleCommand < Gem::Command
5
6
  def initialize
6
- super('stale', 'List gems along with access times')
7
+ super("stale", "List gems along with access times")
7
8
  end
8
9
 
9
10
  def description # :nodoc:
@@ -1,8 +1,9 @@
1
1
  # frozen_string_literal: true
2
- require_relative '../command'
3
- require_relative '../version_option'
4
- require_relative '../uninstaller'
5
- require 'fileutils'
2
+
3
+ require_relative "../command"
4
+ require_relative "../version_option"
5
+ require_relative "../uninstaller"
6
+ require "fileutils"
6
7
 
7
8
  ##
8
9
  # Gem uninstaller command line tool
@@ -13,78 +14,78 @@ class Gem::Commands::UninstallCommand < Gem::Command
13
14
  include Gem::VersionOption
14
15
 
15
16
  def initialize
16
- super 'uninstall', 'Uninstall gems from the local repository',
17
+ super "uninstall", "Uninstall gems from the local repository",
17
18
  :version => Gem::Requirement.default, :user_install => true,
18
19
  :check_dev => false, :vendor => false
19
20
 
20
- add_option('-a', '--[no-]all',
21
- 'Uninstall all matching versions'
21
+ add_option("-a", "--[no-]all",
22
+ "Uninstall all matching versions"
22
23
  ) do |value, options|
23
24
  options[:all] = value
24
25
  end
25
26
 
26
- add_option('-I', '--[no-]ignore-dependencies',
27
- 'Ignore dependency requirements while',
28
- 'uninstalling') do |value, options|
27
+ add_option("-I", "--[no-]ignore-dependencies",
28
+ "Ignore dependency requirements while",
29
+ "uninstalling") do |value, options|
29
30
  options[:ignore] = value
30
31
  end
31
32
 
32
- add_option('-D', '--[no-]check-development',
33
- 'Check development dependencies while uninstalling',
34
- '(default: false)') do |value, options|
33
+ add_option("-D", "--[no-]check-development",
34
+ "Check development dependencies while uninstalling",
35
+ "(default: false)") do |value, options|
35
36
  options[:check_dev] = value
36
37
  end
37
38
 
38
- add_option('-x', '--[no-]executables',
39
- 'Uninstall applicable executables without',
40
- 'confirmation') do |value, options|
39
+ add_option("-x", "--[no-]executables",
40
+ "Uninstall applicable executables without",
41
+ "confirmation") do |value, options|
41
42
  options[:executables] = value
42
43
  end
43
44
 
44
- add_option('-i', '--install-dir DIR',
45
- 'Directory to uninstall gem from') do |value, options|
45
+ add_option("-i", "--install-dir DIR",
46
+ "Directory to uninstall gem from") do |value, options|
46
47
  options[:install_dir] = File.expand_path(value)
47
48
  end
48
49
 
49
- add_option('-n', '--bindir DIR',
50
- 'Directory to remove executables from') do |value, options|
50
+ add_option("-n", "--bindir DIR",
51
+ "Directory to remove executables from") do |value, options|
51
52
  options[:bin_dir] = File.expand_path(value)
52
53
  end
53
54
 
54
- add_option('--[no-]user-install',
55
- 'Uninstall from user\'s home directory',
56
- 'in addition to GEM_HOME.') do |value, options|
55
+ add_option("--[no-]user-install",
56
+ "Uninstall from user's home directory",
57
+ "in addition to GEM_HOME.") do |value, options|
57
58
  options[:user_install] = value
58
59
  end
59
60
 
60
- add_option('--[no-]format-executable',
61
- 'Assume executable names match Ruby\'s prefix and suffix.') do |value, options|
61
+ add_option("--[no-]format-executable",
62
+ "Assume executable names match Ruby's prefix and suffix.") do |value, options|
62
63
  options[:format_executable] = value
63
64
  end
64
65
 
65
- add_option('--[no-]force',
66
- 'Uninstall all versions of the named gems',
67
- 'ignoring dependencies') do |value, options|
66
+ add_option("--[no-]force",
67
+ "Uninstall all versions of the named gems",
68
+ "ignoring dependencies") do |value, options|
68
69
  options[:force] = value
69
70
  end
70
71
 
71
- add_option('--[no-]abort-on-dependent',
72
- 'Prevent uninstalling gems that are',
73
- 'depended on by other gems.') do |value, options|
72
+ add_option("--[no-]abort-on-dependent",
73
+ "Prevent uninstalling gems that are",
74
+ "depended on by other gems.") do |value, options|
74
75
  options[:abort_on_dependent] = value
75
76
  end
76
77
 
77
78
  add_version_option
78
79
  add_platform_option
79
80
 
80
- add_option('--vendor',
81
- 'Uninstall gem from the vendor directory.',
82
- 'Only for use by gem repackagers.') do |value, options|
81
+ add_option("--vendor",
82
+ "Uninstall gem from the vendor directory.",
83
+ "Only for use by gem repackagers.") do |value, options|
83
84
  unless Gem.vendor_dir
84
- raise Gem::OptionParser::InvalidOption.new 'your platform is not supported'
85
+ raise Gem::OptionParser::InvalidOption.new "your platform is not supported"
85
86
  end
86
87
 
87
- alert_warning 'Use your OS package manager to uninstall vendor gems'
88
+ alert_warning "Use your OS package manager to uninstall vendor gems"
88
89
  options[:vendor] = true
89
90
  options[:install_dir] = Gem.vendor_dir
90
91
  end
@@ -96,7 +97,7 @@ class Gem::Commands::UninstallCommand < Gem::Command
96
97
 
97
98
  def defaults_str # :nodoc:
98
99
  "--version '#{Gem::Requirement.default}' --no-force " +
99
- "--user-install"
100
+ "--user-install"
100
101
  end
101
102
 
102
103
  def description # :nodoc:
@@ -114,8 +115,8 @@ that is a dependency of an existing gem. You can use the
114
115
  end
115
116
 
116
117
  def check_version # :nodoc:
117
- if options[:version] != Gem::Requirement.default and
118
- get_all_gem_names.size > 1
118
+ if options[:version] != Gem::Requirement.default &&
119
+ get_all_gem_names.size > 1
119
120
  alert_error "Can't use --version with multiple gems. You can specify multiple gems with" \
120
121
  " version requirements using `gem uninstall 'my_gem:1.0.0' 'my_other_gem:~>2.0.0'`"
121
122
  terminate_interaction 1
@@ -125,7 +126,10 @@ that is a dependency of an existing gem. You can use the
125
126
  def execute
126
127
  check_version
127
128
 
128
- if options[:all] and not options[:args].empty?
129
+ # Consider only gem specifications installed at `--install-dir`
130
+ Gem::Specification.dirs = options[:install_dir] if options[:install_dir]
131
+
132
+ if options[:all] && !options[:args].empty?
129
133
  uninstall_specific
130
134
  elsif options[:all]
131
135
  uninstall_all
@@ -1,9 +1,10 @@
1
1
  # frozen_string_literal: true
2
- require_relative '../command'
3
- require_relative '../version_option'
4
- require_relative '../security_option'
5
- require_relative '../remote_fetcher'
6
- require_relative '../package'
2
+
3
+ require_relative "../command"
4
+ require_relative "../version_option"
5
+ require_relative "../security_option"
6
+ require_relative "../remote_fetcher"
7
+ require_relative "../package"
7
8
 
8
9
  # forward-declare
9
10
 
@@ -17,18 +18,18 @@ class Gem::Commands::UnpackCommand < Gem::Command
17
18
  include Gem::SecurityOption
18
19
 
19
20
  def initialize
20
- require 'fileutils'
21
+ require "fileutils"
21
22
 
22
- super 'unpack', 'Unpack an installed gem to the current directory',
23
+ super "unpack", "Unpack an installed gem to the current directory",
23
24
  :version => Gem::Requirement.default,
24
- :target => Dir.pwd
25
+ :target => Dir.pwd
25
26
 
26
- add_option('--target=DIR',
27
- 'target directory for unpacking') do |value, options|
27
+ add_option("--target=DIR",
28
+ "target directory for unpacking") do |value, options|
28
29
  options[:target] = value
29
30
  end
30
31
 
31
- add_option('--spec', 'unpack the gem specification') do |value, options|
32
+ add_option("--spec", "unpack the gem specification") do |value, options|
32
33
  options[:spec] = true
33
34
  end
34
35
 
@@ -103,11 +104,11 @@ command help for an example.
103
104
  end
104
105
  end
105
106
 
106
- File.open destination, 'w' do |io|
107
+ File.open destination, "w" do |io|
107
108
  io.write metadata
108
109
  end
109
110
  else
110
- basename = File.basename path, '.gem'
111
+ basename = File.basename path, ".gem"
111
112
  target_dir = File.expand_path basename, options[:target]
112
113
 
113
114
  package = Gem::Package.new path, security_policy
@@ -1,13 +1,14 @@
1
1
  # frozen_string_literal: true
2
- require_relative '../command'
3
- require_relative '../command_manager'
4
- require_relative '../dependency_installer'
5
- require_relative '../install_update_options'
6
- require_relative '../local_remote_options'
7
- require_relative '../spec_fetcher'
8
- require_relative '../version_option'
9
- require_relative '../install_message' # must come before rdoc for messaging
10
- require_relative '../rdoc'
2
+
3
+ require_relative "../command"
4
+ require_relative "../command_manager"
5
+ require_relative "../dependency_installer"
6
+ require_relative "../install_update_options"
7
+ require_relative "../local_remote_options"
8
+ require_relative "../spec_fetcher"
9
+ require_relative "../version_option"
10
+ require_relative "../install_message" # must come before rdoc for messaging
11
+ require_relative "../rdoc"
11
12
 
12
13
  class Gem::Commands::UpdateCommand < Gem::Command
13
14
  include Gem::InstallUpdateOptions
@@ -25,7 +26,7 @@ class Gem::Commands::UpdateCommand < Gem::Command
25
26
 
26
27
  options.merge!(install_update_options)
27
28
 
28
- super 'update', 'Update installed gems to the latest version', options
29
+ super "update", "Update installed gems to the latest version", options
29
30
 
30
31
  add_install_update_options
31
32
 
@@ -35,8 +36,8 @@ class Gem::Commands::UpdateCommand < Gem::Command
35
36
  value
36
37
  end
37
38
 
38
- add_option('--system [VERSION]', Gem::Version,
39
- 'Update the RubyGems system software') do |value, options|
39
+ add_option("--system [VERSION]", Gem::Version,
40
+ "Update the RubyGems system software") do |value, options|
40
41
  value = true unless value
41
42
 
42
43
  options[:system] = value
@@ -56,7 +57,7 @@ class Gem::Commands::UpdateCommand < Gem::Command
56
57
 
57
58
  def defaults_str # :nodoc:
58
59
  "--no-force --install-dir #{Gem.dir}\n" +
59
- install_update_defaults_str
60
+ install_update_defaults_str
60
61
  end
61
62
 
62
63
  def description # :nodoc:
@@ -155,7 +156,7 @@ command to remove old versions.
155
156
  Gem::Specification.dirs = Gem.user_dir if options[:user_install]
156
157
 
157
158
  Gem::Specification.each do |spec|
158
- if hig[spec.name].nil? or hig[spec.name].version < spec.version
159
+ if hig[spec.name].nil? || hig[spec.name].version < spec.version
159
160
  hig[spec.name] = spec
160
161
  end
161
162
  end
@@ -166,13 +167,8 @@ command to remove old versions.
166
167
  def highest_remote_name_tuple(spec) # :nodoc:
167
168
  spec_tuples = fetch_remote_gems spec
168
169
 
169
- matching_gems = spec_tuples.select do |g,_|
170
- g.name == spec.name and g.match_platform?
171
- end
172
-
173
- highest_remote_gem = matching_gems.max
174
-
175
- highest_remote_gem ||= [Gem::NameTuple.null]
170
+ highest_remote_gem = spec_tuples.max
171
+ return unless highest_remote_gem
176
172
 
177
173
  highest_remote_gem.first
178
174
  end
@@ -181,13 +177,13 @@ command to remove old versions.
181
177
  args = update_rubygems_arguments
182
178
  version = spec.version
183
179
 
184
- update_dir = File.join spec.base_dir, 'gems', "rubygems-update-#{version}"
180
+ update_dir = File.join spec.base_dir, "gems", "rubygems-update-#{version}"
185
181
 
186
182
  Dir.chdir update_dir do
187
183
  say "Installing RubyGems #{version}" unless options[:silent]
188
184
 
189
185
  installed = preparing_gem_layout_for(version) do
190
- system Gem.ruby, '--disable-gems', 'setup.rb', *args
186
+ system Gem.ruby, "--disable-gems", "setup.rb", *args
191
187
  end
192
188
 
193
189
  say "RubyGems system software updated" if installed unless options[:silent]
@@ -218,30 +214,22 @@ command to remove old versions.
218
214
  version = options[:system]
219
215
  update_latest = version == true
220
216
 
221
- if update_latest
222
- version = Gem::Version.new Gem::VERSION
223
- requirement = Gem::Requirement.new ">= #{Gem::VERSION}"
224
- else
217
+ unless update_latest
225
218
  version = Gem::Version.new version
226
219
  requirement = Gem::Requirement.new version
220
+
221
+ return version, requirement
227
222
  end
228
223
 
224
+ version = Gem::Version.new Gem::VERSION
225
+ requirement = Gem::Requirement.new ">= #{Gem::VERSION}"
226
+
229
227
  rubygems_update = Gem::Specification.new
230
- rubygems_update.name = 'rubygems-update'
228
+ rubygems_update.name = "rubygems-update"
231
229
  rubygems_update.version = version
232
230
 
233
- hig = {
234
- 'rubygems-update' => rubygems_update,
235
- }
236
-
237
- gems_to_update = which_to_update hig, options[:args], :system
238
- up_ver = gems_to_update.first.version
239
-
240
- target = if update_latest
241
- up_ver
242
- else
243
- version
244
- end
231
+ highest_remote_tup = highest_remote_name_tuple(rubygems_update)
232
+ target = highest_remote_tup ? highest_remote_tup.version : version
245
233
 
246
234
  return target, requirement
247
235
  end
@@ -291,8 +279,8 @@ command to remove old versions.
291
279
 
292
280
  check_oldest_rubygems version
293
281
 
294
- installed_gems = Gem::Specification.find_all_by_name 'rubygems-update', requirement
295
- installed_gems = update_gem('rubygems-update', version) if installed_gems.empty? || installed_gems.first.version != version
282
+ installed_gems = Gem::Specification.find_all_by_name "rubygems-update", requirement
283
+ installed_gems = update_gem("rubygems-update", version) if installed_gems.empty? || installed_gems.first.version != version
296
284
  return if installed_gems.empty?
297
285
 
298
286
  install_rubygems installed_gems.first
@@ -300,30 +288,27 @@ command to remove old versions.
300
288
 
301
289
  def update_rubygems_arguments # :nodoc:
302
290
  args = []
303
- args << '--silent' if options[:silent]
304
- args << '--prefix' << Gem.prefix if Gem.prefix
305
- args << '--no-document' unless options[:document].include?('rdoc') || options[:document].include?('ri')
306
- args << '--no-format-executable' if options[:no_format_executable]
307
- args << '--previous-version' << Gem::VERSION if
308
- options[:system] == true or
309
- Gem::Version.new(options[:system]) >= Gem::Version.new(2)
291
+ args << "--silent" if options[:silent]
292
+ args << "--prefix" << Gem.prefix if Gem.prefix
293
+ args << "--no-document" unless options[:document].include?("rdoc") || options[:document].include?("ri")
294
+ args << "--no-format-executable" if options[:no_format_executable]
295
+ args << "--previous-version" << Gem::VERSION if
296
+ options[:system] == true ||
297
+ Gem::Version.new(options[:system]) >= Gem::Version.new(2)
310
298
  args
311
299
  end
312
300
 
313
- def which_to_update(highest_installed_gems, gem_names, system = false)
301
+ def which_to_update(highest_installed_gems, gem_names)
314
302
  result = []
315
303
 
316
304
  highest_installed_gems.each do |l_name, l_spec|
317
- next if not gem_names.empty? and
305
+ next if !gem_names.empty? &&
318
306
  gem_names.none? {|name| name == l_spec.name }
319
307
 
320
308
  highest_remote_tup = highest_remote_name_tuple l_spec
321
- highest_remote_ver = highest_remote_tup.version
322
- highest_installed_ver = l_spec.version
309
+ next unless highest_remote_tup
323
310
 
324
- if system or (highest_installed_ver < highest_remote_ver)
325
- result << Gem::NameTuple.new(l_spec.name, [highest_installed_ver, highest_remote_ver].max, highest_remote_tup.platform)
326
- end
311
+ result << highest_remote_tup
327
312
  end
328
313
 
329
314
  result
@@ -345,14 +330,8 @@ command to remove old versions.
345
330
  Gem::Version.new("3.2.3")
346
331
  elsif Gem.ruby_version > Gem::Version.new("2.7.a")
347
332
  Gem::Version.new("3.1.2")
348
- elsif Gem.ruby_version > Gem::Version.new("2.6.a")
349
- Gem::Version.new("3.0.1")
350
- elsif Gem.ruby_version > Gem::Version.new("2.5.a")
351
- Gem::Version.new("2.7.3")
352
- elsif Gem.ruby_version > Gem::Version.new("2.4.a")
353
- Gem::Version.new("2.6.8")
354
333
  else
355
- Gem::Version.new("2.5.2")
334
+ Gem::Version.new("3.0.1")
356
335
  end
357
336
  end
358
337
  end
@@ -1,17 +1,18 @@
1
1
  # frozen_string_literal: true
2
- require_relative '../command'
2
+
3
+ require_relative "../command"
3
4
 
4
5
  class Gem::Commands::WhichCommand < Gem::Command
5
6
  def initialize
6
- super 'which', 'Find the location of a library file you can require',
7
+ super "which", "Find the location of a library file you can require",
7
8
  :search_gems_first => false, :show_all => false
8
9
 
9
- add_option '-a', '--[no-]all', 'show all matching files' do |show_all, options|
10
+ add_option "-a", "--[no-]all", "show all matching files" do |show_all, options|
10
11
  options[:show_all] = show_all
11
12
  end
12
13
 
13
- add_option '-g', '--[no-]gems-first',
14
- 'search gems before non-gems' do |gems_first, options|
14
+ add_option "-g", "--[no-]gems-first",
15
+ "search gems before non-gems" do |gems_first, options|
15
16
  options[:search_gems_first] = gems_first
16
17
  end
17
18
  end
@@ -39,7 +40,7 @@ requiring to see why it does not behave as you expect.
39
40
  found = true
40
41
 
41
42
  options[:args].each do |arg|
42
- arg = arg.sub(/#{Regexp.union(*Gem.suffixes)}$/, '')
43
+ arg = arg.sub(/#{Regexp.union(*Gem.suffixes)}$/, "")
43
44
  dirs = $LOAD_PATH
44
45
 
45
46
  spec = Gem::Specification.find_by_path arg
@@ -71,7 +72,7 @@ requiring to see why it does not behave as you expect.
71
72
  dirs.each do |dir|
72
73
  Gem.suffixes.each do |ext|
73
74
  full_path = File.join dir, "#{package_name}#{ext}"
74
- if File.exist? full_path and not File.directory? full_path
75
+ if File.exist?(full_path) && !File.directory?(full_path)
75
76
  result << full_path
76
77
  return result unless options[:show_all]
77
78
  end
@@ -1,8 +1,9 @@
1
1
  # frozen_string_literal: true
2
- require_relative '../command'
3
- require_relative '../local_remote_options'
4
- require_relative '../version_option'
5
- require_relative '../gemcutter_utilities'
2
+
3
+ require_relative "../command"
4
+ require_relative "../local_remote_options"
5
+ require_relative "../version_option"
6
+ require_relative "../gemcutter_utilities"
6
7
 
7
8
  class Gem::Commands::YankCommand < Gem::Command
8
9
  include Gem::LocalRemoteOptions
@@ -28,15 +29,15 @@ data you will need to change them immediately and yank your gem.
28
29
  end
29
30
 
30
31
  def initialize
31
- super 'yank', 'Remove a pushed gem from the index'
32
+ super "yank", "Remove a pushed gem from the index"
32
33
 
33
34
  add_version_option("remove")
34
35
  add_platform_option("remove")
35
36
  add_otp_option
36
37
 
37
- add_option('--host HOST',
38
- 'Yank from another gemcutter-compatible host',
39
- ' (e.g. https://rubygems.org)') do |value, options|
38
+ add_option("--host HOST",
39
+ "Yank from another gemcutter-compatible host",
40
+ " (e.g. https://rubygems.org)") do |value, options|
40
41
  options[:host] = value
41
42
  end
42
43
 
@@ -76,10 +77,10 @@ data you will need to change them immediately and yank your gem.
76
77
  request.add_field("Authorization", api_key)
77
78
 
78
79
  data = {
79
- 'gem_name' => name,
80
- 'version' => version,
80
+ "gem_name" => name,
81
+ "version" => version,
81
82
  }
82
- data['platform'] = platform if platform
83
+ data["platform"] = platform if platform
83
84
 
84
85
  request.set_form_data data
85
86
  end