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
data/CONTRIBUTING.md CHANGED
@@ -29,13 +29,26 @@ here: https://guides.rubygems.org/contributing/
29
29
 
30
30
  ## Getting Started
31
31
 
32
+ ### Installing dependencies
33
+
32
34
  rake setup
33
35
 
34
- > Optionally you can configure git hooks with: rake git_hooks
36
+ > **NOTE**: If the above fails with permission related errors, you're most
37
+ > likely using a global Ruby installation (like the one packaged by your OS),
38
+ > which sets `GEM_HOME` to a location regular users can't write to. Consider
39
+ > using a Ruby version manager like [RVM](https://github.com/rvm/rvm),
40
+ > [rbenv](https://github.com/rbenv/rbenv),
41
+ > [chruby](https://github.com/postmodern/chruby) or [asdf](https://github.com/asdf-vm/asdf-ruby). These will install Ruby to a
42
+ > location regular users can write to, so you won't run into permission issues.
43
+ > Alternatively, consider setting `GEM_HOME` environment variable to a writable
44
+ > location with something like `export GEM_HOME=/tmp/rubygems.gems` and try
45
+ > again.
46
+
47
+ ### Manually trying your local changes
35
48
 
36
49
  To run commands like `gem install` from the repo:
37
50
 
38
- ruby -Ilib bin/gem install
51
+ ruby -Ilib exe/gem install
39
52
 
40
53
  To run commands like `bundle install` from the repo:
41
54
 
@@ -43,15 +56,15 @@ To run commands like `bundle install` from the repo:
43
56
 
44
57
  ### Running Tests
45
58
 
46
- To run the entire test suite you can use:
59
+ To run the entire test suite you can use:
47
60
 
48
61
  rake test
49
62
 
50
- To run an individual test file located for example in `test/rubygems/test_deprecate.rb` you can use:
63
+ To run an individual test file located for example in `test/rubygems/test_deprecate.rb` you can use:
51
64
 
52
65
  ruby -Ilib:test:bundler/lib test/rubygems/test_deprecate.rb
53
-
54
- And to run an individual test method named `test_default` within a test file, you can use:
66
+
67
+ And to run an individual test method named `test_default` within a test file, you can use:
55
68
 
56
69
  ruby -Ilib:test:bundler/lib test/rubygems/test_deprecate.rb -n /test_default/
57
70
 
@@ -67,14 +80,24 @@ To run the entire bundler test suite in parallel (it takes a while):
67
80
 
68
81
  bin/parallel_rspec
69
82
 
70
- To run the entire bundler test suite sequentially (get a coffee because it's very slow):
83
+ There are some realworld higher level specs run in CI, but not run by `bin/parallel_rspec`. You can run those with:
71
84
 
72
- bin/rspec
85
+ bin/rake spec:realworld
73
86
 
74
87
  To run an individual test file location for example in `spec/install/gems/standalone_spec.rb` you can use:
75
88
 
76
89
  bin/rspec spec/install/gems/standalone_spec.rb
77
90
 
91
+ ### Checking code style
92
+
93
+ You can check compliance with our code style with
94
+
95
+ rake rubocop
96
+
97
+ Optionally you can configure git hooks with to check this before every commit with
98
+
99
+ rake git_hooks
100
+
78
101
  ## Issues
79
102
 
80
103
  RubyGems uses labels to track all issues and pull requests. In order to
data/Manifest.txt CHANGED
@@ -8,8 +8,6 @@ Manifest.txt
8
8
  POLICIES.md
9
9
  README.md
10
10
  UPGRADING.md
11
- bin/gem
12
- bin/update_rubygems
13
11
  bundler/CHANGELOG.md
14
12
  bundler/LICENSE.md
15
13
  bundler/README.md
@@ -57,7 +55,6 @@ bundler/lib/bundler/compact_index_client/updater.rb
57
55
  bundler/lib/bundler/constants.rb
58
56
  bundler/lib/bundler/current_ruby.rb
59
57
  bundler/lib/bundler/definition.rb
60
- bundler/lib/bundler/dep_proxy.rb
61
58
  bundler/lib/bundler/dependency.rb
62
59
  bundler/lib/bundler/deployment.rb
63
60
  bundler/lib/bundler/deprecate.rb
@@ -74,6 +71,7 @@ bundler/lib/bundler/fetcher/compact_index.rb
74
71
  bundler/lib/bundler/fetcher/dependency.rb
75
72
  bundler/lib/bundler/fetcher/downloader.rb
76
73
  bundler/lib/bundler/fetcher/index.rb
74
+ bundler/lib/bundler/force_platform.rb
77
75
  bundler/lib/bundler/friendly_errors.rb
78
76
  bundler/lib/bundler/gem_helper.rb
79
77
  bundler/lib/bundler/gem_helpers.rb
@@ -103,12 +101,16 @@ bundler/lib/bundler/man/bundle-clean.1
103
101
  bundler/lib/bundler/man/bundle-clean.1.ronn
104
102
  bundler/lib/bundler/man/bundle-config.1
105
103
  bundler/lib/bundler/man/bundle-config.1.ronn
104
+ bundler/lib/bundler/man/bundle-console.1
105
+ bundler/lib/bundler/man/bundle-console.1.ronn
106
106
  bundler/lib/bundler/man/bundle-doctor.1
107
107
  bundler/lib/bundler/man/bundle-doctor.1.ronn
108
108
  bundler/lib/bundler/man/bundle-exec.1
109
109
  bundler/lib/bundler/man/bundle-exec.1.ronn
110
110
  bundler/lib/bundler/man/bundle-gem.1
111
111
  bundler/lib/bundler/man/bundle-gem.1.ronn
112
+ bundler/lib/bundler/man/bundle-help.1
113
+ bundler/lib/bundler/man/bundle-help.1.ronn
112
114
  bundler/lib/bundler/man/bundle-info.1
113
115
  bundler/lib/bundler/man/bundle-info.1.ronn
114
116
  bundler/lib/bundler/man/bundle-init.1
@@ -127,6 +129,8 @@ bundler/lib/bundler/man/bundle-outdated.1
127
129
  bundler/lib/bundler/man/bundle-outdated.1.ronn
128
130
  bundler/lib/bundler/man/bundle-platform.1
129
131
  bundler/lib/bundler/man/bundle-platform.1.ronn
132
+ bundler/lib/bundler/man/bundle-plugin.1
133
+ bundler/lib/bundler/man/bundle-plugin.1.ronn
130
134
  bundler/lib/bundler/man/bundle-pristine.1
131
135
  bundler/lib/bundler/man/bundle-pristine.1.ronn
132
136
  bundler/lib/bundler/man/bundle-remove.1
@@ -135,6 +139,8 @@ bundler/lib/bundler/man/bundle-show.1
135
139
  bundler/lib/bundler/man/bundle-show.1.ronn
136
140
  bundler/lib/bundler/man/bundle-update.1
137
141
  bundler/lib/bundler/man/bundle-update.1.ronn
142
+ bundler/lib/bundler/man/bundle-version.1
143
+ bundler/lib/bundler/man/bundle-version.1.ronn
138
144
  bundler/lib/bundler/man/bundle-viz.1
139
145
  bundler/lib/bundler/man/bundle-viz.1.ronn
140
146
  bundler/lib/bundler/man/bundle.1
@@ -142,7 +148,9 @@ bundler/lib/bundler/man/bundle.1.ronn
142
148
  bundler/lib/bundler/man/gemfile.5
143
149
  bundler/lib/bundler/man/gemfile.5.ronn
144
150
  bundler/lib/bundler/man/index.txt
151
+ bundler/lib/bundler/match_metadata.rb
145
152
  bundler/lib/bundler/match_platform.rb
153
+ bundler/lib/bundler/match_remote_metadata.rb
146
154
  bundler/lib/bundler/mirror.rb
147
155
  bundler/lib/bundler/plugin.rb
148
156
  bundler/lib/bundler/plugin/api.rb
@@ -157,6 +165,11 @@ bundler/lib/bundler/plugin/source_list.rb
157
165
  bundler/lib/bundler/process_lock.rb
158
166
  bundler/lib/bundler/remote_specification.rb
159
167
  bundler/lib/bundler/resolver.rb
168
+ bundler/lib/bundler/resolver/base.rb
169
+ bundler/lib/bundler/resolver/candidate.rb
170
+ bundler/lib/bundler/resolver/incompatibility.rb
171
+ bundler/lib/bundler/resolver/package.rb
172
+ bundler/lib/bundler/resolver/root.rb
160
173
  bundler/lib/bundler/resolver/spec_group.rb
161
174
  bundler/lib/bundler/retry.rb
162
175
  bundler/lib/bundler/ruby_dsl.rb
@@ -165,6 +178,7 @@ bundler/lib/bundler/rubygems_ext.rb
165
178
  bundler/lib/bundler/rubygems_gem_installer.rb
166
179
  bundler/lib/bundler/rubygems_integration.rb
167
180
  bundler/lib/bundler/runtime.rb
181
+ bundler/lib/bundler/safe_marshal.rb
168
182
  bundler/lib/bundler/self_manager.rb
169
183
  bundler/lib/bundler/settings.rb
170
184
  bundler/lib/bundler/settings/validator.rb
@@ -190,9 +204,9 @@ bundler/lib/bundler/templates/Executable
190
204
  bundler/lib/bundler/templates/Executable.bundler
191
205
  bundler/lib/bundler/templates/Executable.standalone
192
206
  bundler/lib/bundler/templates/Gemfile
193
- bundler/lib/bundler/templates/gems.rb
194
207
  bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt
195
208
  bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt
209
+ bundler/lib/bundler/templates/newgem/Cargo.toml.tt
196
210
  bundler/lib/bundler/templates/newgem/Gemfile.tt
197
211
  bundler/lib/bundler/templates/newgem/LICENSE.txt.tt
198
212
  bundler/lib/bundler/templates/newgem/README.md.tt
@@ -201,9 +215,12 @@ bundler/lib/bundler/templates/newgem/bin/console.tt
201
215
  bundler/lib/bundler/templates/newgem/bin/setup.tt
202
216
  bundler/lib/bundler/templates/newgem/circleci/config.yml.tt
203
217
  bundler/lib/bundler/templates/newgem/exe/newgem.tt
204
- bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt
218
+ bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt
219
+ bundler/lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt
220
+ bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt
205
221
  bundler/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt
206
222
  bundler/lib/bundler/templates/newgem/ext/newgem/newgem.h.tt
223
+ bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt
207
224
  bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt
208
225
  bundler/lib/bundler/templates/newgem/gitignore.tt
209
226
  bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt
@@ -220,12 +237,12 @@ bundler/lib/bundler/templates/newgem/test/minitest/test_helper.rb.tt
220
237
  bundler/lib/bundler/templates/newgem/test/minitest/test_newgem.rb.tt
221
238
  bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt
222
239
  bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt
223
- bundler/lib/bundler/templates/newgem/travis.yml.tt
224
240
  bundler/lib/bundler/ui.rb
225
241
  bundler/lib/bundler/ui/rg_proxy.rb
226
242
  bundler/lib/bundler/ui/shell.rb
227
243
  bundler/lib/bundler/ui/silent.rb
228
244
  bundler/lib/bundler/uri_credentials_filter.rb
245
+ bundler/lib/bundler/uri_normalizer.rb
229
246
  bundler/lib/bundler/vendor/.document
230
247
  bundler/lib/bundler/vendor/connection_pool/LICENSE
231
248
  bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb
@@ -234,32 +251,28 @@ bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb
234
251
  bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb
235
252
  bundler/lib/bundler/vendor/fileutils/LICENSE.txt
236
253
  bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb
237
- bundler/lib/bundler/vendor/molinillo/LICENSE
238
- bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb
239
- bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb
240
- bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb
241
- bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb
242
- bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb
243
- bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb
244
- bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb
245
- bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb
246
- bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb
247
- bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb
248
- bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb
249
- bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb
250
- bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb
251
- bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb
252
- bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb
253
- bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb
254
- bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb
255
- bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb
256
- bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb
257
- bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb
258
254
  bundler/lib/bundler/vendor/net-http-persistent/README.rdoc
259
255
  bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb
260
256
  bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb
261
257
  bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb
262
258
  bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb
259
+ bundler/lib/bundler/vendor/pub_grub/LICENSE.txt
260
+ bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb
261
+ bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb
262
+ bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb
263
+ bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb
264
+ bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb
265
+ bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb
266
+ bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb
267
+ bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb
268
+ bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb
269
+ bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb
270
+ bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb
271
+ bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb
272
+ bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb
273
+ bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb
274
+ bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb
275
+ bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb
263
276
  bundler/lib/bundler/vendor/thor/LICENSE.md
264
277
  bundler/lib/bundler/vendor/thor/lib/thor.rb
265
278
  bundler/lib/bundler/vendor/thor/lib/thor/actions.rb
@@ -292,7 +305,6 @@ bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb
292
305
  bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb
293
306
  bundler/lib/bundler/vendor/thor/lib/thor/util.rb
294
307
  bundler/lib/bundler/vendor/thor/lib/thor/version.rb
295
- bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb
296
308
  bundler/lib/bundler/vendor/tsort/LICENSE.txt
297
309
  bundler/lib/bundler/vendor/tsort/lib/tsort.rb
298
310
  bundler/lib/bundler/vendor/uri/LICENSE.txt
@@ -312,17 +324,17 @@ bundler/lib/bundler/vendor/uri/lib/uri/version.rb
312
324
  bundler/lib/bundler/vendor/uri/lib/uri/ws.rb
313
325
  bundler/lib/bundler/vendor/uri/lib/uri/wss.rb
314
326
  bundler/lib/bundler/vendored_fileutils.rb
315
- bundler/lib/bundler/vendored_molinillo.rb
316
327
  bundler/lib/bundler/vendored_persistent.rb
328
+ bundler/lib/bundler/vendored_pub_grub.rb
317
329
  bundler/lib/bundler/vendored_thor.rb
318
- bundler/lib/bundler/vendored_tmpdir.rb
319
330
  bundler/lib/bundler/vendored_tsort.rb
320
331
  bundler/lib/bundler/vendored_uri.rb
321
332
  bundler/lib/bundler/version.rb
322
- bundler/lib/bundler/version_ranges.rb
323
333
  bundler/lib/bundler/vlad.rb
324
334
  bundler/lib/bundler/worker.rb
325
335
  bundler/lib/bundler/yaml_serializer.rb
336
+ exe/gem
337
+ exe/update_rubygems
326
338
  hide_lib_for_update/note.txt
327
339
  lib/rubygems.rb
328
340
  lib/rubygems/available_set.rb
@@ -337,6 +349,7 @@ lib/rubygems/commands/cleanup_command.rb
337
349
  lib/rubygems/commands/contents_command.rb
338
350
  lib/rubygems/commands/dependency_command.rb
339
351
  lib/rubygems/commands/environment_command.rb
352
+ lib/rubygems/commands/exec_command.rb
340
353
  lib/rubygems/commands/fetch_command.rb
341
354
  lib/rubygems/commands/generate_index_command.rb
342
355
  lib/rubygems/commands/help_command.rb
@@ -390,6 +403,9 @@ lib/rubygems/ext/ext_conf_builder.rb
390
403
  lib/rubygems/ext/rake_builder.rb
391
404
  lib/rubygems/gem_runner.rb
392
405
  lib/rubygems/gemcutter_utilities.rb
406
+ lib/rubygems/gemcutter_utilities/webauthn_listener.rb
407
+ lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb
408
+ lib/rubygems/gemcutter_utilities/webauthn_poller.rb
393
409
  lib/rubygems/indexer.rb
394
410
  lib/rubygems/install_default_message.rb
395
411
  lib/rubygems/install_message.rb
@@ -496,6 +512,7 @@ lib/rubygems/security/policy.rb
496
512
  lib/rubygems/security/signer.rb
497
513
  lib/rubygems/security/trust_dir.rb
498
514
  lib/rubygems/security_option.rb
515
+ lib/rubygems/shellwords.rb
499
516
  lib/rubygems/source.rb
500
517
  lib/rubygems/source/git.rb
501
518
  lib/rubygems/source/installed.rb
@@ -518,6 +535,7 @@ lib/rubygems/tsort/LICENSE.txt
518
535
  lib/rubygems/tsort/lib/tsort.rb
519
536
  lib/rubygems/uninstaller.rb
520
537
  lib/rubygems/unknown_command_spell_checker.rb
538
+ lib/rubygems/update_suggestion.rb
521
539
  lib/rubygems/uri.rb
522
540
  lib/rubygems/uri_formatter.rb
523
541
  lib/rubygems/user_interaction.rb
@@ -533,6 +551,7 @@ test/rubygems/alternate_cert.pem
533
551
  test/rubygems/alternate_cert_32.pem
534
552
  test/rubygems/alternate_key.pem
535
553
  test/rubygems/bad_rake.rb
554
+ test/rubygems/bundler_test_gem.rb
536
555
  test/rubygems/ca_cert.pem
537
556
  test/rubygems/child_cert.pem
538
557
  test/rubygems/child_cert_32.pem
@@ -565,7 +584,9 @@ test/rubygems/invalid_signer_cert_32.pem
565
584
  test/rubygems/invalidchild_cert.pem
566
585
  test/rubygems/invalidchild_cert_32.pem
567
586
  test/rubygems/invalidchild_key.pem
587
+ test/rubygems/multifactor_auth_utilities.rb
568
588
  test/rubygems/package/tar_test_case.rb
589
+ test/rubygems/packages/Bluebie-legs-0.6.2.gem
569
590
  test/rubygems/packages/ascii_binder-0.1.10.1.gem
570
591
  test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem
571
592
  test/rubygems/plugin/exception/rubygems_plugin.rb
@@ -603,6 +624,7 @@ test/rubygems/test_gem_commands_cleanup_command.rb
603
624
  test/rubygems/test_gem_commands_contents_command.rb
604
625
  test/rubygems/test_gem_commands_dependency_command.rb
605
626
  test/rubygems/test_gem_commands_environment_command.rb
627
+ test/rubygems/test_gem_commands_exec_command.rb
606
628
  test/rubygems/test_gem_commands_fetch_command.rb
607
629
  test/rubygems/test_gem_commands_generate_index_command.rb
608
630
  test/rubygems/test_gem_commands_help_command.rb
@@ -639,15 +661,14 @@ test/rubygems/test_gem_doctor.rb
639
661
  test/rubygems/test_gem_ext_builder.rb
640
662
  test/rubygems/test_gem_ext_cargo_builder.rb
641
663
  test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore
642
- test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.lock
643
- test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.toml
644
- test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb
645
664
  test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec
646
- test/rubygems/test_gem_ext_cargo_builder/custom_name/src/lib.rs
665
+ test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock
666
+ test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml
667
+ test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs
668
+ test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb
647
669
  test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore
648
670
  test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock
649
671
  test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml
650
- test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/build.rb
651
672
  test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec
652
673
  test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs
653
674
  test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb
@@ -726,6 +747,7 @@ test/rubygems/test_gem_stub_specification.rb
726
747
  test/rubygems/test_gem_text.rb
727
748
  test/rubygems/test_gem_uninstaller.rb
728
749
  test/rubygems/test_gem_unsatisfiable_dependency_error.rb
750
+ test/rubygems/test_gem_update_suggestion.rb
729
751
  test/rubygems/test_gem_uri.rb
730
752
  test/rubygems/test_gem_uri_formatter.rb
731
753
  test/rubygems/test_gem_util.rb
@@ -737,6 +759,9 @@ test/rubygems/test_project_sanity.rb
737
759
  test/rubygems/test_remote_fetch_error.rb
738
760
  test/rubygems/test_require.rb
739
761
  test/rubygems/test_rubygems.rb
762
+ test/rubygems/test_webauthn_listener.rb
763
+ test/rubygems/test_webauthn_listener_response.rb
764
+ test/rubygems/test_webauthn_poller.rb
740
765
  test/rubygems/utilities.rb
741
766
  test/rubygems/wrong_key_cert.pem
742
767
  test/rubygems/wrong_key_cert_32.pem
data/POLICIES.md CHANGED
@@ -42,8 +42,19 @@ at version 2.7, so when RubyGems 2.8 is released, it will only support Ruby
42
42
 
43
43
  ## Release Process
44
44
 
45
- Releases of new versions should follow these steps, to ensure the process is
46
- smooth and no needed steps are missed.
45
+ ### Permissions
46
+
47
+ You'll need the following environment variables set to release RubyGems &
48
+ Bundler:
49
+
50
+ * AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY: to be able to push RubyGems zip
51
+ files to s3 so that they appear at RubyGems [download page].
52
+
53
+ * GITHUB_RELEASE_PAT: A [GitHub PAT] with repo permissions, in order to push
54
+ GitHub releases and to use the GitHub API for changelog generation.
55
+
56
+ [download page]: https://rubygems.org/pages/download
57
+ [GitHub PAT]: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token
47
58
 
48
59
  ### Recommendations for security releases
49
60
 
@@ -54,30 +65,54 @@ smooth and no needed steps are missed.
54
65
  have to work on weekends.
55
66
  * Continue with the regular release process below.
56
67
 
68
+ ### Automatic changelog and backport generation
69
+
70
+ PR labels and titles are used to automatically generate changelogs for patch and
71
+ minor releases.
72
+
73
+ When releasing, a changelog generation script goes through all PRs that have
74
+ never made it into a release, and selects only the ones with specific labels as
75
+ detailed in the `.changelog.yml` and `bundler/.changelog.yml` files. Those
76
+ particular PRs get backported to the stable branch and included in the release
77
+ changelog.
78
+
79
+ If PRs don't have a proper label, they won't be backported to patch releases.
80
+
81
+ If you want a PR to be backported to a patch level release, but don't want to
82
+ include it in the changelog, you can use the special `rubygems: backport` and
83
+ `bundler: backport` labels. For example, this is useful when backporting a PR
84
+ generates conflicts that are solved by backporting another PR with no user
85
+ visible changes. You can use these special labels to also backport the other PR
86
+ and not get any conflicts.
57
87
 
58
88
  ### Steps for patch releases
59
89
 
60
90
  * Confirm all PRs that you want backported are properly tagged with `rubygems:
61
91
  <type>` or `bundler: <type>` labels at GitHub.
62
- * Run `rake prepare_release[<target_version>]`, create a PR and merge it
63
- to the stable branch once CI passes.
64
- * Switch to the stable branch and pull the PR just merged.
65
- * Release `bundler` with `(cd bundler && bin/rake release)`.
92
+ * Run `rake prepare_release[<target_version>]`. This will create a PR to the
93
+ stable branch with the backports included in the release, and proper
94
+ changelogs and version bumps. It will also create a PR to merge release
95
+ changelogs into master.
96
+ * Once CI passes, merge the release PR, switch to the stable branch and pull
97
+ the PR just merged.
98
+ * Release `bundler` with `rake bundler:release`.
66
99
  * Release `rubygems` with `rake release`.
67
100
 
68
101
  ### Steps for minor and major releases
69
102
 
70
103
  * Confirm all PRs that you want listed in changelogs are properly tagged with
71
104
  `rubygems: <type>` or `bundler: <type>` labels at GitHub.
72
- * Run `rake prepare_release[<target_version>]`.
73
- * Add the new stable branch `x.y` where `x.y` are the first two components of
74
- the rubygems version being released to the CI workflows as an extra commit
75
- on top of what the `prepare_release` task generated.
76
- * Create a PR to the main branch, and merge it once CI passes.
77
- * From the main branch, cut a new stable branch with `git pull && git checkout
78
- -b x.y`.
79
- * Push the stable branch and wait for CI to be green.
80
- * Release `bundler` with `(cd bundler && bin/rake release)`.
105
+ * Run `rake prepare_release[<target_version>]`. This will create a new stable
106
+ branch off the master branch, and create a PR to it with the proper version
107
+ bumps and changelogs. It will also create a PR to merge release changelogs
108
+ into master.
109
+ * Replace the stable branch in the workflows with the new stable branch, and
110
+ push that change to the release PR.
111
+ * Replace version numbers with the next ".dev" version, and push that change
112
+ to the master PR.
113
+ * Once CI passes, merge the release PR, switch to the stable branch and pull
114
+ the PR just merged.
115
+ * Release `bundler` with `rake bundler:release`.
81
116
  * Release `rubygems` with `rake release`.
82
117
 
83
118
  ## Committer Access
@@ -93,8 +128,8 @@ permissions compromised or exposed.
93
128
 
94
129
  ## Changing These Policies
95
130
 
96
- These policies were set in order to reduce the burden of maintenance and to
97
- keep committers current with existing development and policies. RubyGems work
98
- is primarily volunteer-driven which limits the ability to provide long-term
99
- support. By joining [Ruby Together](https://rubytogether.org) you can help
100
- extend support for older RubyGems versions.
131
+ These policies were set in order to reduce the burden of maintenance and to keep
132
+ committers current with existing development and policies. RubyGems work is
133
+ primarily volunteer-driven which limits the ability to provide long-term
134
+ support. By joining [Ruby Central](https://rubycentral.org/#/portal/signup) you
135
+ can help extend support for older RubyGems versions.
data/README.md CHANGED
@@ -64,6 +64,22 @@ To upgrade to the latest RubyGems, run:
64
64
 
65
65
  See [UPGRADING](UPGRADING.md) for more details and alternative instructions.
66
66
 
67
+ ## Release policy
68
+
69
+ RubyGems and Bundler are released in sync, although they do not share their
70
+ major version number. It is planned that also their major version numbers will
71
+ be sync'ed in the future.
72
+
73
+ The release policy is somewhat similar to the release policy of Ruby itself:
74
+
75
+ * Frequent patch releases (every 2-4 weeks) including bug fixes, minor
76
+ enhancements, small features, or even medium sized features declared as
77
+ experimental for battle testing.
78
+ * Yearly minor releases including bigger features, and minor breaking changes
79
+ (affecting only edge cases and a very small set of users).
80
+ * Occasional major releases (replacing yearly minors) including major breaking
81
+ changes.
82
+
67
83
  ## Documentation
68
84
 
69
85
  RubyGems uses [rdoc](https://github.com/rdoc/rdoc) for documentation. A compiled set of the docs
@@ -79,23 +95,20 @@ creating a new gem, security practices and other resources at https://guides.rub
79
95
  Got a bug and you're not sure? You're sure you have a bug, but don't know
80
96
  what to do next? In any case, let us know about it! The best place
81
97
  for letting the RubyGems team know about bugs or problems you're having is
82
- [on the RubyGems issues page at GitHub](http://github.com/rubygems/rubygems/issues).
98
+ [on the RubyGems issues page at GitHub](https://github.com/rubygems/rubygems/issues).
83
99
 
84
100
  ### Bundler Compatibility
85
101
 
86
- See http://bundler.io/compatibility for known issues.
102
+ See https://bundler.io/compatibility for known issues.
87
103
 
88
104
  ### Supporting
89
105
 
90
- <a href="https://rubytogether.org/"><img src="https://rubytogether.org/images/rubies.svg" width=200></a><br/>
91
- <a href="https://rubytogether.org/">Ruby Together</a> pays some RubyGems maintainers for their ongoing work. As a grassroots initiative committed to supporting the critical Ruby infrastructure you rely on, Ruby Together is funded entirely by the Ruby community. Contribute today <a href="https://rubytogether.org/developers">as an individual</a> or even better, <a href="https://rubytogether.org/companies">as a company</a>, and ensure that RubyGems, Bundler, and other shared tooling is around for years to come.
106
+ RubyGems is managed by [Ruby Central](https://rubycentral.org), a non-profit organization that supports the Ruby community through projects like this one, as well as [RubyConf](https://rubyconf.org), [RailsConf](https://railsconf.org), and [RubyGems.org](https://rubygems.org). You can support Ruby Central by attending or [sponsoring](sponsors@rubycentral.org) a conference, or by [joining as a supporting member](https://rubycentral.org/#/portal/signup).
92
107
 
93
108
  ### Contributing
94
109
 
95
110
  If you'd like to contribute to RubyGems, that's awesome, and we <3 you. Check out our [guide to contributing](CONTRIBUTING.md) for more information.
96
111
 
97
- While some RubyGems contributors are compensated by Ruby Together, the project maintainers make decisions independent of Ruby Together. As a project, we welcome contributions regardless of the author’s affiliation with Ruby Together.
98
-
99
112
  ### Code of Conduct
100
113
 
101
114
  Everyone interacting in the RubyGems project’s codebases, issue trackers, chat rooms, and mailing lists is expected to follow the [contributor code of conduct](https://github.com/rubygems/rubygems/blob/master/CODE_OF_CONDUCT.md).