rubygems-update 3.1.0 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (558) hide show
  1. checksums.yaml +4 -4
  2. data/CODE_OF_CONDUCT.md +55 -19
  3. data/CONTRIBUTING.md +25 -11
  4. data/History.txt +435 -179
  5. data/Manifest.txt +44 -77
  6. data/POLICIES.md +2 -9
  7. data/README.md +5 -5
  8. data/Rakefile +50 -83
  9. data/bin/update_rubygems +2 -2
  10. data/bundler/CHANGELOG.md +1590 -1400
  11. data/bundler/README.md +6 -8
  12. data/bundler/UPGRADING.md +18 -32
  13. data/bundler/bundler.gemspec +3 -3
  14. data/bundler/exe/bundle +3 -0
  15. data/bundler/lib/bundler.rb +25 -7
  16. data/bundler/lib/bundler/build_metadata.rb +4 -12
  17. data/bundler/lib/bundler/cli.rb +56 -20
  18. data/bundler/lib/bundler/cli/add.rb +1 -1
  19. data/bundler/lib/bundler/cli/binstubs.rb +6 -2
  20. data/bundler/lib/bundler/cli/cache.rb +1 -7
  21. data/bundler/lib/bundler/cli/clean.rb +1 -1
  22. data/bundler/lib/bundler/cli/common.rb +14 -0
  23. data/bundler/lib/bundler/cli/console.rb +1 -1
  24. data/bundler/lib/bundler/cli/doctor.rb +1 -1
  25. data/bundler/lib/bundler/cli/exec.rb +7 -16
  26. data/bundler/lib/bundler/cli/fund.rb +36 -0
  27. data/bundler/lib/bundler/cli/gem.rb +75 -11
  28. data/bundler/lib/bundler/cli/info.rb +8 -4
  29. data/bundler/lib/bundler/cli/init.rb +2 -2
  30. data/bundler/lib/bundler/cli/inject.rb +1 -1
  31. data/bundler/lib/bundler/cli/install.rb +12 -18
  32. data/bundler/lib/bundler/cli/issue.rb +2 -2
  33. data/bundler/lib/bundler/cli/list.rb +1 -1
  34. data/bundler/lib/bundler/cli/outdated.rb +2 -4
  35. data/bundler/lib/bundler/cli/plugin.rb +10 -0
  36. data/bundler/lib/bundler/cli/pristine.rb +1 -1
  37. data/bundler/lib/bundler/cli/show.rb +1 -1
  38. data/bundler/lib/bundler/cli/update.rb +2 -0
  39. data/bundler/lib/bundler/compact_index_client.rb +1 -1
  40. data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
  41. data/bundler/lib/bundler/compact_index_client/updater.rb +5 -5
  42. data/bundler/lib/bundler/definition.rb +47 -61
  43. data/bundler/lib/bundler/dep_proxy.rb +1 -1
  44. data/bundler/lib/bundler/dependency.rb +0 -9
  45. data/bundler/lib/bundler/dsl.rb +5 -9
  46. data/bundler/lib/bundler/endpoint_specification.rb +1 -1
  47. data/bundler/lib/bundler/env.rb +1 -1
  48. data/bundler/lib/bundler/environment_preserver.rb +26 -2
  49. data/bundler/lib/bundler/errors.rb +1 -0
  50. data/bundler/lib/bundler/feature_flag.rb +0 -3
  51. data/bundler/lib/bundler/fetcher.rb +4 -3
  52. data/bundler/lib/bundler/fetcher/base.rb +1 -1
  53. data/bundler/lib/bundler/fetcher/compact_index.rb +1 -1
  54. data/bundler/lib/bundler/fetcher/downloader.rb +1 -1
  55. data/bundler/lib/bundler/fetcher/index.rb +3 -4
  56. data/bundler/lib/bundler/friendly_errors.rb +22 -13
  57. data/bundler/lib/bundler/gem_helper.rb +33 -19
  58. data/bundler/lib/bundler/gem_helpers.rb +6 -1
  59. data/bundler/lib/bundler/gem_version_promoter.rb +2 -2
  60. data/bundler/lib/bundler/graph.rb +1 -1
  61. data/bundler/lib/bundler/index.rb +6 -2
  62. data/bundler/lib/bundler/injector.rb +22 -4
  63. data/bundler/lib/bundler/inline.rb +2 -2
  64. data/bundler/lib/bundler/installer.rb +35 -32
  65. data/bundler/lib/bundler/installer/gem_installer.rb +3 -3
  66. data/bundler/lib/bundler/installer/parallel_installer.rb +10 -10
  67. data/bundler/lib/bundler/installer/standalone.rb +2 -2
  68. data/bundler/lib/bundler/lazy_specification.rb +20 -9
  69. data/bundler/lib/bundler/lockfile_generator.rb +1 -1
  70. data/bundler/lib/bundler/lockfile_parser.rb +1 -1
  71. data/bundler/lib/bundler/man/.document +1 -0
  72. data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +0 -0
  73. data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
  74. data/bundler/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +0 -0
  75. data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
  76. data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
  77. data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +19 -30
  78. data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
  79. data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +0 -0
  80. data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
  81. data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
  82. data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
  83. data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
  84. data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +25 -3
  85. data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +0 -0
  86. data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
  87. data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
  88. data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
  89. data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
  90. data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
  91. data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
  92. data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
  93. data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +0 -0
  94. data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
  95. data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +0 -0
  96. data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +4 -4
  97. data/bundler/lib/bundler/mirror.rb +2 -2
  98. data/bundler/lib/bundler/plugin.rb +30 -5
  99. data/bundler/lib/bundler/plugin/api/source.rb +1 -1
  100. data/bundler/lib/bundler/plugin/dsl.rb +1 -1
  101. data/bundler/lib/bundler/plugin/index.rb +10 -1
  102. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  103. data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
  104. data/bundler/lib/bundler/plugin/source_list.rb +1 -1
  105. data/bundler/lib/bundler/psyched_yaml.rb +0 -15
  106. data/bundler/lib/bundler/remote_specification.rb +5 -2
  107. data/bundler/lib/bundler/resolver.rb +32 -10
  108. data/bundler/lib/bundler/resolver/spec_group.rb +27 -6
  109. data/bundler/lib/bundler/retry.rb +1 -1
  110. data/bundler/lib/bundler/ruby_version.rb +1 -1
  111. data/bundler/lib/bundler/rubygems_ext.rb +53 -9
  112. data/bundler/lib/bundler/rubygems_gem_installer.rb +3 -9
  113. data/bundler/lib/bundler/rubygems_integration.rb +35 -25
  114. data/bundler/lib/bundler/runtime.rb +4 -14
  115. data/bundler/lib/bundler/settings.rb +49 -46
  116. data/bundler/lib/bundler/setup.rb +5 -0
  117. data/bundler/lib/bundler/shared_helpers.rb +2 -2
  118. data/bundler/lib/bundler/similarity_detector.rb +1 -1
  119. data/bundler/lib/bundler/source.rb +1 -1
  120. data/bundler/lib/bundler/source/git.rb +1 -1
  121. data/bundler/lib/bundler/source/git/git_proxy.rb +57 -60
  122. data/bundler/lib/bundler/source/path.rb +7 -3
  123. data/bundler/lib/bundler/source/path/installer.rb +8 -10
  124. data/bundler/lib/bundler/source/rubygems.rb +13 -16
  125. data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
  126. data/bundler/lib/bundler/source_list.rb +2 -2
  127. data/bundler/lib/bundler/spec_set.rb +2 -1
  128. data/bundler/lib/bundler/stub_specification.rb +17 -5
  129. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  130. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +7 -2
  131. data/bundler/lib/bundler/templates/newgem/README.md.tt +1 -2
  132. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +12 -5
  133. data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
  134. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
  135. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
  136. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
  137. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
  138. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
  139. data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  140. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +13 -5
  141. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +10 -0
  142. data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  143. data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  144. data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
  145. data/bundler/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
  146. data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  147. data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  148. data/bundler/lib/bundler/ui/shell.rb +5 -5
  149. data/bundler/lib/bundler/uri_credentials_filter.rb +3 -1
  150. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
  151. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +34 -1
  152. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
  153. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
  154. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  155. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +38 -40
  156. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +72 -208
  157. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +0 -7
  158. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
  159. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
  160. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  161. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
  162. data/bundler/lib/bundler/vendored_persistent.rb +0 -7
  163. data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
  164. data/bundler/lib/bundler/version.rb +1 -1
  165. data/bundler/lib/bundler/worker.rb +1 -1
  166. data/bundler/lib/bundler/yaml_serializer.rb +1 -1
  167. data/bundler/man/bundle-add.1 +1 -1
  168. data/bundler/man/bundle-binstubs.1 +5 -3
  169. data/bundler/man/bundle-cache.1 +1 -1
  170. data/bundler/man/bundle-check.1 +1 -1
  171. data/bundler/man/bundle-clean.1 +1 -1
  172. data/bundler/man/bundle-config.1 +16 -25
  173. data/bundler/man/bundle-doctor.1 +1 -1
  174. data/bundler/man/bundle-exec.1 +1 -1
  175. data/bundler/man/bundle-gem.1 +25 -3
  176. data/bundler/man/bundle-info.1 +1 -1
  177. data/bundler/man/bundle-init.1 +1 -1
  178. data/bundler/man/bundle-inject.1 +1 -1
  179. data/bundler/man/bundle-install.1 +30 -3
  180. data/bundler/man/bundle-list.1 +1 -1
  181. data/bundler/man/bundle-lock.1 +1 -1
  182. data/bundler/man/bundle-open.1 +1 -1
  183. data/bundler/man/bundle-outdated.1 +1 -1
  184. data/bundler/man/bundle-platform.1 +1 -1
  185. data/bundler/man/bundle-pristine.1 +1 -1
  186. data/bundler/man/bundle-remove.1 +1 -1
  187. data/bundler/man/bundle-show.1 +1 -1
  188. data/bundler/man/bundle-update.1 +1 -1
  189. data/bundler/man/bundle-viz.1 +1 -1
  190. data/bundler/man/bundle.1 +1 -1
  191. data/bundler/man/gemfile.5 +4 -4
  192. data/lib/rubygems.rb +138 -187
  193. data/lib/rubygems/available_set.rb +4 -6
  194. data/lib/rubygems/basic_specification.rb +12 -10
  195. data/lib/rubygems/bundler_version_finder.rb +14 -9
  196. data/lib/rubygems/command.rb +17 -17
  197. data/lib/rubygems/command_manager.rb +5 -6
  198. data/lib/rubygems/commands/build_command.rb +40 -20
  199. data/lib/rubygems/commands/cert_command.rb +2 -10
  200. data/lib/rubygems/commands/check_command.rb +0 -2
  201. data/lib/rubygems/commands/cleanup_command.rb +11 -7
  202. data/lib/rubygems/commands/contents_command.rb +4 -6
  203. data/lib/rubygems/commands/dependency_command.rb +6 -8
  204. data/lib/rubygems/commands/environment_command.rb +1 -3
  205. data/lib/rubygems/commands/fetch_command.rb +2 -4
  206. data/lib/rubygems/commands/generate_index_command.rb +0 -2
  207. data/lib/rubygems/commands/help_command.rb +4 -4
  208. data/lib/rubygems/commands/info_command.rb +8 -5
  209. data/lib/rubygems/commands/install_command.rb +3 -5
  210. data/lib/rubygems/commands/list_command.rb +8 -7
  211. data/lib/rubygems/commands/lock_command.rb +1 -3
  212. data/lib/rubygems/commands/mirror_command.rb +0 -2
  213. data/lib/rubygems/commands/open_command.rb +0 -4
  214. data/lib/rubygems/commands/outdated_command.rb +0 -2
  215. data/lib/rubygems/commands/owner_command.rb +9 -3
  216. data/lib/rubygems/commands/pristine_command.rb +11 -5
  217. data/lib/rubygems/commands/push_command.rb +10 -46
  218. data/lib/rubygems/commands/query_command.rb +14 -344
  219. data/lib/rubygems/commands/rdoc_command.rb +0 -2
  220. data/lib/rubygems/commands/search_command.rb +7 -7
  221. data/lib/rubygems/commands/server_command.rb +3 -1
  222. data/lib/rubygems/commands/setup_command.rb +158 -70
  223. data/lib/rubygems/commands/signin_command.rb +0 -2
  224. data/lib/rubygems/commands/signout_command.rb +0 -2
  225. data/lib/rubygems/commands/sources_command.rb +9 -7
  226. data/lib/rubygems/commands/specification_command.rb +8 -4
  227. data/lib/rubygems/commands/stale_command.rb +1 -3
  228. data/lib/rubygems/commands/uninstall_command.rb +2 -4
  229. data/lib/rubygems/commands/unpack_command.rb +1 -3
  230. data/lib/rubygems/commands/update_command.rb +59 -14
  231. data/lib/rubygems/commands/which_command.rb +0 -2
  232. data/lib/rubygems/commands/yank_command.rb +4 -6
  233. data/lib/rubygems/config_file.rb +11 -4
  234. data/lib/rubygems/core_ext/kernel_require.rb +29 -36
  235. data/lib/rubygems/core_ext/kernel_warn.rb +12 -13
  236. data/lib/rubygems/defaults.rb +101 -7
  237. data/lib/rubygems/dependency.rb +3 -8
  238. data/lib/rubygems/dependency_installer.rb +5 -78
  239. data/lib/rubygems/dependency_list.rb +7 -9
  240. data/lib/rubygems/deprecate.rb +46 -1
  241. data/lib/rubygems/doctor.rb +4 -4
  242. data/lib/rubygems/errors.rb +3 -14
  243. data/lib/rubygems/exceptions.rb +2 -33
  244. data/lib/rubygems/ext.rb +6 -6
  245. data/lib/rubygems/ext/build_error.rb +2 -0
  246. data/lib/rubygems/ext/builder.rb +16 -35
  247. data/lib/rubygems/ext/cmake_builder.rb +5 -7
  248. data/lib/rubygems/ext/configure_builder.rb +4 -6
  249. data/lib/rubygems/ext/ext_conf_builder.rb +21 -19
  250. data/lib/rubygems/ext/rake_builder.rb +3 -5
  251. data/lib/rubygems/gem_runner.rb +3 -10
  252. data/lib/rubygems/gemcutter_utilities.rb +91 -15
  253. data/lib/rubygems/indexer.rb +1 -22
  254. data/lib/rubygems/install_update_options.rb +7 -7
  255. data/lib/rubygems/installer.rb +59 -57
  256. data/lib/rubygems/installer_test_case.rb +25 -11
  257. data/lib/rubygems/installer_uninstaller_utils.rb +24 -0
  258. data/lib/rubygems/local_remote_options.rb +1 -1
  259. data/lib/rubygems/mock_gem_ui.rb +0 -6
  260. data/lib/rubygems/name_tuple.rb +3 -7
  261. data/lib/rubygems/openssl.rb +7 -0
  262. data/lib/rubygems/package.rb +14 -25
  263. data/lib/rubygems/package/digest_io.rb +0 -2
  264. data/lib/rubygems/package/file_source.rb +0 -2
  265. data/lib/rubygems/package/io_source.rb +0 -2
  266. data/lib/rubygems/package/old.rb +1 -3
  267. data/lib/rubygems/package/tar_header.rb +4 -6
  268. data/lib/rubygems/package/tar_reader.rb +0 -3
  269. data/lib/rubygems/package/tar_reader/entry.rb +0 -3
  270. data/lib/rubygems/package/tar_test_case.rb +2 -4
  271. data/lib/rubygems/package/tar_writer.rb +2 -12
  272. data/lib/rubygems/package_task.rb +1 -7
  273. data/lib/rubygems/path_support.rb +1 -3
  274. data/lib/rubygems/platform.rb +21 -12
  275. data/lib/rubygems/psych_tree.rb +0 -2
  276. data/lib/rubygems/query_utils.rb +353 -0
  277. data/lib/rubygems/rdoc.rb +0 -12
  278. data/lib/rubygems/remote_fetcher.rb +10 -27
  279. data/lib/rubygems/request.rb +4 -11
  280. data/lib/rubygems/request/connection_pools.rb +1 -5
  281. data/lib/rubygems/request/http_pool.rb +0 -2
  282. data/lib/rubygems/request/https_pool.rb +0 -2
  283. data/lib/rubygems/request_set.rb +5 -7
  284. data/lib/rubygems/request_set/gem_dependency_api.rb +6 -8
  285. data/lib/rubygems/request_set/lockfile.rb +8 -12
  286. data/lib/rubygems/request_set/lockfile/parser.rb +0 -2
  287. data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -3
  288. data/lib/rubygems/requirement.rb +20 -21
  289. data/lib/rubygems/resolver.rb +8 -11
  290. data/lib/rubygems/resolver/activation_request.rb +9 -3
  291. data/lib/rubygems/resolver/api_set.rb +4 -6
  292. data/lib/rubygems/resolver/api_specification.rb +21 -8
  293. data/lib/rubygems/resolver/best_set.rb +0 -2
  294. data/lib/rubygems/resolver/composed_set.rb +3 -5
  295. data/lib/rubygems/resolver/conflict.rb +2 -4
  296. data/lib/rubygems/resolver/current_set.rb +0 -2
  297. data/lib/rubygems/resolver/dependency_request.rb +1 -3
  298. data/lib/rubygems/resolver/git_set.rb +0 -2
  299. data/lib/rubygems/resolver/git_specification.rb +0 -2
  300. data/lib/rubygems/resolver/index_set.rb +1 -3
  301. data/lib/rubygems/resolver/index_specification.rb +11 -2
  302. data/lib/rubygems/resolver/installed_specification.rb +0 -2
  303. data/lib/rubygems/resolver/installer_set.rb +4 -7
  304. data/lib/rubygems/resolver/local_specification.rb +0 -2
  305. data/lib/rubygems/resolver/lock_set.rb +2 -4
  306. data/lib/rubygems/resolver/lock_specification.rb +0 -2
  307. data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
  308. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
  309. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +1 -0
  310. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +39 -5
  311. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
  312. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
  313. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
  314. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
  315. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
  316. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
  317. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
  318. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
  319. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +43 -10
  320. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +75 -7
  321. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
  322. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +1 -0
  323. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
  324. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +506 -165
  325. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
  326. data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
  327. data/lib/rubygems/resolver/requirement_list.rb +0 -2
  328. data/lib/rubygems/resolver/set.rb +0 -2
  329. data/lib/rubygems/resolver/source_set.rb +0 -2
  330. data/lib/rubygems/resolver/spec_specification.rb +0 -2
  331. data/lib/rubygems/resolver/specification.rb +1 -3
  332. data/lib/rubygems/resolver/stats.rb +0 -2
  333. data/lib/rubygems/resolver/vendor_set.rb +0 -2
  334. data/lib/rubygems/resolver/vendor_specification.rb +0 -2
  335. data/lib/rubygems/s3_uri_signer.rb +2 -8
  336. data/lib/rubygems/safe_yaml.rb +4 -4
  337. data/lib/rubygems/security.rb +27 -34
  338. data/lib/rubygems/security/policy.rb +4 -8
  339. data/lib/rubygems/security/signer.rb +5 -7
  340. data/lib/rubygems/security/trust_dir.rb +1 -3
  341. data/lib/rubygems/server.rb +10 -12
  342. data/lib/rubygems/source.rb +13 -7
  343. data/lib/rubygems/source/git.rb +7 -8
  344. data/lib/rubygems/source/installed.rb +0 -2
  345. data/lib/rubygems/source/local.rb +2 -4
  346. data/lib/rubygems/source/lock.rb +0 -2
  347. data/lib/rubygems/source/specific_file.rb +0 -2
  348. data/lib/rubygems/source/vendor.rb +0 -2
  349. data/lib/rubygems/source_list.rb +6 -7
  350. data/lib/rubygems/spec_fetcher.rb +19 -18
  351. data/lib/rubygems/specification.rb +113 -126
  352. data/lib/rubygems/specification_policy.rb +88 -30
  353. data/lib/rubygems/ssl_certs/{index.rubygems.org → rubygems.org}/GlobalSignRootCA.pem +0 -0
  354. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
  355. data/lib/rubygems/stub_specification.rb +1 -5
  356. data/lib/rubygems/syck_hack.rb +0 -2
  357. data/lib/rubygems/test_case.rb +135 -118
  358. data/lib/rubygems/test_utilities.rb +6 -14
  359. data/lib/rubygems/uninstaller.rb +35 -16
  360. data/lib/rubygems/uri_formatter.rb +2 -3
  361. data/lib/rubygems/uri_parser.rb +0 -2
  362. data/lib/rubygems/user_interaction.rb +1 -26
  363. data/lib/rubygems/util.rb +15 -3
  364. data/lib/rubygems/util/licenses.rb +4 -6
  365. data/lib/rubygems/util/list.rb +0 -2
  366. data/lib/rubygems/validator.rb +1 -3
  367. data/lib/rubygems/version.rb +5 -7
  368. data/lib/rubygems/version_option.rb +6 -0
  369. data/rubygems-update.gemspec +2 -2
  370. data/setup.rb +2 -7
  371. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
  372. data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
  373. data/test/rubygems/rubygems_plugin.rb +0 -2
  374. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
  375. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
  376. data/test/rubygems/test_bundled_ca.rb +42 -45
  377. data/test/rubygems/test_config.rb +0 -2
  378. data/test/rubygems/test_deprecate.rb +40 -7
  379. data/test/rubygems/test_gem.rb +153 -106
  380. data/test/rubygems/test_gem_available_set.rb +3 -5
  381. data/test/rubygems/test_gem_bundler_version_finder.rb +19 -3
  382. data/test/rubygems/test_gem_command.rb +24 -7
  383. data/test/rubygems/test_gem_command_manager.rb +36 -5
  384. data/test/rubygems/test_gem_commands_build_command.rb +250 -15
  385. data/test/rubygems/test_gem_commands_cert_command.rb +4 -6
  386. data/test/rubygems/test_gem_commands_check_command.rb +0 -2
  387. data/test/rubygems/test_gem_commands_cleanup_command.rb +14 -5
  388. data/test/rubygems/test_gem_commands_contents_command.rb +50 -19
  389. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -2
  390. data/test/rubygems/test_gem_commands_environment_command.rb +21 -23
  391. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
  392. data/test/rubygems/test_gem_commands_generate_index_command.rb +1 -7
  393. data/test/rubygems/test_gem_commands_help_command.rb +15 -4
  394. data/test/rubygems/test_gem_commands_info_command.rb +6 -8
  395. data/test/rubygems/test_gem_commands_install_command.rb +32 -34
  396. data/test/rubygems/test_gem_commands_list_command.rb +0 -2
  397. data/test/rubygems/test_gem_commands_lock_command.rb +0 -2
  398. data/test/rubygems/test_gem_commands_mirror.rb +1 -3
  399. data/test/rubygems/test_gem_commands_open_command.rb +4 -6
  400. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -2
  401. data/test/rubygems/test_gem_commands_owner_command.rb +59 -5
  402. data/test/rubygems/test_gem_commands_pristine_command.rb +43 -12
  403. data/test/rubygems/test_gem_commands_push_command.rb +38 -9
  404. data/test/rubygems/test_gem_commands_query_command.rb +12 -12
  405. data/test/rubygems/test_gem_commands_search_command.rb +0 -2
  406. data/test/rubygems/test_gem_commands_server_command.rb +0 -2
  407. data/test/rubygems/test_gem_commands_setup_command.rb +211 -124
  408. data/test/rubygems/test_gem_commands_signin_command.rb +33 -9
  409. data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
  410. data/test/rubygems/test_gem_commands_sources_command.rb +99 -3
  411. data/test/rubygems/test_gem_commands_specification_command.rb +46 -20
  412. data/test/rubygems/test_gem_commands_stale_command.rb +0 -2
  413. data/test/rubygems/test_gem_commands_uninstall_command.rb +2 -3
  414. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
  415. data/test/rubygems/test_gem_commands_update_command.rb +116 -7
  416. data/test/rubygems/test_gem_commands_which_command.rb +3 -5
  417. data/test/rubygems/test_gem_commands_yank_command.rb +44 -8
  418. data/test/rubygems/test_gem_config_file.rb +7 -12
  419. data/test/rubygems/test_gem_dependency.rb +0 -2
  420. data/test/rubygems/test_gem_dependency_installer.rb +90 -193
  421. data/test/rubygems/test_gem_dependency_list.rb +10 -12
  422. data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -3
  423. data/test/rubygems/test_gem_doctor.rb +28 -2
  424. data/test/rubygems/test_gem_ext_builder.rb +26 -47
  425. data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -23
  426. data/test/rubygems/test_gem_ext_configure_builder.rb +4 -20
  427. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +9 -29
  428. data/test/rubygems/test_gem_ext_rake_builder.rb +14 -24
  429. data/test/rubygems/test_gem_gem_runner.rb +44 -1
  430. data/test/rubygems/test_gem_gemcutter_utilities.rb +8 -5
  431. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
  432. data/test/rubygems/test_gem_indexer.rb +9 -15
  433. data/test/rubygems/test_gem_install_update_options.rb +14 -4
  434. data/test/rubygems/test_gem_installer.rb +265 -81
  435. data/test/rubygems/test_gem_local_remote_options.rb +0 -2
  436. data/test/rubygems/test_gem_name_tuple.rb +0 -2
  437. data/test/rubygems/test_gem_package.rb +41 -39
  438. data/test/rubygems/test_gem_package_old.rb +4 -6
  439. data/test/rubygems/test_gem_package_tar_header.rb +18 -1
  440. data/test/rubygems/test_gem_package_tar_reader.rb +0 -2
  441. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -2
  442. data/test/rubygems/test_gem_package_tar_writer.rb +9 -6
  443. data/test/rubygems/test_gem_package_task.rb +46 -13
  444. data/test/rubygems/test_gem_path_support.rb +0 -2
  445. data/test/rubygems/test_gem_platform.rb +63 -6
  446. data/test/rubygems/test_gem_rdoc.rb +0 -2
  447. data/test/rubygems/test_gem_remote_fetcher.rb +168 -211
  448. data/test/rubygems/test_gem_request.rb +13 -17
  449. data/test/rubygems/test_gem_request_connection_pools.rb +0 -4
  450. data/test/rubygems/test_gem_request_set.rb +72 -22
  451. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +3 -5
  452. data/test/rubygems/test_gem_request_set_lockfile.rb +4 -6
  453. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -11
  454. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -120
  455. data/test/rubygems/test_gem_requirement.rb +10 -4
  456. data/test/rubygems/test_gem_resolver.rb +6 -8
  457. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -2
  458. data/test/rubygems/test_gem_resolver_api_set.rb +11 -13
  459. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -2
  460. data/test/rubygems/test_gem_resolver_best_set.rb +2 -4
  461. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -2
  462. data/test/rubygems/test_gem_resolver_conflict.rb +1 -3
  463. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -2
  464. data/test/rubygems/test_gem_resolver_git_set.rb +0 -2
  465. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -2
  466. data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
  467. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -2
  468. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -2
  469. data/test/rubygems/test_gem_resolver_installer_set.rb +7 -9
  470. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -2
  471. data/test/rubygems/test_gem_resolver_lock_set.rb +3 -5
  472. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -2
  473. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -2
  474. data/test/rubygems/test_gem_resolver_specification.rb +0 -4
  475. data/test/rubygems/test_gem_resolver_vendor_set.rb +1 -3
  476. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -2
  477. data/test/rubygems/test_gem_security.rb +22 -24
  478. data/test/rubygems/test_gem_security_policy.rb +7 -12
  479. data/test/rubygems/test_gem_security_signer.rb +10 -12
  480. data/test/rubygems/test_gem_security_trust_dir.rb +4 -6
  481. data/test/rubygems/test_gem_server.rb +10 -14
  482. data/test/rubygems/test_gem_silent_ui.rb +0 -2
  483. data/test/rubygems/test_gem_source.rb +17 -16
  484. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -2
  485. data/test/rubygems/test_gem_source_git.rb +12 -13
  486. data/test/rubygems/test_gem_source_installed.rb +7 -9
  487. data/test/rubygems/test_gem_source_list.rb +1 -2
  488. data/test/rubygems/test_gem_source_local.rb +8 -10
  489. data/test/rubygems/test_gem_source_lock.rb +10 -12
  490. data/test/rubygems/test_gem_source_specific_file.rb +7 -9
  491. data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
  492. data/test/rubygems/test_gem_source_vendor.rb +7 -9
  493. data/test/rubygems/test_gem_spec_fetcher.rb +11 -4
  494. data/test/rubygems/test_gem_specification.rb +182 -131
  495. data/test/rubygems/test_gem_stream_ui.rb +3 -3
  496. data/test/rubygems/test_gem_stub_specification.rb +4 -7
  497. data/test/rubygems/test_gem_text.rb +1 -3
  498. data/test/rubygems/test_gem_uninstaller.rb +134 -12
  499. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -2
  500. data/test/rubygems/test_gem_uri_formatter.rb +0 -2
  501. data/test/rubygems/test_gem_util.rb +7 -7
  502. data/test/rubygems/test_gem_validator.rb +1 -3
  503. data/test/rubygems/test_gem_version.rb +1 -3
  504. data/test/rubygems/test_gem_version_option.rb +1 -3
  505. data/test/rubygems/test_kernel.rb +25 -10
  506. data/test/rubygems/test_project_sanity.rb +7 -2
  507. data/test/rubygems/test_remote_fetch_error.rb +0 -2
  508. data/test/rubygems/test_require.rb +291 -56
  509. metadata +66 -100
  510. data/.bundle/config +0 -2
  511. data/.rubocop.yml +0 -91
  512. data/Gemfile +0 -8
  513. data/Gemfile.lock +0 -43
  514. data/bundler/CODE_OF_CONDUCT.md +0 -136
  515. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
  516. data/bundler/man/bundle-add.1.txt +0 -58
  517. data/bundler/man/bundle-binstubs.1.txt +0 -48
  518. data/bundler/man/bundle-cache.1.txt +0 -78
  519. data/bundler/man/bundle-check.1.txt +0 -33
  520. data/bundler/man/bundle-clean.1.txt +0 -26
  521. data/bundler/man/bundle-config.1.txt +0 -528
  522. data/bundler/man/bundle-doctor.1.txt +0 -44
  523. data/bundler/man/bundle-exec.1.txt +0 -178
  524. data/bundler/man/bundle-gem.1.txt +0 -91
  525. data/bundler/man/bundle-info.1.txt +0 -21
  526. data/bundler/man/bundle-init.1.txt +0 -34
  527. data/bundler/man/bundle-inject.1.txt +0 -32
  528. data/bundler/man/bundle-install.1.txt +0 -401
  529. data/bundler/man/bundle-list.1.txt +0 -44
  530. data/bundler/man/bundle-lock.1.txt +0 -93
  531. data/bundler/man/bundle-open.1.txt +0 -29
  532. data/bundler/man/bundle-outdated.1.txt +0 -131
  533. data/bundler/man/bundle-platform.1.txt +0 -57
  534. data/bundler/man/bundle-pristine.1.txt +0 -44
  535. data/bundler/man/bundle-remove.1.txt +0 -34
  536. data/bundler/man/bundle-show.1.txt +0 -27
  537. data/bundler/man/bundle-update.1.txt +0 -390
  538. data/bundler/man/bundle-viz.1.txt +0 -39
  539. data/bundler/man/bundle.1.txt +0 -116
  540. data/bundler/man/gemfile.5.txt +0 -649
  541. data/lib/rubygems/source_local.rb +0 -7
  542. data/lib/rubygems/source_specific_file.rb +0 -6
  543. data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  544. data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
  545. data/lib/ubygems.rb +0 -14
  546. data/tmp/.keep +0 -0
  547. data/util/CL2notes +0 -55
  548. data/util/bisect +0 -10
  549. data/util/ci.sh +0 -62
  550. data/util/cops/deprecations.rb +0 -52
  551. data/util/create_certs.rb +0 -171
  552. data/util/create_certs.sh +0 -27
  553. data/util/create_encrypted_key.rb +0 -16
  554. data/util/generate_spdx_license_list.rb +0 -63
  555. data/util/patch_with_prs.rb +0 -77
  556. data/util/rubocop +0 -8
  557. data/util/update_bundled_ca_certificates.rb +0 -139
  558. data/util/update_changelog.rb +0 -67
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-DOCTOR" "1" "December 2019" "" ""
4
+ .TH "BUNDLE\-DOCTOR" "1" "November 2020" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-doctor\fR \- Checks the bundle for common problems
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-EXEC" "1" "December 2019" "" ""
4
+ .TH "BUNDLE\-EXEC" "1" "November 2020" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-exec\fR \- Execute a command in the context of the bundle
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-GEM" "1" "December 2019" "" ""
4
+ .TH "BUNDLE\-GEM" "1" "November 2020" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-gem\fR \- Generate a project skeleton for creating a rubygem
@@ -64,8 +64,30 @@ Add an MIT license to a \fBLICENSE\.txt\fR file in the root of the generated pro
64
64
  Do not create a \fBLICENSE\.txt\fR (overrides \fB\-\-mit\fR specified in the global config)\.
