rubygems-update 3.1.1 → 3.2.0.rc.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (518) 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 +389 -144
  5. data/Manifest.txt +37 -73
  6. data/POLICIES.md +2 -9
  7. data/README.md +5 -5
  8. data/Rakefile +47 -82
  9. data/bin/update_rubygems +2 -2
  10. data/bundler/CHANGELOG.md +1546 -1414
  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 +21 -7
  16. data/bundler/lib/bundler/build_metadata.rb +4 -12
  17. data/bundler/lib/bundler/cli.rb +54 -20
  18. data/bundler/lib/bundler/cli/add.rb +1 -1
  19. data/bundler/lib/bundler/cli/cache.rb +1 -7
  20. data/bundler/lib/bundler/cli/clean.rb +1 -1
  21. data/bundler/lib/bundler/cli/common.rb +14 -0
  22. data/bundler/lib/bundler/cli/console.rb +1 -1
  23. data/bundler/lib/bundler/cli/doctor.rb +1 -1
  24. data/bundler/lib/bundler/cli/exec.rb +4 -13
  25. data/bundler/lib/bundler/cli/fund.rb +36 -0
  26. data/bundler/lib/bundler/cli/gem.rb +84 -11
  27. data/bundler/lib/bundler/cli/info.rb +15 -4
  28. data/bundler/lib/bundler/cli/init.rb +2 -2
  29. data/bundler/lib/bundler/cli/inject.rb +1 -1
  30. data/bundler/lib/bundler/cli/install.rb +12 -18
  31. data/bundler/lib/bundler/cli/issue.rb +2 -2
  32. data/bundler/lib/bundler/cli/list.rb +12 -10
  33. data/bundler/lib/bundler/cli/outdated.rb +89 -66
  34. data/bundler/lib/bundler/cli/plugin.rb +10 -0
  35. data/bundler/lib/bundler/cli/pristine.rb +5 -0
  36. data/bundler/lib/bundler/cli/show.rb +1 -1
  37. data/bundler/lib/bundler/cli/update.rb +2 -0
  38. data/bundler/lib/bundler/compact_index_client.rb +1 -1
  39. data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
  40. data/bundler/lib/bundler/definition.rb +51 -60
  41. data/bundler/lib/bundler/dep_proxy.rb +1 -1
  42. data/bundler/lib/bundler/dependency.rb +0 -9
  43. data/bundler/lib/bundler/dsl.rb +5 -9
  44. data/bundler/lib/bundler/endpoint_specification.rb +1 -1
  45. data/bundler/lib/bundler/environment_preserver.rb +26 -2
  46. data/bundler/lib/bundler/errors.rb +1 -0
  47. data/bundler/lib/bundler/feature_flag.rb +0 -2
  48. data/bundler/lib/bundler/fetcher.rb +4 -3
  49. data/bundler/lib/bundler/fetcher/base.rb +1 -1
  50. data/bundler/lib/bundler/fetcher/compact_index.rb +1 -1
  51. data/bundler/lib/bundler/fetcher/downloader.rb +1 -1
  52. data/bundler/lib/bundler/fetcher/index.rb +1 -1
  53. data/bundler/lib/bundler/friendly_errors.rb +7 -13
  54. data/bundler/lib/bundler/gem_helper.rb +33 -19
  55. data/bundler/lib/bundler/gem_helpers.rb +6 -1
  56. data/bundler/lib/bundler/gem_version_promoter.rb +2 -2
  57. data/bundler/lib/bundler/graph.rb +1 -1
  58. data/bundler/lib/bundler/index.rb +1 -1
  59. data/bundler/lib/bundler/injector.rb +15 -4
  60. data/bundler/lib/bundler/inline.rb +2 -2
  61. data/bundler/lib/bundler/installer.rb +30 -29
  62. data/bundler/lib/bundler/installer/gem_installer.rb +3 -3
  63. data/bundler/lib/bundler/installer/parallel_installer.rb +10 -10
  64. data/bundler/lib/bundler/installer/standalone.rb +2 -2
  65. data/bundler/lib/bundler/lazy_specification.rb +19 -6
  66. data/bundler/lib/bundler/lockfile_generator.rb +1 -1
  67. data/bundler/lib/bundler/lockfile_parser.rb +1 -1
  68. data/bundler/lib/bundler/mirror.rb +2 -2
  69. data/bundler/lib/bundler/plugin.rb +30 -5
  70. data/bundler/lib/bundler/plugin/index.rb +10 -1
  71. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  72. data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
  73. data/bundler/lib/bundler/plugin/source_list.rb +1 -1
  74. data/bundler/lib/bundler/psyched_yaml.rb +0 -15
  75. data/bundler/lib/bundler/remote_specification.rb +5 -2
  76. data/bundler/lib/bundler/resolver.rb +32 -9
  77. data/bundler/lib/bundler/resolver/spec_group.rb +27 -6
  78. data/bundler/lib/bundler/retry.rb +1 -1
  79. data/bundler/lib/bundler/ruby_version.rb +1 -1
  80. data/bundler/lib/bundler/rubygems_ext.rb +53 -9
  81. data/bundler/lib/bundler/rubygems_gem_installer.rb +3 -9
  82. data/bundler/lib/bundler/rubygems_integration.rb +31 -54
  83. data/bundler/lib/bundler/runtime.rb +4 -14
  84. data/bundler/lib/bundler/settings.rb +49 -45
  85. data/bundler/lib/bundler/setup.rb +5 -0
  86. data/bundler/lib/bundler/shared_helpers.rb +2 -2
  87. data/bundler/lib/bundler/similarity_detector.rb +1 -1
  88. data/bundler/lib/bundler/source.rb +1 -1
  89. data/bundler/lib/bundler/source/git.rb +5 -5
  90. data/bundler/lib/bundler/source/git/git_proxy.rb +56 -59
  91. data/bundler/lib/bundler/source/path.rb +7 -3
  92. data/bundler/lib/bundler/source/path/installer.rb +8 -10
  93. data/bundler/lib/bundler/source/rubygems.rb +13 -16
  94. data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
  95. data/bundler/lib/bundler/source_list.rb +2 -2
  96. data/bundler/lib/bundler/spec_set.rb +1 -1
  97. data/bundler/lib/bundler/stub_specification.rb +17 -5
  98. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  99. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +9 -1
  100. data/bundler/lib/bundler/templates/newgem/README.md.tt +1 -1
  101. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +19 -5
  102. data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
  103. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
  104. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
  105. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
  106. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
  107. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +2 -0
  108. data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  109. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +8 -6
  110. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +10 -0
  111. data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  112. data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  113. data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
  114. data/bundler/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
  115. data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  116. data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  117. data/bundler/lib/bundler/ui/shell.rb +5 -5
  118. data/bundler/lib/bundler/uri_credentials_filter.rb +1 -1
  119. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +79 -212
  120. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +0 -7
  121. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
  122. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
  123. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  124. data/bundler/lib/bundler/vendored_persistent.rb +0 -7
  125. data/bundler/lib/bundler/version.rb +1 -1
  126. data/bundler/lib/bundler/worker.rb +1 -1
  127. data/bundler/lib/bundler/yaml_serializer.rb +1 -1
  128. data/bundler/man/bundle-add.1 +1 -1
  129. data/bundler/man/{bundle-add.ronn → bundle-add.1.ronn} +0 -0
  130. data/bundler/man/bundle-binstubs.1 +5 -3
  131. data/bundler/man/{bundle-binstubs.ronn → bundle-binstubs.1.ronn} +2 -4
  132. data/bundler/man/bundle-cache.1 +1 -1
  133. data/bundler/man/{bundle-cache.ronn → bundle-cache.1.ronn} +0 -0
  134. data/bundler/man/bundle-check.1 +1 -1
  135. data/bundler/man/{bundle-check.ronn → bundle-check.1.ronn} +0 -0
  136. data/bundler/man/bundle-clean.1 +1 -1
  137. data/bundler/man/{bundle-clean.ronn → bundle-clean.1.ronn} +0 -0
  138. data/bundler/man/bundle-config.1 +16 -22
  139. data/bundler/man/{bundle-config.ronn → bundle-config.1.ronn} +19 -22
  140. data/bundler/man/bundle-doctor.1 +1 -1
  141. data/bundler/man/{bundle-doctor.ronn → bundle-doctor.1.ronn} +0 -0
  142. data/bundler/man/bundle-exec.1 +1 -1
  143. data/bundler/man/{bundle-exec.ronn → bundle-exec.1.ronn} +0 -0
  144. data/bundler/man/bundle-gem.1 +25 -3
  145. data/bundler/man/{bundle-gem.ronn → bundle-gem.1.ronn} +30 -7
  146. data/bundler/man/bundle-info.1 +1 -1
  147. data/bundler/man/{bundle-info.ronn → bundle-info.1.ronn} +0 -0
  148. data/bundler/man/bundle-init.1 +1 -1
  149. data/bundler/man/{bundle-init.ronn → bundle-init.1.ronn} +0 -0
  150. data/bundler/man/bundle-inject.1 +1 -1
  151. data/bundler/man/{bundle-inject.ronn → bundle-inject.1.ronn} +0 -0
  152. data/bundler/man/bundle-install.1 +29 -2
  153. data/bundler/man/{bundle-install.ronn → bundle-install.1.ronn} +24 -2
  154. data/bundler/man/bundle-list.1 +7 -7
  155. data/bundler/man/{bundle-list.ronn → bundle-list.1.ronn} +6 -6
  156. data/bundler/man/bundle-lock.1 +1 -1
  157. data/bundler/man/{bundle-lock.ronn → bundle-lock.1.ronn} +0 -0
  158. data/bundler/man/bundle-open.1 +1 -1
  159. data/bundler/man/{bundle-open.ronn → bundle-open.1.ronn} +0 -0
  160. data/bundler/man/bundle-outdated.1 +1 -1
  161. data/bundler/man/{bundle-outdated.ronn → bundle-outdated.1.ronn} +0 -0
  162. data/bundler/man/bundle-platform.1 +1 -1
  163. data/bundler/man/{bundle-platform.ronn → bundle-platform.1.ronn} +0 -0
  164. data/bundler/man/bundle-pristine.1 +1 -1
  165. data/bundler/man/{bundle-pristine.ronn → bundle-pristine.1.ronn} +0 -0
  166. data/bundler/man/bundle-remove.1 +1 -1
  167. data/bundler/man/{bundle-remove.ronn → bundle-remove.1.ronn} +0 -0
  168. data/bundler/man/bundle-show.1 +1 -1
  169. data/bundler/man/{bundle-show.ronn → bundle-show.1.ronn} +0 -0
  170. data/bundler/man/bundle-update.1 +1 -1
  171. data/bundler/man/{bundle-update.ronn → bundle-update.1.ronn} +0 -0
  172. data/bundler/man/bundle-viz.1 +1 -1
  173. data/bundler/man/{bundle-viz.ronn → bundle-viz.1.ronn} +0 -0
  174. data/bundler/man/bundle.1 +1 -1
  175. data/bundler/man/{bundle.ronn → bundle.1.ronn} +0 -0
  176. data/bundler/man/gemfile.5 +4 -4
  177. data/bundler/man/gemfile.5.ronn +4 -4
  178. data/lib/rubygems.rb +133 -186
  179. data/lib/rubygems/available_set.rb +4 -6
  180. data/lib/rubygems/basic_specification.rb +12 -10
  181. data/lib/rubygems/bundler_version_finder.rb +14 -9
  182. data/lib/rubygems/command.rb +17 -17
  183. data/lib/rubygems/command_manager.rb +4 -5
  184. data/lib/rubygems/commands/build_command.rb +4 -1
  185. data/lib/rubygems/commands/cert_command.rb +1 -9
  186. data/lib/rubygems/commands/check_command.rb +0 -2
  187. data/lib/rubygems/commands/cleanup_command.rb +11 -7
  188. data/lib/rubygems/commands/contents_command.rb +4 -6
  189. data/lib/rubygems/commands/dependency_command.rb +6 -8
  190. data/lib/rubygems/commands/environment_command.rb +1 -3
  191. data/lib/rubygems/commands/fetch_command.rb +2 -4
  192. data/lib/rubygems/commands/generate_index_command.rb +0 -2
  193. data/lib/rubygems/commands/help_command.rb +2 -4
  194. data/lib/rubygems/commands/info_command.rb +8 -5
  195. data/lib/rubygems/commands/install_command.rb +3 -5
  196. data/lib/rubygems/commands/list_command.rb +8 -7
  197. data/lib/rubygems/commands/lock_command.rb +1 -3
  198. data/lib/rubygems/commands/mirror_command.rb +0 -2
  199. data/lib/rubygems/commands/open_command.rb +0 -4
  200. data/lib/rubygems/commands/outdated_command.rb +0 -2
  201. data/lib/rubygems/commands/owner_command.rb +0 -2
  202. data/lib/rubygems/commands/pristine_command.rb +10 -4
  203. data/lib/rubygems/commands/push_command.rb +4 -44
  204. data/lib/rubygems/commands/query_command.rb +6 -353
  205. data/lib/rubygems/commands/rdoc_command.rb +0 -2
  206. data/lib/rubygems/commands/search_command.rb +7 -7
  207. data/lib/rubygems/commands/server_command.rb +0 -2
  208. data/lib/rubygems/commands/setup_command.rb +156 -48
  209. data/lib/rubygems/commands/signin_command.rb +0 -2
  210. data/lib/rubygems/commands/signout_command.rb +0 -2
  211. data/lib/rubygems/commands/sources_command.rb +3 -5
  212. data/lib/rubygems/commands/specification_command.rb +2 -4
  213. data/lib/rubygems/commands/stale_command.rb +1 -3
  214. data/lib/rubygems/commands/uninstall_command.rb +2 -4
  215. data/lib/rubygems/commands/unpack_command.rb +1 -3
  216. data/lib/rubygems/commands/update_command.rb +59 -14
  217. data/lib/rubygems/commands/which_command.rb +0 -2
  218. data/lib/rubygems/commands/yank_command.rb +0 -2
  219. data/lib/rubygems/config_file.rb +11 -4
  220. data/lib/rubygems/core_ext/kernel_require.rb +26 -36
  221. data/lib/rubygems/core_ext/kernel_warn.rb +6 -6
  222. data/lib/rubygems/defaults.rb +99 -5
  223. data/lib/rubygems/dependency.rb +2 -7
  224. data/lib/rubygems/dependency_installer.rb +1 -75
  225. data/lib/rubygems/dependency_list.rb +7 -9
  226. data/lib/rubygems/deprecate.rb +46 -1
  227. data/lib/rubygems/doctor.rb +4 -4
  228. data/lib/rubygems/errors.rb +3 -14
  229. data/lib/rubygems/exceptions.rb +2 -33
  230. data/lib/rubygems/ext.rb +6 -6
  231. data/lib/rubygems/ext/build_error.rb +2 -0
  232. data/lib/rubygems/ext/builder.rb +4 -4
  233. data/lib/rubygems/ext/cmake_builder.rb +1 -3
  234. data/lib/rubygems/ext/configure_builder.rb +0 -2
  235. data/lib/rubygems/ext/ext_conf_builder.rb +6 -9
  236. data/lib/rubygems/ext/rake_builder.rb +0 -2
  237. data/lib/rubygems/gem_runner.rb +3 -10
  238. data/lib/rubygems/gemcutter_utilities.rb +1 -1
  239. data/lib/rubygems/indexer.rb +1 -21
  240. data/lib/rubygems/install_update_options.rb +5 -5
  241. data/lib/rubygems/installer.rb +47 -48
  242. data/lib/rubygems/installer_test_case.rb +18 -5
  243. data/lib/rubygems/installer_uninstaller_utils.rb +24 -0
  244. data/lib/rubygems/local_remote_options.rb +1 -1
  245. data/lib/rubygems/mock_gem_ui.rb +0 -6
  246. data/lib/rubygems/name_tuple.rb +2 -6
  247. data/lib/rubygems/openssl.rb +7 -0
  248. data/lib/rubygems/package.rb +11 -23
  249. data/lib/rubygems/package/digest_io.rb +0 -2
  250. data/lib/rubygems/package/file_source.rb +0 -2
  251. data/lib/rubygems/package/io_source.rb +0 -2
  252. data/lib/rubygems/package/old.rb +1 -3
  253. data/lib/rubygems/package/tar_header.rb +3 -5
  254. data/lib/rubygems/package/tar_reader.rb +0 -3
  255. data/lib/rubygems/package/tar_reader/entry.rb +0 -3
  256. data/lib/rubygems/package/tar_test_case.rb +1 -3
  257. data/lib/rubygems/package/tar_writer.rb +2 -12
  258. data/lib/rubygems/package_task.rb +1 -7
  259. data/lib/rubygems/path_support.rb +1 -3
  260. data/lib/rubygems/platform.rb +3 -5
  261. data/lib/rubygems/psych_tree.rb +0 -2
  262. data/lib/rubygems/query_utils.rb +362 -0
  263. data/lib/rubygems/rdoc.rb +0 -12
  264. data/lib/rubygems/remote_fetcher.rb +9 -25
  265. data/lib/rubygems/request.rb +1 -9
  266. data/lib/rubygems/request/connection_pools.rb +1 -5
  267. data/lib/rubygems/request/http_pool.rb +0 -2
  268. data/lib/rubygems/request/https_pool.rb +0 -2
  269. data/lib/rubygems/request_set.rb +5 -7
  270. data/lib/rubygems/request_set/gem_dependency_api.rb +2 -4
  271. data/lib/rubygems/request_set/lockfile.rb +8 -12
  272. data/lib/rubygems/request_set/lockfile/parser.rb +0 -2
  273. data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -3
  274. data/lib/rubygems/requirement.rb +20 -21
  275. data/lib/rubygems/resolver.rb +7 -10
  276. data/lib/rubygems/resolver/activation_request.rb +0 -2
  277. data/lib/rubygems/resolver/api_set.rb +4 -6
  278. data/lib/rubygems/resolver/api_specification.rb +16 -7
  279. data/lib/rubygems/resolver/best_set.rb +0 -2
  280. data/lib/rubygems/resolver/composed_set.rb +3 -5
  281. data/lib/rubygems/resolver/conflict.rb +1 -3
  282. data/lib/rubygems/resolver/current_set.rb +0 -2
  283. data/lib/rubygems/resolver/dependency_request.rb +0 -2
  284. data/lib/rubygems/resolver/git_set.rb +0 -2
  285. data/lib/rubygems/resolver/git_specification.rb +0 -2
  286. data/lib/rubygems/resolver/index_set.rb +1 -3
  287. data/lib/rubygems/resolver/index_specification.rb +0 -2
  288. data/lib/rubygems/resolver/installed_specification.rb +0 -2
  289. data/lib/rubygems/resolver/installer_set.rb +3 -5
  290. data/lib/rubygems/resolver/local_specification.rb +0 -2
  291. data/lib/rubygems/resolver/lock_set.rb +1 -3
  292. data/lib/rubygems/resolver/lock_specification.rb +0 -2
  293. data/lib/rubygems/resolver/requirement_list.rb +0 -2
  294. data/lib/rubygems/resolver/set.rb +0 -2
  295. data/lib/rubygems/resolver/source_set.rb +0 -2
  296. data/lib/rubygems/resolver/spec_specification.rb +0 -2
  297. data/lib/rubygems/resolver/specification.rb +0 -2
  298. data/lib/rubygems/resolver/stats.rb +0 -2
  299. data/lib/rubygems/resolver/vendor_set.rb +0 -2
  300. data/lib/rubygems/resolver/vendor_specification.rb +0 -2
  301. data/lib/rubygems/s3_uri_signer.rb +1 -7
  302. data/lib/rubygems/safe_yaml.rb +4 -4
  303. data/lib/rubygems/security.rb +26 -32
  304. data/lib/rubygems/security/policy.rb +3 -7
  305. data/lib/rubygems/security/signer.rb +4 -6
  306. data/lib/rubygems/security/trust_dir.rb +1 -3
  307. data/lib/rubygems/server.rb +9 -11
  308. data/lib/rubygems/source.rb +4 -4
  309. data/lib/rubygems/source/git.rb +7 -8
  310. data/lib/rubygems/source/installed.rb +0 -2
  311. data/lib/rubygems/source/local.rb +2 -4
  312. data/lib/rubygems/source/lock.rb +0 -2
  313. data/lib/rubygems/source/specific_file.rb +0 -2
  314. data/lib/rubygems/source/vendor.rb +0 -2
  315. data/lib/rubygems/source_list.rb +6 -7
  316. data/lib/rubygems/spec_fetcher.rb +18 -17
  317. data/lib/rubygems/specification.rb +107 -120
  318. data/lib/rubygems/specification_policy.rb +88 -30
  319. data/lib/rubygems/stub_specification.rb +0 -4
  320. data/lib/rubygems/syck_hack.rb +0 -2
  321. data/lib/rubygems/test_case.rb +122 -92
  322. data/lib/rubygems/test_utilities.rb +6 -14
  323. data/lib/rubygems/uninstaller.rb +35 -16
  324. data/lib/rubygems/uri_formatter.rb +0 -2
  325. data/lib/rubygems/uri_parser.rb +0 -2
  326. data/lib/rubygems/user_interaction.rb +1 -26
  327. data/lib/rubygems/util.rb +15 -3
  328. data/lib/rubygems/util/licenses.rb +4 -6
  329. data/lib/rubygems/util/list.rb +0 -2
  330. data/lib/rubygems/validator.rb +1 -3
  331. data/lib/rubygems/version.rb +5 -7
  332. data/rubygems-update.gemspec +2 -2
  333. data/setup.rb +2 -7
  334. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
  335. data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
  336. data/test/rubygems/rubygems_plugin.rb +0 -2
  337. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
  338. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
  339. data/test/rubygems/test_bundled_ca.rb +38 -45
  340. data/test/rubygems/test_config.rb +0 -2
  341. data/test/rubygems/test_deprecate.rb +40 -7
  342. data/test/rubygems/test_gem.rb +150 -103
  343. data/test/rubygems/test_gem_available_set.rb +3 -5
  344. data/test/rubygems/test_gem_bundler_version_finder.rb +19 -3
  345. data/test/rubygems/test_gem_command.rb +24 -7
  346. data/test/rubygems/test_gem_command_manager.rb +36 -5
  347. data/test/rubygems/test_gem_commands_build_command.rb +53 -10
  348. data/test/rubygems/test_gem_commands_cert_command.rb +2 -4
  349. data/test/rubygems/test_gem_commands_check_command.rb +0 -2
  350. data/test/rubygems/test_gem_commands_cleanup_command.rb +13 -4
  351. data/test/rubygems/test_gem_commands_contents_command.rb +48 -17
  352. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -2
  353. data/test/rubygems/test_gem_commands_environment_command.rb +21 -23
  354. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
  355. data/test/rubygems/test_gem_commands_generate_index_command.rb +1 -7
  356. data/test/rubygems/test_gem_commands_help_command.rb +0 -2
  357. data/test/rubygems/test_gem_commands_info_command.rb +6 -8
  358. data/test/rubygems/test_gem_commands_install_command.rb +31 -33
  359. data/test/rubygems/test_gem_commands_list_command.rb +0 -2
  360. data/test/rubygems/test_gem_commands_lock_command.rb +0 -2
  361. data/test/rubygems/test_gem_commands_mirror.rb +1 -3
  362. data/test/rubygems/test_gem_commands_open_command.rb +4 -6
  363. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -2
  364. data/test/rubygems/test_gem_commands_owner_command.rb +11 -5
  365. data/test/rubygems/test_gem_commands_pristine_command.rb +41 -10
  366. data/test/rubygems/test_gem_commands_push_command.rb +7 -4
  367. data/test/rubygems/test_gem_commands_query_command.rb +9 -9
  368. data/test/rubygems/test_gem_commands_search_command.rb +0 -2
  369. data/test/rubygems/test_gem_commands_server_command.rb +0 -2
  370. data/test/rubygems/test_gem_commands_setup_command.rb +210 -118
  371. data/test/rubygems/test_gem_commands_signin_command.rb +6 -6
  372. data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
  373. data/test/rubygems/test_gem_commands_sources_command.rb +39 -3
  374. data/test/rubygems/test_gem_commands_specification_command.rb +18 -20
  375. data/test/rubygems/test_gem_commands_stale_command.rb +0 -2
  376. data/test/rubygems/test_gem_commands_uninstall_command.rb +2 -3
  377. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
  378. data/test/rubygems/test_gem_commands_update_command.rb +116 -7
  379. data/test/rubygems/test_gem_commands_which_command.rb +3 -5
  380. data/test/rubygems/test_gem_commands_yank_command.rb +14 -8
  381. data/test/rubygems/test_gem_config_file.rb +7 -12
  382. data/test/rubygems/test_gem_dependency.rb +0 -2
  383. data/test/rubygems/test_gem_dependency_installer.rb +54 -191
  384. data/test/rubygems/test_gem_dependency_list.rb +8 -10
  385. data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -3
  386. data/test/rubygems/test_gem_doctor.rb +28 -2
  387. data/test/rubygems/test_gem_ext_builder.rb +16 -33
  388. data/test/rubygems/test_gem_ext_cmake_builder.rb +13 -14
  389. data/test/rubygems/test_gem_ext_configure_builder.rb +1 -11
  390. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -3
  391. data/test/rubygems/test_gem_ext_rake_builder.rb +9 -11
  392. data/test/rubygems/test_gem_gem_runner.rb +43 -1
  393. data/test/rubygems/test_gem_gemcutter_utilities.rb +5 -2
  394. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
  395. data/test/rubygems/test_gem_indexer.rb +9 -15
  396. data/test/rubygems/test_gem_install_update_options.rb +0 -2
  397. data/test/rubygems/test_gem_installer.rb +192 -71
  398. data/test/rubygems/test_gem_local_remote_options.rb +0 -2
  399. data/test/rubygems/test_gem_name_tuple.rb +0 -2
  400. data/test/rubygems/test_gem_package.rb +33 -31
  401. data/test/rubygems/test_gem_package_old.rb +0 -2
  402. data/test/rubygems/test_gem_package_tar_header.rb +18 -1
  403. data/test/rubygems/test_gem_package_tar_reader.rb +0 -2
  404. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -2
  405. data/test/rubygems/test_gem_package_tar_writer.rb +8 -5
  406. data/test/rubygems/test_gem_package_task.rb +46 -13
  407. data/test/rubygems/test_gem_path_support.rb +0 -2
  408. data/test/rubygems/test_gem_platform.rb +0 -2
  409. data/test/rubygems/test_gem_rdoc.rb +0 -2
  410. data/test/rubygems/test_gem_remote_fetcher.rb +156 -195
  411. data/test/rubygems/test_gem_request.rb +11 -15
  412. data/test/rubygems/test_gem_request_connection_pools.rb +0 -4
  413. data/test/rubygems/test_gem_request_set.rb +72 -22
  414. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +3 -5
  415. data/test/rubygems/test_gem_request_set_lockfile.rb +0 -2
  416. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -11
  417. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -120
  418. data/test/rubygems/test_gem_requirement.rb +10 -4
  419. data/test/rubygems/test_gem_resolver.rb +6 -8
  420. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -2
  421. data/test/rubygems/test_gem_resolver_api_set.rb +3 -5
  422. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -2
  423. data/test/rubygems/test_gem_resolver_best_set.rb +2 -4
  424. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -2
  425. data/test/rubygems/test_gem_resolver_conflict.rb +0 -2
  426. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -2
  427. data/test/rubygems/test_gem_resolver_git_set.rb +0 -2
  428. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -2
  429. data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
  430. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -2
  431. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -2
  432. data/test/rubygems/test_gem_resolver_installer_set.rb +7 -9
  433. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -2
  434. data/test/rubygems/test_gem_resolver_lock_set.rb +3 -5
  435. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -2
  436. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -2
  437. data/test/rubygems/test_gem_resolver_specification.rb +0 -4
  438. data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -2
  439. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -2
  440. data/test/rubygems/test_gem_security.rb +20 -22
  441. data/test/rubygems/test_gem_security_policy.rb +5 -10
  442. data/test/rubygems/test_gem_security_signer.rb +8 -10
  443. data/test/rubygems/test_gem_security_trust_dir.rb +2 -4
  444. data/test/rubygems/test_gem_server.rb +10 -14
  445. data/test/rubygems/test_gem_silent_ui.rb +0 -2
  446. data/test/rubygems/test_gem_source.rb +12 -16
  447. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -2
  448. data/test/rubygems/test_gem_source_git.rb +12 -13
  449. data/test/rubygems/test_gem_source_installed.rb +7 -9
  450. data/test/rubygems/test_gem_source_list.rb +1 -2
  451. data/test/rubygems/test_gem_source_local.rb +8 -10
  452. data/test/rubygems/test_gem_source_lock.rb +10 -12
  453. data/test/rubygems/test_gem_source_specific_file.rb +7 -9
  454. data/test/rubygems/test_gem_source_vendor.rb +7 -9
  455. data/test/rubygems/test_gem_spec_fetcher.rb +11 -4
  456. data/test/rubygems/test_gem_specification.rb +179 -129
  457. data/test/rubygems/test_gem_stream_ui.rb +3 -3
  458. data/test/rubygems/test_gem_stub_specification.rb +4 -7
  459. data/test/rubygems/test_gem_text.rb +1 -3
  460. data/test/rubygems/test_gem_uninstaller.rb +133 -11
  461. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -2
  462. data/test/rubygems/test_gem_uri_formatter.rb +0 -2
  463. data/test/rubygems/test_gem_util.rb +7 -7
  464. data/test/rubygems/test_gem_validator.rb +0 -2
  465. data/test/rubygems/test_gem_version.rb +1 -3
  466. data/test/rubygems/test_gem_version_option.rb +0 -2
  467. data/test/rubygems/test_kernel.rb +25 -10
  468. data/test/rubygems/test_project_sanity.rb +7 -2
  469. data/test/rubygems/test_remote_fetch_error.rb +0 -2
  470. data/test/rubygems/test_require.rb +241 -47
  471. metadata +59 -96
  472. data/.bundle/config +0 -2
  473. data/.rubocop.yml +0 -91
  474. data/Gemfile +0 -8
  475. data/Gemfile.lock +0 -43
  476. data/bundler/CODE_OF_CONDUCT.md +0 -136
  477. data/bundler/man/bundle-add.1.txt +0 -58
  478. data/bundler/man/bundle-binstubs.1.txt +0 -48
  479. data/bundler/man/bundle-cache.1.txt +0 -78
  480. data/bundler/man/bundle-check.1.txt +0 -33
  481. data/bundler/man/bundle-clean.1.txt +0 -26
  482. data/bundler/man/bundle-config.1.txt +0 -528
  483. data/bundler/man/bundle-doctor.1.txt +0 -44
  484. data/bundler/man/bundle-exec.1.txt +0 -178
  485. data/bundler/man/bundle-gem.1.txt +0 -91
  486. data/bundler/man/bundle-info.1.txt +0 -21
  487. data/bundler/man/bundle-init.1.txt +0 -34
  488. data/bundler/man/bundle-inject.1.txt +0 -32
  489. data/bundler/man/bundle-install.1.txt +0 -401
  490. data/bundler/man/bundle-list.1.txt +0 -43
  491. data/bundler/man/bundle-lock.1.txt +0 -93
  492. data/bundler/man/bundle-open.1.txt +0 -29
  493. data/bundler/man/bundle-outdated.1.txt +0 -131
  494. data/bundler/man/bundle-platform.1.txt +0 -57
  495. data/bundler/man/bundle-pristine.1.txt +0 -44
  496. data/bundler/man/bundle-remove.1.txt +0 -34
  497. data/bundler/man/bundle-show.1.txt +0 -27
  498. data/bundler/man/bundle-update.1.txt +0 -390
  499. data/bundler/man/bundle-viz.1.txt +0 -39
  500. data/bundler/man/bundle.1.txt +0 -116
  501. data/bundler/man/gemfile.5.txt +0 -649
  502. data/bundler/man/index.txt +0 -25
  503. data/lib/rubygems/source_local.rb +0 -7
  504. data/lib/rubygems/source_specific_file.rb +0 -6
  505. data/lib/ubygems.rb +0 -14
  506. data/tmp/.keep +0 -0
  507. data/util/CL2notes +0 -55
  508. data/util/bisect +0 -10
  509. data/util/ci.sh +0 -62
  510. data/util/cops/deprecations.rb +0 -52
  511. data/util/create_certs.rb +0 -171
  512. data/util/create_certs.sh +0 -27
  513. data/util/create_encrypted_key.rb +0 -16
  514. data/util/generate_spdx_license_list.rb +0 -63
  515. data/util/patch_with_prs.rb +0 -77
  516. data/util/rubocop +0 -8
  517. data/util/update_bundled_ca_certificates.rb +0 -139
  518. 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\-PRISTINE" "1" "December 2019" "" ""