65
65
  .
66
66
  .TP
67
- \fB\-t\fR, \fB\-\-test=minitest\fR, \fB\-\-test=rspec\fR
68
- Specify the test framework that Bundler should use when generating the project\. Acceptable values are \fBminitest\fR and \fBrspec\fR\. The \fBGEM_NAME\.gemspec\fR will be configured and a skeleton test/spec directory will be created based on this option\. If this option is unspecified, an interactive prompt will be displayed and the answer will be saved in Bundler\'s global config for future \fBbundle gem\fR use\. If no option is specified, the default testing framework is RSpec\.
67
+ \fB\-t\fR, \fB\-\-test=minitest\fR, \fB\-\-test=rspec\fR, \fB\-\-test=test\-unit\fR
68
+ Specify the test framework that Bundler should use when generating the project\. Acceptable values are \fBminitest\fR, \fBrspec\fR and \fBtest\-unit\fR\. The \fBGEM_NAME\.gemspec\fR will be configured and a skeleton test/spec directory will be created based on this option\. Given no option is specified:
69
+ .
70
+ .IP
71
+ When Bundler is configured to generate tests, this defaults to Bundler\'s global config setting \fBgem\.test\fR\.
72
+ .
73
+ .IP
74
+ When Bundler is configured to not generate tests, an interactive prompt will be displayed and the answer will be used for the current rubygem project\.
75
+ .
76
+ .IP
77
+ When Bundler is unconfigured, an interactive prompt will be displayed and the answer will be saved in Bundler\'s global config for future \fBbundle gem\fR use\.
78
+ .
79
+ .TP
80
+ \fB\-\-ci\fR, \fB\-\-ci=github\fR, \fB\-\-ci=travis\fR, \fB\-\-ci=gitlab\fR, \fB\-\-ci=circle\fR
81
+ Specify the continuous integration service that Bundler should use when generating the project\. Acceptable values are \fBgithub\fR, \fBtravis\fR, \fBgitlab\fR and \fBcircle\fR\. A configuration file will be generated in the project directory\. Given no option is specified:
82
+ .
83
+ .IP
84
+ When Bundler is configured to generate CI files, this defaults to Bundler\'s global config setting \fBgem\.ci\fR\.
85
+ .
86
+ .IP
87
+ When Bundler is configured to not generate CI files, an interactive prompt will be displayed and the answer will be used for the current rubygem project\.
88
+ .
89
+ .IP
90
+ When Bundler is unconfigured, an interactive prompt will be displayed and the answer will be saved in Bundler\'s global config for future \fBbundle gem\fR use\.
69
91
  .
70
92
  .TP
71
93
  \fB\-e\fR, \fB\-\-edit[=EDITOR]\fR
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-INFO" "1" "December 2019" "" ""
4
+ .TH "BUNDLE\-INFO" "1" "November 2020" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-info\fR \- Show information for the given gem in your bundle
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-INIT" "1" "December 2019" "" ""
4
+ .TH "BUNDLE\-INIT" "1" "November 2020" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-init\fR \- Generates a Gemfile into the current working directory
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-INJECT" "1" "December 2019" "" ""
4
+ .TH "BUNDLE\-INJECT" "1" "November 2020" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-inject\fR \- Add named gem(s) with version requirements to Gemfile
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-INSTALL" "1" "December 2019" "" ""
4
+ .TH "BUNDLE\-INSTALL" "1" "November 2020" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-install\fR \- Install the dependencies specified in your Gemfile
@@ -19,7 +19,7 @@ If a \fBGemfile\.lock\fR does exist, and you have not updated your Gemfile(5), B
19
19
  If a \fBGemfile\.lock\fR does exist, and you have updated your Gemfile(5), Bundler will use the dependencies in the \fBGemfile\.lock\fR for all gems that you did not update, but will re\-resolve the dependencies of gems that you did update\. You can find more information about this update process below under \fICONSERVATIVE UPDATING\fR\.