4
+ .TH "BUNDLE\-PRISTINE" "1" "October 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" "October 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" "October 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" "October 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" "October 2020" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-viz\fR \- Generates a visual dependency graph for your 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" "1" "December 2019" "" ""
4
+ .TH "BUNDLE" "1" "October 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" "October 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
  .
@@ -120,8 +120,8 @@ Each _gem_ `MAY` have one or more version specifiers.
120
120
  ### REQUIRE AS
121
121
 
122
122
  Each _gem_ `MAY` specify files that should be used when autorequiring via
123
- `Bundler.require`. You may pass an array with multiple files or `true` if file
124
- you want `required` has same name as _gem_ or `false` to
123
+ `Bundler.require`. You may pass an array with multiple files or `true` if the file
124
+ you want `required` has the same name as _gem_ or `false` to
125
125
  prevent any file from being autorequired.
126
126
 
127
127
  gem "redis", :require => ["redis/connection/hiredis", "redis"]
@@ -163,8 +163,8 @@ not install with the `without` configuration.
163
163
 
164
164
  To specify multiple groups to ignore, specify a list of groups separated by spaces.
165
165
 
166
- bundle config set without test
167
- bundle config set without development test
166
+ bundle config set --local without test
167
+ bundle config set --local without development test
168
168
 