20
20
  .
21
21
  .SH "OPTIONS"
22
- To apply any of \fB\-\-binstubs\fR, \fB\-\-deployment\fR, \fB\-\-path\fR, or \fB\-\-without\fR every time \fBbundle install\fR is run, use \fBbundle config\fR (see bundle\-config(1))\.
22
+ The \fB\-\-clean\fR, \fB\-\-deployment\fR, \fB\-\-frozen\fR, \fB\-\-no\-prune\fR, \fB\-\-path\fR, \fB\-\-shebang\fR, \fB\-\-system\fR, \fB\-\-without\fR and \fB\-\-with\fR options are deprecated because they only make sense if they are applied to every subsequent \fBbundle install\fR run automatically and that requires \fBbundler\fR to silently remember them\. Since \fBbundler\fR will no longer remember CLI flags in future versions, \fBbundle config\fR (see bundle\-config(1)) should be used to apply them permanently\.
23
23
  .
24
24
  .TP
25
25
  \fB\-\-binstubs[=<directory>]\fR
@@ -32,10 +32,16 @@ Creates a directory (defaults to \fB~/bin\fR) and places any executables from th
32
32
  \fB\-\-clean\fR
33
33
  On finishing the installation Bundler is going to remove any gems not present in the current Gemfile(5)\. Don\'t worry, gems currently in use will not be removed\.
34
34
  .
35
+ .IP
36
+ This option is deprecated in favor of the \fBclean\fR setting\.
37
+ .
35
38
  .TP
36
39
  \fB\-\-deployment\fR
37
40
  In \fIdeployment mode\fR, Bundler will \'roll\-out\' the bundle for production or CI use\. Please check carefully if you want to have this option enabled in your development environment\.
38
41
  .
42
+ .IP
43
+ This option is deprecated in favor of the \fBdeployment\fR setting\.
44
+ .
39
45
  .TP
40
46
  \fB\-\-redownload\fR
41
47
  Force download every gem, even if the required versions are already available locally\.
@@ -44,6 +50,9 @@ Force download every gem, even if the required versions are already available lo
44
50
  \fB\-\-frozen\fR
45
51
  Do not allow the Gemfile\.lock to be updated after this install\. Exits non\-zero if there are going to be changes to the Gemfile\.lock\.
46
52
  .
53
+ .IP
54
+ This option is deprecated in favor of the \fBfrozen\fR setting\.
55
+ .
47
56
  .TP
48
57
  \fB\-\-full\-index\fR
49
58
  Bundler will not call Rubygems\' API endpoint (default) but download and cache a (currently big) index file of all gems\. Performance can be improved for large bundles that seldom change by enabling this option\.
@@ -58,7 +67,7 @@ The maximum number of parallel download and install jobs\. The default is \fB1\f
58
67
  .
59
68
  .TP
60
69
  \fB\-\-local\fR
61
- Do not attempt to connect to \fBrubygems\.org\fR\. Instead, Bundler will use the gems already present in Rubygems\' cache or in \fBvendor/cache\fR\. Note that if a appropriate platform\-specific gem exists on \fBrubygems\.org\fR it will not be found\.
70
+ Do not attempt to connect to \fBrubygems\.org\fR\. Instead, Bundler will use the gems already present in Rubygems\' cache or in \fBvendor/cache\fR\. Note that if an appropriate platform\-specific gem exists on \fBrubygems\.org\fR it will not be found\.
62
71
  .
63
72
  .TP
64
73
  \fB\-\-no\-cache\fR
@@ -68,10 +77,16 @@ Do not update the cache in \fBvendor/cache\fR with the newly bundled gems\. This
68
77
  \fB\-\-no\-prune\fR
69
78
  Don\'t remove stale gems from the cache when the installation finishes\.
70
79
  .
80
+ .IP
81
+ This option is deprecated in favor of the \fBno_prune\fR setting\.
82
+ .
71
83
  .TP
72
84
  \fB\-\-path=<path>\fR
73
85
  The location to install the specified gems to\. This defaults to Rubygems\' setting\. Bundler shares this location with Rubygems, \fBgem install \.\.\.\fR will have gem installed there, too\. Therefore, gems installed without a \fB\-\-path \.\.\.\fR setting will show up by calling \fBgem list\fR\. Accordingly, gems installed to other locations will not get listed\.
74
86
  .
87
+ .IP
88
+ This option is deprecated in favor of the \fBpath\fR setting\.
89
+ .
75
90
  .TP
76
91
  \fB\-\-quiet\fR
77
92
  Do not print progress information to the standard output\. Instead, Bundler will exit using a status code (\fB$?\fR)\.
@@ -84,6 +99,9 @@ Retry failed network or git requests for \fInumber\fR times\.
84
99
  \fB\-\-shebang=<ruby\-executable>\fR
85
100
  Uses the specified ruby executable (usually \fBruby\fR) to execute the scripts created with \fB\-\-binstubs\fR\. In addition, if you use \fB\-\-binstubs\fR together with \fB\-\-shebang jruby\fR these executables will be changed to execute \fBjruby\fR instead\.
86
101
  .
102
+ .IP
103
+ This option is deprecated in favor of the \fBshebang\fR setting\.
104
+ .
87
105
  .TP
88
106
  \fB\-\-standalone[=<list>]\fR
89
107
  Makes a bundle that can work without depending on Rubygems or Bundler at runtime\. A space separated list of groups to install has to be specified\. Bundler creates a directory named \fBbundle\fR and installs the bundle there\. It also generates a \fBbundle/bundler/setup\.rb\fR file to replace Bundler\'s own setup in the manner required\. Using this option implicitly sets \fBpath\fR, which is a [remembered option][REMEMBERED OPTIONS]\.
@@ -92,6 +110,9 @@ Makes a bundle that can work without depending on Rubygems or Bundler at runtime
92
110
  \fB\-\-system\fR
93
111
  Installs the gems specified in the bundle to the system\'s Rubygems location\. This overrides any previous configuration of \fB\-\-path\fR\.
94
112
  .
113
+ .IP
114
+ This option is deprecated in favor of the \fBsystem\fR setting\.
115
+ .
95
116
  .TP
96
117
  \fB\-\-trust\-policy=[<policy>]\fR
97
118
  Apply the Rubygems security policy \fIpolicy\fR, where policy is one of \fBHighSecurity\fR, \fBMediumSecurity\fR, \fBLowSecurity\fR, \fBAlmostNoSecurity\fR, or \fBNoSecurity\fR\. For more details, please see the Rubygems signing documentation linked below in \fISEE ALSO\fR\.
@@ -100,10 +121,16 @@ Apply the Rubygems security policy \fIpolicy\fR, where policy is one of \fBHighS
100
121
  \fB\-\-with=<list>\fR
101
122
  A space\-separated list of groups referencing gems to install\. If an optional group is given it is installed\. If a group is given that is in the remembered list of groups given to \-\-without, it is removed from that list\.
102
123
  .
124
+ .IP
125
+ This option is deprecated in favor of the \fBwith\fR setting\.
126
+ .
103
127
  .TP
104
128
  \fB\-\-without=<list>\fR
105
129
  A space\-separated list of groups referencing gems to skip during installation\. If a group is given that is in the remembered list of groups given to \-\-with, it is removed from that list\.
106
130
  .
131
+ .IP
132
+ This option is deprecated in favor of the \fBwithout\fR setting\.
133
+ .
107
134
  .SH "DEPLOYMENT MODE"
108
135
  Bundler\'s defaults are optimized for development\. To switch to defaults optimized for deployment and for CI, use the \fB\-\-deployment\fR flag\. Do not activate deployment mode on development machines, as it will cause an error when the Gemfile(5) is modified\.