169
169
  Also, calling `Bundler.setup` with no parameters, or calling `require "bundler/setup"`
170
170
  will setup all groups except for the ones you excluded via `--without` (since they
@@ -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.1".freeze
11
+ VERSION = "3.2.0.rc.2".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.
@@ -148,6 +147,7 @@ module Gem
148
147
  doc
149
148
  extensions
150
149
  gems
150
+ plugins
151
151
  specifications
152
152
  ].freeze
153
153
 
@@ -189,6 +189,8 @@ module Gem
189
189
  @pre_reset_hooks ||= []
190
190
  @post_reset_hooks ||= []
191
191
 
192
+ @default_source_date_epoch = nil
193
+
192
194
  ##
193
195
  # Try to activate a gem containing +path+. Returns true if
194
196
  # activation succeeded or wasn't needed because it was already
@@ -315,6 +317,13 @@ module Gem
315
317
  Gem.default_bindir
316
318
  end
317
319
 
320
+ ##
321
+ # The path were rubygems plugins are to be installed.
322
+
323
+ def self.plugindir(install_dir=Gem.dir)
324
+ File.join install_dir, 'plugins'
325
+ end
326
+
318
327
  ##
319
328
  # Reset the +dir+ and +path+ values. The next time +dir+ or +path+
320
329
  # is requested, the values will be calculated from scratch. This is