109
136
  .
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-LIST" "1" "December 2019" "" ""
4
+ .TH "BUNDLE\-LIST" "1" "November 2020" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-list\fR \- List all the gems in the bundle
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-LOCK" "1" "December 2019" "" ""
4
+ .TH "BUNDLE\-LOCK" "1" "November 2020" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-lock\fR \- Creates / Updates a lockfile without installing
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-OPEN" "1" "December 2019" "" ""
4
+ .TH "BUNDLE\-OPEN" "1" "November 2020" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-open\fR \- Opens the source directory for a gem in your bundle
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-OUTDATED" "1" "December 2019" "" ""
4
+ .TH "BUNDLE\-OUTDATED" "1" "November 2020" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-outdated\fR \- List installed gems with newer versions available
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-PLATFORM" "1" "December 2019" "" ""
4
+ .TH "BUNDLE\-PLATFORM" "1" "November 2020" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-platform\fR \- Displays platform compatibility information
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-PRISTINE" "1" "December 2019" "" ""
4
+ .TH "BUNDLE\-PRISTINE" "1" "November 2020" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-pristine\fR \- Restores installed gems to their pristine condition
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-REMOVE" "1" "December 2019" "" ""
4
+ .TH "BUNDLE\-REMOVE" "1" "November 2020" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-remove\fR \- Removes gems from the Gemfile
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-SHOW" "1" "December 2019" "" ""
4
+ .TH "BUNDLE\-SHOW" "1" "November 2020" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-show\fR \- Shows all the gems in your bundle, or the path to a gem
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-UPDATE" "1" "December 2019" "" ""
4
+ .TH "BUNDLE\-UPDATE" "1" "November 2020" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-update\fR \- Update your gems to the latest available versions
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-VIZ" "1" "December 2019" "" ""
4
+ .TH "BUNDLE\-VIZ" "1" "November 2020" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-viz\fR \- Generates a visual dependency graph for your Gemfile
data/bundler/man/bundle.1 CHANGED
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE" "1" "December 2019" "" ""
4
+ .TH "BUNDLE" "1" "November 2020" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\fR \- Ruby Dependency Management
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "GEMFILE" "5" "December 2019" "" ""
4
+ .TH "GEMFILE" "5" "November 2020" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBGemfile\fR \- A format for describing gem dependencies for Ruby programs
@@ -150,7 +150,7 @@ gem "RedCloth", ">= 4\.1\.0", "< 4\.2\.0"
150
150
  .IP "" 0
151
151
  .
152
152
  .SS "REQUIRE AS"
153
- Each \fIgem\fR \fBMAY\fR specify files that should be used when autorequiring via \fBBundler\.require\fR\. You may pass an array with multiple files or \fBtrue\fR if file you want \fBrequired\fR has same name as \fIgem\fR or \fBfalse\fR to prevent any file from being autorequired\.
153
+ Each \fIgem\fR \fBMAY\fR specify files that should be used when autorequiring via \fBBundler\.require\fR\. You may pass an array with multiple files or \fBtrue\fR if the file you want \fBrequired\fR has the same name as \fIgem\fR or \fBfalse\fR to prevent any file from being autorequired\.
154
154
  .
155
155
  .IP "" 4
156
156
  .
@@ -227,8 +227,8 @@ To specify multiple groups to ignore, specify a list of groups separated by spac
227
227
  .
228
228
  .nf
229
229
 
230
- bundle config set without test
231
- bundle config set without development test
230
+ bundle config set \-\-local without test
231
+ bundle config set \-\-local without development test
232
232
  .
233
233
  .fi
234
234
  .
data/lib/rubygems.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # -*- ruby -*-
3
2
  #--
4
3
  # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
5
4
  # All rights reserved.
@@ -9,7 +8,7 @@
9
8
  require 'rbconfig'
10
9
 
11
10
  module Gem
12
- VERSION = "3.1.0".freeze
11
+ VERSION = "3.2.0".freeze
13
12
  end
14
13
 
15
14
  # Must be first since it unloads the prelude from 1.9.2
@@ -26,27 +25,27 @@ require 'rubygems/errors'
26
25
  # For user documentation, see:
27
26
  #
28
27
  # * <tt>gem help</tt> and <tt>gem help [command]</tt>
29
- # * {RubyGems User Guide}[http://guides.rubygems.org/]
30
- # * {Frequently Asked Questions}[http://guides.rubygems.org/faqs]
28
+ # * {RubyGems User Guide}[https://guides.rubygems.org/]
29
+ # * {Frequently Asked Questions}[https://guides.rubygems.org/faqs]
31
30
  #
32
31
  # For gem developer documentation see:
33
32
  #
34
- # * {Creating Gems}[http://guides.rubygems.org/make-your-own-gem]
33
+ # * {Creating Gems}[https://guides.rubygems.org/make-your-own-gem]
35
34
  # * Gem::Specification
36
35
  # * Gem::Version for version dependency notes
37
36
  #
38
37
  # Further RubyGems documentation can be found at:
39
38
  #
40
- # * {RubyGems Guides}[http://guides.rubygems.org]
41
- # * {RubyGems API}[http://www.rubydoc.info/github/rubygems/rubygems] (also available from
39
+ # * {RubyGems Guides}[https://guides.rubygems.org]
40
+ # * {RubyGems API}[https://www.rubydoc.info/github/rubygems/rubygems] (also available from
42
41
  # <tt>gem server</tt>)
43
42
  #
44
43
  # == RubyGems Plugins
45
44
  #
46
- # As of RubyGems 1.3.2, RubyGems will load plugins installed in gems or
45
+ # RubyGems will load plugins in the latest version of each installed gem or
47
46
  # $LOAD_PATH. Plugins must be named 'rubygems_plugin' (.rb, .so, etc) and
48
- # placed at the root of your gem's #require_path. Plugins are discovered via
49
- # Gem::find_files and then loaded.
47
+ # placed at the root of your gem's #require_path. Plugins are installed at a
48
+ # special location and loaded on boot.
50
49
  #
51
50
  # For an example plugin, see the {Graph gem}[https://github.com/seattlerb/graph]
52
51
  # which adds a `gem graph` command.
@@ -120,6 +119,10 @@ module Gem
120
119
  # to avoid deprecation warnings in Ruby 2.7.
121
120
  UNTAINT = RUBY_VERSION < '2.7' ? :untaint.to_sym : proc{}
122
121
 
122
+ # When https://bugs.ruby-lang.org/issues/17259 is available, there is no need to override Kernel#warn
123
+ KERNEL_WARN_IGNORES_INTERNAL_ENTRIES = RUBY_ENGINE == "truffleruby" ||
124
+ (RUBY_ENGINE == "ruby" && RUBY_VERSION >= '3.0')
125
+
123
126
  ##
124
127
  # An Array of Regexps that match windows Ruby platforms.
125
128
 
@@ -148,6 +151,7 @@ module Gem
148
151
  doc
149
152
  extensions
150
153
  gems
154
+ plugins
151
155
  specifications
152
156
  ].freeze
153
157
 
@@ -189,6 +193,8 @@ module Gem
189
193
  @pre_reset_hooks ||= []
190
194
  @post_reset_hooks ||= []
191
195
 
196
+ @default_source_date_epoch = nil
197
+
192
198
  ##
193
199
  # Try to activate a gem containing +path+. Returns true if
194
200
  # activation succeeded or wasn't needed because it was already
@@ -315,6 +321,13 @@ module Gem
315
321
  Gem.default_bindir
316
322
  end
317
323
 
324
+ ##
325
+ # The path were rubygems plugins are to be installed.
326
+
327
+ def self.plugindir(install_dir=Gem.dir)
328
+ File.join install_dir, 'plugins'
329
+ end
330
+
318
331
  ##
319
332
  # Reset the +dir+ and +path+ values. The next time +dir+ or +path+
320
333
  # is requested, the values will be calculated from scratch. This is
@@ -327,13 +340,6 @@ module Gem
327
340
  Gem::Security.reset if defined?(Gem::Security)
328
341
  end
329
342
 
330
- ##
331
- # The path to standard location of the user's .gemrc file.
332
-
333
- def self.config_file
334
- @config_file ||= File.join Gem.user_home, '.gemrc'
335
- end
336
-
337
343
  ##
338
344
  # The standard configuration object for gems.
339
345
 
@@ -391,11 +397,11 @@ module Gem
391
397
  target[k] = v
392
398
  when Array
393
399
  unless Gem::Deprecate.skip
394
- warn <<-eowarn
400
+ warn <<-EOWARN
395
401
  Array values in the parameter to `Gem.paths=` are deprecated.
396
402
  Please use a String or nil.
397
403
  An Array (#{env.inspect}) was passed in from #{caller[3]}
398
- eowarn
404
+ EOWARN
399
405
  end
400
406
  target[k] = v.join File::PATH_SEPARATOR
401
407
  end
@@ -409,8 +415,6 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
409
415
 
410
416
  ##
411
417
  # The path where gems are to be installed.
412
- #--
413
- # FIXME deprecate these once everything else has been done -ebh
414
418
 
415
419
  def self.dir
416
420
  paths.home
@@ -463,7 +467,10 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
463
467
  subdirs.each do |name|
464
468
  subdir = File.join dir, name
465
469
  next if File.exist? subdir
466
- FileUtils.mkdir_p subdir, **options rescue nil
470
+ begin
471
+ FileUtils.mkdir_p subdir, **options
472
+ rescue Errno::EACCES
473
+ end
467
474
  end
468
475
  ensure
469
476
  File.umask old_umask
@@ -500,7 +507,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
500
507
 
501
508
  gem_specifications = @gemdeps ? Gem.loaded_specs.values : Gem::Specification.stubs
502
509
 
503
- files.concat gem_specifications.map { |spec|
510
+ files.concat gem_specifications.map {|spec|
504
511
  spec.matches_for_glob("#{glob}#{Gem.suffix_pattern}")
505
512
  }.flatten
506
513
 
@@ -515,7 +522,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
515
522
  glob_with_suffixes = "#{glob}#{Gem.suffix_pattern}"
516
523
  $LOAD_PATH.map do |load_path|
517
524
  Gem::Util.glob_files_in_dir(glob_with_suffixes, load_path)
518
- end.flatten.select { |file| File.file? file.tap(&Gem::UNTAINT) }
525
+ end.flatten.select {|file| File.file? file.tap(&Gem::UNTAINT) }
519
526
  end
520
527
 
521
528
  ##
@@ -535,7 +542,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
535
542
 
536
543
  files = find_files_from_load_path glob if check_load_path
537
544
 
538
- files.concat Gem::Specification.latest_specs(true).map { |spec|
545
+ files.concat Gem::Specification.latest_specs(true).map {|spec|
539
546
  spec.matches_for_glob("#{glob}#{Gem.suffix_pattern}")
540
547
  }.flatten
541
548
 
@@ -546,83 +553,12 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
546
553
  return files
547
554
  end
548
555
 
549
- ##
550
- # Finds the user's home directory.
551
- #--
552
- # Some comments from the ruby-talk list regarding finding the home
553
- # directory:
554
- #
555
- # I have HOME, USERPROFILE and HOMEDRIVE + HOMEPATH. Ruby seems
556
- # to be depending on HOME in those code samples. I propose that
557
- # it should fallback to USERPROFILE and HOMEDRIVE + HOMEPATH (at
558
- # least on Win32).
559
- #++
560
- #--
561
- #
562
- #++
563
-
564
- def self.find_home
565
- Dir.home.dup
566
- rescue
567
- if Gem.win_platform?
568
- File.expand_path File.join(ENV['HOMEDRIVE'] || ENV['SystemDrive'], '/')
569
- else
570
- File.expand_path "/"
571
- end
572
- end
573
-
574
- private_class_method :find_home
575
-
576
- # TODO: remove in RubyGems 4.0
577
-
578
- ##
579
- # Zlib::GzipReader wrapper that unzips +data+.
580
-
581
- def self.gunzip(data)
582
- Gem::Util.gunzip data
583
- end
584
-
585
- class << self
586
-
587
- extend Gem::Deprecate
588
- deprecate :gunzip, "Gem::Util.gunzip", 2018, 12
589
-
590
- end
591
-
592
- ##
593
- # Zlib::GzipWriter wrapper that zips +data+.
594
-
595
- def self.gzip(data)
596
- Gem::Util.gzip data
597
- end
598
-
599
- class << self
600
-
601
- extend Gem::Deprecate
602
- deprecate :gzip, "Gem::Util.gzip", 2018, 12
603
-
604
- end
605
-
606
- ##
607
- # A Zlib::Inflate#inflate wrapper
608
-
609
- def self.inflate(data)
610
- Gem::Util.inflate data
611
- end
612
-
613
- class << self
614
-
615
- extend Gem::Deprecate
616
- deprecate :inflate, "Gem::Util.inflate", 2018, 12
617
-
618
- end
619
-
620
556
  ##
621
557
  # Top level install helper method. Allows you to install gems interactively:
622
558
  #
623
559
  # % irb
624
560
  # >> Gem.install "minitest"
625
- # Fetching: minitest-3.0.1.gem (100%)
561
+ # Fetching: minitest-5.14.0.gem (100%)
626
562
  # => [#<Gem::Specification:0x1013b4528 @name="minitest", ...>]
627
563
 
628
564
  def self.install(name, version = Gem::Requirement.default, *options)
@@ -657,22 +593,25 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
657
593
 
658
594
  index = $LOAD_PATH.index RbConfig::CONFIG['sitelibdir']
659
595
 
660
- index
596
+ index || 0
597
+ end
598
+
599
+ ##
600
+ # The number of paths in the `$LOAD_PATH` from activated gems. Used to
601
+ # prioritize `-I` and `ENV['RUBYLIB`]` entries during `require`.
602
+
603
+ def self.activated_gem_paths
604
+ @activated_gem_paths ||= 0
661
605
  end
662
606
 
663
607
  ##
664
608
  # Add a list of paths to the $LOAD_PATH at the proper place.
665
609
 
666
610
  def self.add_to_load_path(*paths)
667
- insert_index = load_path_insert_index
611
+ @activated_gem_paths = activated_gem_paths + paths.size
668
612
 
669
- if insert_index
670
- # gem directories must come after -I and ENV['RUBYLIB']
671
- $LOAD_PATH.insert(insert_index, *paths)
672
- else
673
- # we are probably testing in core, -I and RUBYLIB don't apply
674
- $LOAD_PATH.unshift(*paths)
675
- end
613
+ # gem directories must come after -I and ENV['RUBYLIB']
614
+ $LOAD_PATH.insert(Gem.load_path_insert_index, *paths)
676
615
  end
677
616
 
678
617
  @yaml_loaded = false
@@ -682,14 +621,6 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
682
621
 
683
622
  def self.load_yaml
684
623
  return if @yaml_loaded
685
- return unless defined?(gem)
686
-
687
- begin
688
- gem 'psych', '>= 2.0.0'
689
- rescue Gem::LoadError
690
- # It's OK if the user does not have the psych gem installed. We will
691
- # attempt to require the stdlib version
692
- end
693
624
 
694
625
  begin
695
626
  # Try requiring the gem version *or* stdlib version of psych.
@@ -904,8 +835,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
904
835
 
905
836
  def self.ruby
906
837
  if @ruby.nil?
907
- @ruby = File.join(RbConfig::CONFIG['bindir'],
908
- "#{RbConfig::CONFIG['ruby_install_name']}#{RbConfig::CONFIG['EXEEXT']}")
838
+ @ruby = RbConfig.ruby
909
839
 
910
840
  @ruby = "\"#{@ruby}\"" if @ruby =~ /\s/
911
841
  end
@@ -1018,21 +948,38 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
1018
948
  @suffix_pattern ||= "{#{suffixes.join(',')}}"
1019
949
  end
1020
950
 
951
+ ##
952
+ # Regexp for require-able path suffixes.
953
+
1021
954
  def self.suffix_regexp
1022
955
  @suffix_regexp ||= /#{Regexp.union(suffixes)}\z/
1023
956
  end
1024
957
 
958
+ ##
959
+ # Glob pattern for require-able plugin suffixes.
960
+
961
+ def self.plugin_suffix_pattern
962
+ @plugin_suffix_pattern ||= "_plugin#{suffix_pattern}"
963
+ end
964
+
965
+ ##
966
+ # Regexp for require-able plugin suffixes.
967
+
968
+ def self.plugin_suffix_regexp
969
+ @plugin_suffix_regexp ||= /_plugin#{suffix_regexp}\z/
970
+ end
971
+
1025
972
  ##
1026
973
  # Suffixes for require-able paths.
1027
974
 
1028
975
  def self.suffixes
1029
976
  @suffixes ||= ['',
1030
977
  '.rb',
1031
- *%w(DLEXT DLEXT2).map do |key|
978
+ *%w[DLEXT DLEXT2].map do |key|
1032
979
  val = RbConfig::CONFIG[key]
1033
980
  next unless val and not val.empty?
1034
981
  ".#{val}"
1035
- end
982
+ end,
1036
983
  ].compact.uniq
1037
984
  end
1038
985
 
@@ -1069,24 +1016,17 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
1069
1016
  paths.flatten!
1070
1017
  paths.compact!
1071
1018
  hash = { "GEM_HOME" => home, "GEM_PATH" => paths.empty? ? home : paths.join(File::PATH_SEPARATOR) }
1072
- hash.delete_if { |_, v| v.nil? }
1019
+ hash.delete_if {|_, v| v.nil? }
1073
1020
  self.paths = hash
1074
1021
  end
1075
1022
 
1076
- ##
1077
- # The home directory for the user.
1078
-
1079
- def self.user_home
1080
- @user_home ||= find_home.tap(&Gem::UNTAINT)
1081
- end
1082
-
1083
1023
  ##
1084
1024
  # Is this a windows platform?
1085
1025
 
1086
1026
  def self.win_platform?
1087
1027
  if @@win_platform.nil?
1088
1028
  ruby_platform = RbConfig::CONFIG['host_os']
1089
- @@win_platform = !!WIN_PATTERNS.find { |r| ruby_platform =~ r }
1029
+ @@win_platform = !!WIN_PATTERNS.find {|r| ruby_platform =~ r }
1090
1030
  end
1091
1031
 
1092
1032
  @@win_platform
@@ -1120,35 +1060,17 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
1120
1060
  end
1121
1061
 
1122
1062
  ##
1123
- # Find the 'rubygems_plugin' files in the latest installed gems and load
1124
- # them
1063
+ # Find rubygems plugin files in the standard location and load them
1125
1064
 
1126
1065
  def self.load_plugins
1127
- # Remove this env var by at least 3.0
1128
- if ENV['RUBYGEMS_LOAD_ALL_PLUGINS']
1129
- load_plugin_files find_files('rubygems_plugin', false)
1130
- else
1131
- load_plugin_files find_latest_files('rubygems_plugin', false)
1132
- end
1066
+ load_plugin_files Gem::Util.glob_files_in_dir("*#{Gem.plugin_suffix_pattern}", plugindir)
1133
1067
  end
1134
1068
 
1135
1069
  ##
1136
1070
  # Find all 'rubygems_plugin' files in $LOAD_PATH and load them
1137
1071
 
1138
1072
  def self.load_env_plugins
1139
- path = "rubygems_plugin"
1140
-
1141
- files = []
1142
- glob = "#{path}#{Gem.suffix_pattern}"
1143
- $LOAD_PATH.each do |load_path|
1144
- globbed = Gem::Util.glob_files_in_dir(glob, load_path)
1145
-
1146
- globbed.each do |load_path_file|
1147
- files << load_path_file if File.file?(load_path_file.tap(&Gem::UNTAINT))
1148
- end
1149
- end
1150
-
1151
- load_plugin_files files
1073
+ load_plugin_files find_files_from_load_path("rubygems_plugin")
1152
1074
  end
1153
1075
 
1154
1076
  ##
@@ -1181,7 +1103,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
1181
1103
 
1182
1104
  if path == "-"
1183
1105
  Gem::Util.traverse_parents Dir.pwd do |directory|
1184
- dep_file = GEM_DEP_FILES.find { |f| File.file?(f) }
1106
+ dep_file = GEM_DEP_FILES.find {|f| File.file?(f) }
1185
1107
 
1186
1108
  next unless dep_file
1187
1109
 
@@ -1223,39 +1145,55 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
1223
1145
  end
1224
1146
  end
1225
1147
 
1226
- class << self
1148
+ ##
1149
+ # If the SOURCE_DATE_EPOCH environment variable is set, returns it's value.
1150
+ # Otherwise, returns the time that `Gem.source_date_epoch_string` was
1151
+ # first called in the same format as SOURCE_DATE_EPOCH.
1152
+ #
1153
+ # NOTE(@duckinator): The implementation is a tad weird because we want to:
1154
+ # 1. Make builds reproducible by default, by having this function always
1155
+ # return the same result during a given run.
1156
+ # 2. Allow changing ENV['SOURCE_DATE_EPOCH'] at runtime, since multiple
1157
+ # tests that set this variable will be run in a single process.
1158
+ #
1159
+ # If you simplify this function and a lot of tests fail, that is likely
1160
+ # due to #2 above.
1161
+ #
1162
+ # Details on SOURCE_DATE_EPOCH:
1163
+ # https://reproducible-builds.org/specs/source-date-epoch/
1227
1164
 
1228
- ##
1229
- # TODO remove with RubyGems 4.0
1165
+ def self.source_date_epoch_string
1166
+ # The value used if $SOURCE_DATE_EPOCH is not set.
1167
+ @default_source_date_epoch ||= Time.now.to_i.to_s
1230
1168
 
1231
- alias detect_gemdeps use_gemdeps # :nodoc:
1169
+ specified_epoch = ENV["SOURCE_DATE_EPOCH"]
1232
1170
 
1233
- extend Gem::Deprecate
1234
- deprecate :detect_gemdeps, "Gem.use_gemdeps", 2018, 12
1171
+ # If it's empty or just whitespace, treat it like it wasn't set at all.
1172
+ specified_epoch = nil if !specified_epoch.nil? && specified_epoch.strip.empty?
1235
1173
 
1174
+ epoch = specified_epoch || @default_source_date_epoch
1175
+
1176
+ epoch.strip
1236
1177
  end
1237
1178
 
1238
1179
  ##
1239
- # The SOURCE_DATE_EPOCH environment variable (or, if that's not set, the current time), converted to Time object.
1240
- # This is used throughout RubyGems for enabling reproducible builds.
1241
- #
1242
- # If it is not set as an environment variable already, this also sets it.
1180
+ # Returns the value of Gem.source_date_epoch_string, as a Time object.
1243
1181
  #
1244
- # Details on SOURCE_DATE_EPOCH:
1245
- # https://reproducible-builds.org/specs/source-date-epoch/
1182
+ # This is used throughout RubyGems for enabling reproducible builds.
1246
1183
 
1247
1184
  def self.source_date_epoch
1248
- if ENV["SOURCE_DATE_EPOCH"].nil? || ENV["SOURCE_DATE_EPOCH"].empty?
1249
- ENV["SOURCE_DATE_EPOCH"] = Time.now.to_i.to_s
1250
- end
1251
-
1252
- Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc.freeze
1185
+ Time.at(self.source_date_epoch_string.to_i).utc.freeze
1253
1186
  end
1254
1187
 
1255
1188
  # FIX: Almost everywhere else we use the `def self.` way of defining class
1256
1189
  # methods, and then we switch over to `class << self` here. Pick one or the
1257
1190
  # other.
1258
1191
  class << self
1192
+ ##
1193
+ # RubyGems distributors (like operating system package managers) can
1194
+ # disable RubyGems update by setting this to error message printed to
1195
+ # end-users on gem update --system instead of actual update.
1196
+ attr_accessor :disable_system_update_message
1259
1197
 
1260
1198
  ##
1261
1199
  # Hash of loaded Gem::Specification keyed by name
@@ -1281,10 +1219,11 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
1281
1219
  #
1282
1220
 
1283
1221
  def register_default_spec(spec)
1284
- new_format = spec.require_paths.any? {|path| spec.files.any? {|f| f.start_with? path } }
1222
+ extended_require_paths = spec.require_paths.map {|f| f + "/" }
1223
+ new_format = extended_require_paths.any? {|path| spec.files.any? {|f| f.start_with? path } }
1285
1224
 
1286
1225
  if new_format
1287
- prefix_group = spec.require_paths.map {|f| f + "/"}.join("|")
1226
+ prefix_group = extended_require_paths.join("|")
1288
1227
  prefix_pattern = /^(#{prefix_group})/
1289
1228
  end
1290
1229
 
@@ -1294,6 +1233,8 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
1294
1233
  next unless $~
1295
1234
  end
1296
1235
 
1236
+ spec.activate if already_loaded?(file)
1237
+
1297
1238
  @path_to_default_spec_map[file] = spec
1298
1239
  @path_to_default_spec_map[file.sub(suffix_regexp, "")] = spec
1299
1240
  end
@@ -1359,6 +1300,17 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
1359
1300
 
1360
1301
  attr_reader :pre_uninstall_hooks
1361
1302
 
1303
+ private
1304
+
1305
+ def already_loaded?(file)
1306
+ $LOADED_FEATURES.any? do |feature_path|
1307
+ feature_path.end_with?(file) && default_gem_load_paths.any? {|load_path_entry| feature_path == "#{load_path_entry}/#{file}" }
1308
+ end
1309
+ end
1310
+
1311
+ def default_gem_load_paths
1312
+ @default_gem_load_paths ||= $LOAD_PATH[load_path_insert_index..-1]
1313
+ end
1362
1314
  end
1363
1315
 
1364
1316
  ##
@@ -1366,25 +1318,24 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
1366
1318
 
1367
1319
  MARSHAL_SPEC_DIR = "quick/Marshal.#{Gem.marshal_version}/".freeze
1368
1320
 
1369
- autoload :BundlerVersionFinder, 'rubygems/bundler_version_finder'
1370
- autoload :ConfigFile, 'rubygems/config_file'
1371
- autoload :Dependency, 'rubygems/dependency'
1372
- autoload :DependencyList, 'rubygems/dependency_list'
1373
- autoload :Installer, 'rubygems/installer'
1374
- autoload :Licenses, 'rubygems/util/licenses'
1375
- autoload :PathSupport, 'rubygems/path_support'
1376
- autoload :Platform, 'rubygems/platform'
1377
- autoload :RequestSet, 'rubygems/request_set'
1378
- autoload :Requirement, 'rubygems/requirement'
1379
- autoload :Resolver, 'rubygems/resolver'
1380
- autoload :Source, 'rubygems/source'
1381
- autoload :SourceList, 'rubygems/source_list'
1382
- autoload :SpecFetcher, 'rubygems/spec_fetcher'
1383
- autoload :Specification, 'rubygems/specification'
1384
- autoload :Util, 'rubygems/util'
1385
- autoload :Version, 'rubygems/version'
1386
-
1387
- require "rubygems/specification"
1321
+ autoload :BundlerVersionFinder, File.expand_path('rubygems/bundler_version_finder', __dir__)
1322
+ autoload :ConfigFile, File.expand_path('rubygems/config_file', __dir__)
1323
+ autoload :Dependency, File.expand_path('rubygems/dependency', __dir__)
1324
+ autoload :DependencyList, File.expand_path('rubygems/dependency_list', __dir__)
1325
+ autoload :Installer, File.expand_path('rubygems/installer', __dir__)
1326
+ autoload :Licenses, File.expand_path('rubygems/util/licenses', __dir__)
1327
+ autoload :NameTuple, File.expand_path('rubygems/name_tuple', __dir__)
1328
+ autoload :PathSupport, File.expand_path('rubygems/path_support', __dir__)
1329
+ autoload :Platform, File.expand_path('rubygems/platform', __dir__)
1330
+ autoload :RequestSet, File.expand_path('rubygems/request_set', __dir__)
1331
+ autoload :Requirement, File.expand_path('rubygems/requirement', __dir__)
1332
+ autoload :Resolver, File.expand_path('rubygems/resolver', __dir__)
1333
+ autoload :Source, File.expand_path('rubygems/source', __dir__)
1334
+ autoload :SourceList, File.expand_path('rubygems/source_list', __dir__)
1335
+ autoload :SpecFetcher, File.expand_path('rubygems/spec_fetcher', __dir__)
1336
+ autoload :Specification, File.expand_path('rubygems/specification', __dir__)
1337
+ autoload :Util, File.expand_path('rubygems/util', __dir__)
1338
+ autoload :Version, File.expand_path('rubygems/version', __dir__)
1388
1339
  end
1389
1340
 
1390
1341
  require 'rubygems/exceptions'