@@ -327,13 +336,6 @@ module Gem
327
336
  Gem::Security.reset if defined?(Gem::Security)
328
337
  end
329
338
 
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
339
  ##
338
340
  # The standard configuration object for gems.
339
341
 
@@ -391,11 +393,11 @@ module Gem
391
393
  target[k] = v
392
394
  when Array
393
395
  unless Gem::Deprecate.skip
394
- warn <<-eowarn
396
+ warn <<-EOWARN
395
397
  Array values in the parameter to `Gem.paths=` are deprecated.
396
398
  Please use a String or nil.
397
399
  An Array (#{env.inspect}) was passed in from #{caller[3]}
398
- eowarn
400
+ EOWARN
399
401
  end
400
402
  target[k] = v.join File::PATH_SEPARATOR
401
403
  end
@@ -409,8 +411,6 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
409
411
 
410
412
  ##
411
413
  # The path where gems are to be installed.
412
- #--
413
- # FIXME deprecate these once everything else has been done -ebh
414
414
 
415
415
  def self.dir
416
416
  paths.home
@@ -463,7 +463,10 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
463
463
  subdirs.each do |name|
464
464
  subdir = File.join dir, name
465
465
  next if File.exist? subdir
466
- FileUtils.mkdir_p subdir, **options rescue nil
466
+ begin
467
+ FileUtils.mkdir_p subdir, **options
468
+ rescue Errno::EACCES
469
+ end
467
470
  end
468
471
  ensure
469
472
  File.umask old_umask
@@ -500,7 +503,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
500
503
 
501
504
  gem_specifications = @gemdeps ? Gem.loaded_specs.values : Gem::Specification.stubs
502
505
 
503
- files.concat gem_specifications.map { |spec|
506
+ files.concat gem_specifications.map {|spec|
504
507
  spec.matches_for_glob("#{glob}#{Gem.suffix_pattern}")
505
508
  }.flatten
506
509
 
@@ -515,7 +518,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
515
518
  glob_with_suffixes = "#{glob}#{Gem.suffix_pattern}"
516
519
  $LOAD_PATH.map do |load_path|
517
520
  Gem::Util.glob_files_in_dir(glob_with_suffixes, load_path)
518
- end.flatten.select { |file| File.file? file.tap(&Gem::UNTAINT) }
521
+ end.flatten.select {|file| File.file? file.tap(&Gem::UNTAINT) }
519
522
  end
520
523
 
521
524
  ##
@@ -535,7 +538,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
535
538
 
536
539
  files = find_files_from_load_path glob if check_load_path
537
540
 
538
- files.concat Gem::Specification.latest_specs(true).map { |spec|
541
+ files.concat Gem::Specification.latest_specs(true).map {|spec|
539
542
  spec.matches_for_glob("#{glob}#{Gem.suffix_pattern}")
540
543
  }.flatten
541
544
 
@@ -546,83 +549,12 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
546
549
  return files
547
550
  end
548
551
 
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
552
  ##
621
553
  # Top level install helper method. Allows you to install gems interactively:
622
554
  #
623
555
  # % irb
624
556
  # >> Gem.install "minitest"
625
- # Fetching: minitest-3.0.1.gem (100%)
557
+ # Fetching: minitest-5.14.0.gem (100%)
626
558
  # => [#<Gem::Specification:0x1013b4528 @name="minitest", ...>]
627
559
 
628
560
  def self.install(name, version = Gem::Requirement.default, *options)
@@ -657,22 +589,25 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
657
589
 
658
590
  index = $LOAD_PATH.index RbConfig::CONFIG['sitelibdir']
659
591
 
660
- index
592
+ index || 0
593
+ end
594
+
595
+ ##
596
+ # The number of paths in the `$LOAD_PATH` from activated gems. Used to
597
+ # prioritize `-I` and `ENV['RUBYLIB`]` entries during `require`.
598
+
599
+ def self.activated_gem_paths
600
+ @activated_gem_paths ||= 0
661
601
  end
662
602
 
663
603
  ##
664
604
  # Add a list of paths to the $LOAD_PATH at the proper place.
665
605
 
666
606
  def self.add_to_load_path(*paths)
667
- insert_index = load_path_insert_index
607
+ @activated_gem_paths = activated_gem_paths + paths.size
668
608
 
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
609
+ # gem directories must come after -I and ENV['RUBYLIB']
610
+ $LOAD_PATH.insert(Gem.load_path_insert_index, *paths)
676
611
  end
677
612
 
678
613
  @yaml_loaded = false
@@ -682,14 +617,6 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
682
617
 
683
618
  def self.load_yaml
684
619
  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
620
 
694
621
  begin
695
622
  # Try requiring the gem version *or* stdlib version of psych.
@@ -904,8 +831,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
904
831
 
905
832
  def self.ruby
906
833
  if @ruby.nil?
907
- @ruby = File.join(RbConfig::CONFIG['bindir'],
908
- "#{RbConfig::CONFIG['ruby_install_name']}#{RbConfig::CONFIG['EXEEXT']}")
834
+ @ruby = RbConfig.ruby
909
835
 
910
836
  @ruby = "\"#{@ruby}\"" if @ruby =~ /\s/
911
837
  end
@@ -1018,17 +944,34 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
1018
944
  @suffix_pattern ||= "{#{suffixes.join(',')}}"
1019
945
  end
1020
946
 
947
+ ##
948
+ # Regexp for require-able path suffixes.
949
+
1021
950
  def self.suffix_regexp
1022
951
  @suffix_regexp ||= /#{Regexp.union(suffixes)}\z/
1023
952
  end
1024
953
 
954
+ ##
955
+ # Glob pattern for require-able plugin suffixes.
956
+
957
+ def self.plugin_suffix_pattern
958
+ @plugin_suffix_pattern ||= "_plugin#{suffix_pattern}"
959
+ end
960
+
961
+ ##
962
+ # Regexp for require-able plugin suffixes.
963
+
964
+ def self.plugin_suffix_regexp
965
+ @plugin_suffix_regexp ||= /_plugin#{suffix_regexp}\z/
966
+ end
967
+
1025
968
  ##
1026
969
  # Suffixes for require-able paths.
1027
970
 
1028
971
  def self.suffixes
1029
972
  @suffixes ||= ['',
1030
973
  '.rb',
1031
- *%w(DLEXT DLEXT2).map do |key|
974
+ *%w[DLEXT DLEXT2].map do |key|
1032
975
  val = RbConfig::CONFIG[key]
1033
976
  next unless val and not val.empty?
1034
977
  ".#{val}"
@@ -1069,24 +1012,17 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
1069
1012
  paths.flatten!
1070
1013
  paths.compact!
1071
1014
  hash = { "GEM_HOME" => home, "GEM_PATH" => paths.empty? ? home : paths.join(File::PATH_SEPARATOR) }
1072
- hash.delete_if { |_, v| v.nil? }
1015
+ hash.delete_if {|_, v| v.nil? }
1073
1016
  self.paths = hash
1074
1017
  end
1075
1018
 
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
1019
  ##
1084
1020
  # Is this a windows platform?
1085
1021
 
1086
1022
  def self.win_platform?
1087
1023
  if @@win_platform.nil?
1088
1024
  ruby_platform = RbConfig::CONFIG['host_os']
1089
- @@win_platform = !!WIN_PATTERNS.find { |r| ruby_platform =~ r }
1025
+ @@win_platform = !!WIN_PATTERNS.find {|r| ruby_platform =~ r }
1090
1026
  end
1091
1027
 
1092
1028
  @@win_platform
@@ -1120,35 +1056,17 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
1120
1056
  end
1121
1057
 
1122
1058
  ##
1123
- # Find the 'rubygems_plugin' files in the latest installed gems and load
1124
- # them
1059
+ # Find rubygems plugin files in the standard location and load them
1125
1060
 
1126
1061
  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
1062
+ load_plugin_files Gem::Util.glob_files_in_dir("*#{Gem.plugin_suffix_pattern}", plugindir)
1133
1063
  end
1134
1064
 
1135
1065
  ##
1136
1066
  # Find all 'rubygems_plugin' files in $LOAD_PATH and load them
1137
1067
 
1138
1068
  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
1069
+ load_plugin_files find_files_from_load_path("rubygems_plugin")
1152
1070
  end
1153
1071
 
1154
1072
  ##
@@ -1181,7 +1099,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
1181
1099
 
1182
1100
  if path == "-"
1183
1101
  Gem::Util.traverse_parents Dir.pwd do |directory|
1184
- dep_file = GEM_DEP_FILES.find { |f| File.file?(f) }
1102
+ dep_file = GEM_DEP_FILES.find {|f| File.file?(f) }
1185
1103
 
1186
1104
  next unless dep_file
1187
1105
 
@@ -1223,39 +1141,55 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
1223
1141
  end
1224
1142
  end
1225
1143
 
1226
- class << self
1144
+ ##
1145
+ # If the SOURCE_DATE_EPOCH environment variable is set, returns it's value.
1146
+ # Otherwise, returns the time that `Gem.source_date_epoch_string` was
1147
+ # first called in the same format as SOURCE_DATE_EPOCH.
1148
+ #
1149
+ # NOTE(@duckinator): The implementation is a tad weird because we want to:
1150
+ # 1. Make builds reproducible by default, by having this function always
1151
+ # return the same result during a given run.
1152
+ # 2. Allow changing ENV['SOURCE_DATE_EPOCH'] at runtime, since multiple
1153
+ # tests that set this variable will be run in a single process.
1154
+ #
1155
+ # If you simplify this function and a lot of tests fail, that is likely
1156
+ # due to #2 above.
1157
+ #
1158
+ # Details on SOURCE_DATE_EPOCH:
1159
+ # https://reproducible-builds.org/specs/source-date-epoch/
1227
1160
 
1228
- ##
1229
- # TODO remove with RubyGems 4.0
1161
+ def self.source_date_epoch_string
1162
+ # The value used if $SOURCE_DATE_EPOCH is not set.
1163
+ @default_source_date_epoch ||= Time.now.to_i.to_s
1230
1164
 
1231
- alias detect_gemdeps use_gemdeps # :nodoc:
1165
+ specified_epoch = ENV["SOURCE_DATE_EPOCH"]
1232
1166
 
1233
- extend Gem::Deprecate
1234
- deprecate :detect_gemdeps, "Gem.use_gemdeps", 2018, 12
1167
+ # If it's empty or just whitespace, treat it like it wasn't set at all.
1168
+ specified_epoch = nil if !specified_epoch.nil? && specified_epoch.strip.empty?
1235
1169
 
1170
+ epoch = specified_epoch || @default_source_date_epoch
1171
+
1172
+ epoch.strip
1236
1173
  end
1237
1174
 
1238
1175
  ##
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.
1176
+ # Returns the value of Gem.source_date_epoch_string, as a Time object.
1243
1177
  #
1244
- # Details on SOURCE_DATE_EPOCH:
1245
- # https://reproducible-builds.org/specs/source-date-epoch/
1178
+ # This is used throughout RubyGems for enabling reproducible builds.
1246
1179
 
1247
1180
  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
1181
+ Time.at(self.source_date_epoch_string.to_i).utc.freeze
1253
1182
  end
1254
1183
 
1255
1184
  # FIX: Almost everywhere else we use the `def self.` way of defining class
1256
1185
  # methods, and then we switch over to `class << self` here. Pick one or the
1257
1186
  # other.
1258
1187
  class << self
1188
+ ##
1189
+ # RubyGems distributors (like operating system package managers) can
1190
+ # disable RubyGems update by setting this to error message printed to
1191
+ # end-users on gem update --system instead of actual update.
1192
+ attr_accessor :disable_system_update_message
1259
1193
 
1260
1194
  ##
1261
1195
  # Hash of loaded Gem::Specification keyed by name
@@ -1281,10 +1215,11 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
1281
1215
  #
1282
1216
 
1283
1217
  def register_default_spec(spec)
1284
- new_format = spec.require_paths.any? {|path| spec.files.any? {|f| f.start_with? path } }
1218
+ extended_require_paths = spec.require_paths.map {|f| f + "/" }
1219
+ new_format = extended_require_paths.any? {|path| spec.files.any? {|f| f.start_with? path } }
1285
1220
 
1286
1221
  if new_format
1287
- prefix_group = spec.require_paths.map {|f| f + "/"}.join("|")
1222
+ prefix_group = extended_require_paths.join("|")
1288
1223
  prefix_pattern = /^(#{prefix_group})/
1289
1224
  end
1290
1225
 
@@ -1294,6 +1229,8 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
1294
1229
  next unless $~
1295
1230
  end
1296
1231
 
1232
+ spec.activate if already_loaded?(file)
1233
+
1297
1234
  @path_to_default_spec_map[file] = spec
1298
1235
  @path_to_default_spec_map[file.sub(suffix_regexp, "")] = spec
1299
1236
  end
@@ -1359,6 +1296,17 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
1359
1296
 
1360
1297
  attr_reader :pre_uninstall_hooks
1361
1298
 
1299
+ private
1300
+
1301
+ def already_loaded?(file)
1302
+ $LOADED_FEATURES.any? do |feature_path|
1303
+ feature_path.end_with?(file) && default_gem_load_paths.any? {|load_path_entry| feature_path == "#{load_path_entry}/#{file}" }
1304
+ end
1305
+ end
1306
+
1307
+ def default_gem_load_paths
1308
+ @default_gem_load_paths ||= $LOAD_PATH[load_path_insert_index..-1]
1309
+ end
1362
1310
  end
1363
1311
 
1364
1312
  ##
@@ -1366,25 +1314,24 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
1366
1314
 
1367
1315
  MARSHAL_SPEC_DIR = "quick/Marshal.#{Gem.marshal_version}/".freeze
1368
1316
 
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"
1317
+ autoload :BundlerVersionFinder, File.expand_path('rubygems/bundler_version_finder', __dir__)
1318
+ autoload :ConfigFile, File.expand_path('rubygems/config_file', __dir__)
1319
+ autoload :Dependency, File.expand_path('rubygems/dependency', __dir__)
1320
+ autoload :DependencyList, File.expand_path('rubygems/dependency_list', __dir__)
1321
+ autoload :Installer, File.expand_path('rubygems/installer', __dir__)
1322
+ autoload :Licenses, File.expand_path('rubygems/util/licenses', __dir__)
1323
+ autoload :NameTuple, File.expand_path('rubygems/name_tuple', __dir__)
1324
+ autoload :PathSupport, File.expand_path('rubygems/path_support', __dir__)
1325
+ autoload :Platform, File.expand_path('rubygems/platform', __dir__)
1326
+ autoload :RequestSet, File.expand_path('rubygems/request_set', __dir__)
1327
+ autoload :Requirement, File.expand_path('rubygems/requirement', __dir__)
1328
+ autoload :Resolver, File.expand_path('rubygems/resolver', __dir__)
1329
+ autoload :Source, File.expand_path('rubygems/source', __dir__)
1330
+ autoload :SourceList, File.expand_path('rubygems/source_list', __dir__)
1331
+ autoload :SpecFetcher, File.expand_path('rubygems/spec_fetcher', __dir__)
1332
+ autoload :Specification, File.expand_path('rubygems/specification', __dir__)
1333
+ autoload :Util, File.expand_path('rubygems/util', __dir__)
1334
+ autoload :Version, File.expand_path('rubygems/version', __dir__)
1388
1335
  end
1389
1336
 
1390
1337
  require 'rubygems/exceptions'