rubygems-update 3.1.2 → 3.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (560) 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 +460 -232
  5. data/Manifest.txt +47 -77
  6. data/POLICIES.md +6 -12
  7. data/README.md +5 -5
  8. data/Rakefile +59 -83
  9. data/bin/update_rubygems +1 -1
  10. data/bundler/CHANGELOG.md +1598 -1421
  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 +32 -7
  16. data/bundler/lib/bundler/build_metadata.rb +4 -12
  17. data/bundler/lib/bundler/cli.rb +58 -21
  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 +4 -4
  26. data/bundler/lib/bundler/cli/fund.rb +36 -0
  27. data/bundler/lib/bundler/cli/gem.rb +84 -11
  28. data/bundler/lib/bundler/cli/info.rb +15 -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 +16 -13
  32. data/bundler/lib/bundler/cli/issue.rb +2 -2
  33. data/bundler/lib/bundler/cli/list.rb +12 -10
  34. data/bundler/lib/bundler/cli/outdated.rb +87 -66
  35. data/bundler/lib/bundler/cli/plugin.rb +10 -0
  36. data/bundler/lib/bundler/cli/pristine.rb +5 -0
  37. data/bundler/lib/bundler/cli/show.rb +1 -1
  38. data/bundler/lib/bundler/cli/update.rb +3 -1
  39. data/bundler/lib/bundler/compact_index_client.rb +1 -1
  40. data/bundler/lib/bundler/compact_index_client/cache.rb +6 -14
  41. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
  42. data/bundler/lib/bundler/compact_index_client/updater.rb +5 -5
  43. data/bundler/lib/bundler/definition.rb +65 -76
  44. data/bundler/lib/bundler/dep_proxy.rb +1 -1
  45. data/bundler/lib/bundler/dependency.rb +3 -10
  46. data/bundler/lib/bundler/dsl.rb +5 -9
  47. data/bundler/lib/bundler/endpoint_specification.rb +1 -1
  48. data/bundler/lib/bundler/env.rb +1 -1
  49. data/bundler/lib/bundler/environment_preserver.rb +26 -2
  50. data/bundler/lib/bundler/errors.rb +1 -0
  51. data/bundler/lib/bundler/feature_flag.rb +0 -3
  52. data/bundler/lib/bundler/fetcher.rb +4 -3
  53. data/bundler/lib/bundler/fetcher/base.rb +1 -1
  54. data/bundler/lib/bundler/fetcher/compact_index.rb +1 -1
  55. data/bundler/lib/bundler/fetcher/downloader.rb +1 -1
  56. data/bundler/lib/bundler/fetcher/index.rb +3 -4
  57. data/bundler/lib/bundler/friendly_errors.rb +22 -13
  58. data/bundler/lib/bundler/gem_helper.rb +33 -19
  59. data/bundler/lib/bundler/gem_helpers.rb +36 -25
  60. data/bundler/lib/bundler/gem_version_promoter.rb +2 -2
  61. data/bundler/lib/bundler/graph.rb +1 -1
  62. data/bundler/lib/bundler/index.rb +6 -2
  63. data/bundler/lib/bundler/injector.rb +22 -4
  64. data/bundler/lib/bundler/inline.rb +2 -2
  65. data/bundler/lib/bundler/installer.rb +35 -32
  66. data/bundler/lib/bundler/installer/gem_installer.rb +3 -3
  67. data/bundler/lib/bundler/installer/parallel_installer.rb +10 -10
  68. data/bundler/lib/bundler/installer/standalone.rb +2 -2
  69. data/bundler/lib/bundler/lazy_specification.rb +35 -11
  70. data/bundler/lib/bundler/lockfile_generator.rb +1 -1
  71. data/bundler/lib/bundler/lockfile_parser.rb +1 -1
  72. data/bundler/lib/bundler/man/.document +1 -0
  73. data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +0 -0
  74. data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
  75. data/bundler/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +0 -0
  76. data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
  77. data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
  78. data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +19 -30
  79. data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
  80. data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +0 -0
  81. data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
  82. data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
  83. data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
  84. data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
  85. data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +25 -3
  86. data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
  87. data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
  88. data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
  89. data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
  90. data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
  91. data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
  92. data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
  93. data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
  94. data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +0 -0
  95. data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
  96. data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +0 -0
  97. data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +4 -4
  98. data/bundler/lib/bundler/mirror.rb +2 -2
  99. data/bundler/lib/bundler/plugin.rb +30 -5
  100. data/bundler/lib/bundler/plugin/api/source.rb +1 -1
  101. data/bundler/lib/bundler/plugin/dsl.rb +1 -1
  102. data/bundler/lib/bundler/plugin/index.rb +10 -1
  103. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  104. data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
  105. data/bundler/lib/bundler/plugin/source_list.rb +1 -1
  106. data/bundler/lib/bundler/psyched_yaml.rb +0 -15
  107. data/bundler/lib/bundler/remote_specification.rb +5 -2
  108. data/bundler/lib/bundler/resolver.rb +37 -18
  109. data/bundler/lib/bundler/resolver/spec_group.rb +36 -21
  110. data/bundler/lib/bundler/retry.rb +1 -1
  111. data/bundler/lib/bundler/ruby_version.rb +1 -1
  112. data/bundler/lib/bundler/rubygems_ext.rb +53 -9
  113. data/bundler/lib/bundler/rubygems_gem_installer.rb +3 -9
  114. data/bundler/lib/bundler/rubygems_integration.rb +26 -61
  115. data/bundler/lib/bundler/runtime.rb +4 -14
  116. data/bundler/lib/bundler/settings.rb +49 -46
  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 +5 -5
  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 +7 -9
  128. data/bundler/lib/bundler/stub_specification.rb +17 -7
  129. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  130. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +9 -1
  131. data/bundler/lib/bundler/templates/newgem/README.md.tt +1 -2
  132. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +19 -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 +14 -6
  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 +79 -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 +7 -7
  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 -4
  216. data/lib/rubygems/commands/pristine_command.rb +11 -5
  217. data/lib/rubygems/commands/push_command.rb +10 -47
  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 +131 -58
  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 -7
  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 +6 -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 +4 -6
  251. data/lib/rubygems/gem_runner.rb +3 -10
  252. data/lib/rubygems/gemcutter_utilities.rb +102 -21
  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 -80
  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 +11 -28
  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 +7 -20
  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 +14 -12
  290. data/lib/rubygems/resolver/activation_request.rb +9 -3
  291. data/lib/rubygems/resolver/api_set.rb +31 -24
  292. data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
  293. data/lib/rubygems/resolver/api_specification.rb +24 -10
  294. data/lib/rubygems/resolver/best_set.rb +1 -3
  295. data/lib/rubygems/resolver/composed_set.rb +3 -5
  296. data/lib/rubygems/resolver/conflict.rb +2 -4
  297. data/lib/rubygems/resolver/current_set.rb +0 -2
  298. data/lib/rubygems/resolver/dependency_request.rb +1 -3
  299. data/lib/rubygems/resolver/git_set.rb +0 -2
  300. data/lib/rubygems/resolver/git_specification.rb +0 -2
  301. data/lib/rubygems/resolver/index_set.rb +1 -3
  302. data/lib/rubygems/resolver/index_specification.rb +26 -2
  303. data/lib/rubygems/resolver/installed_specification.rb +0 -2
  304. data/lib/rubygems/resolver/installer_set.rb +60 -13
  305. data/lib/rubygems/resolver/local_specification.rb +0 -2
  306. data/lib/rubygems/resolver/lock_set.rb +2 -4
  307. data/lib/rubygems/resolver/lock_specification.rb +0 -2
  308. data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
  309. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
  310. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +1 -0
  311. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +39 -5
  312. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
  313. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
  314. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
  315. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
  316. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
  317. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
  318. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
  319. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
  320. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +43 -10
  321. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +75 -7
  322. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
  323. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +1 -0
  324. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
  325. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +506 -165
  326. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
  327. data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
  328. data/lib/rubygems/resolver/requirement_list.rb +0 -2
  329. data/lib/rubygems/resolver/set.rb +0 -2
  330. data/lib/rubygems/resolver/source_set.rb +0 -2
  331. data/lib/rubygems/resolver/spec_specification.rb +14 -2
  332. data/lib/rubygems/resolver/specification.rb +13 -3
  333. data/lib/rubygems/resolver/stats.rb +0 -2
  334. data/lib/rubygems/resolver/vendor_set.rb +0 -2
  335. data/lib/rubygems/resolver/vendor_specification.rb +0 -2
  336. data/lib/rubygems/s3_uri_signer.rb +2 -8
  337. data/lib/rubygems/safe_yaml.rb +4 -4
  338. data/lib/rubygems/security.rb +27 -34
  339. data/lib/rubygems/security/policy.rb +4 -8
  340. data/lib/rubygems/security/signer.rb +5 -7
  341. data/lib/rubygems/security/trust_dir.rb +1 -3
  342. data/lib/rubygems/server.rb +16 -13
  343. data/lib/rubygems/source.rb +23 -12
  344. data/lib/rubygems/source/git.rb +7 -8
  345. data/lib/rubygems/source/installed.rb +0 -2
  346. data/lib/rubygems/source/local.rb +2 -4
  347. data/lib/rubygems/source/lock.rb +0 -2
  348. data/lib/rubygems/source/specific_file.rb +0 -2
  349. data/lib/rubygems/source/vendor.rb +0 -2
  350. data/lib/rubygems/source_list.rb +4 -7
  351. data/lib/rubygems/spec_fetcher.rb +19 -18
  352. data/lib/rubygems/specification.rb +113 -126
  353. data/lib/rubygems/specification_policy.rb +88 -30
  354. data/lib/rubygems/ssl_certs/{index.rubygems.org → rubygems.org}/GlobalSignRootCA.pem +0 -0
  355. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
  356. data/lib/rubygems/stub_specification.rb +1 -5
  357. data/lib/rubygems/syck_hack.rb +0 -2
  358. data/lib/rubygems/test_case.rb +105 -132
  359. data/lib/rubygems/test_utilities.rb +12 -19
  360. data/lib/rubygems/uninstaller.rb +35 -16
  361. data/lib/rubygems/uri_formatter.rb +2 -3
  362. data/lib/rubygems/uri_parser.rb +0 -2
  363. data/lib/rubygems/user_interaction.rb +1 -26
  364. data/lib/rubygems/util.rb +15 -3
  365. data/lib/rubygems/util/licenses.rb +4 -6
  366. data/lib/rubygems/util/list.rb +0 -2
  367. data/lib/rubygems/validator.rb +1 -3
  368. data/lib/rubygems/version.rb +5 -7
  369. data/lib/rubygems/version_option.rb +6 -0
  370. data/rubygems-update.gemspec +2 -2
  371. data/setup.rb +2 -7
  372. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
  373. data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
  374. data/test/rubygems/rubygems_plugin.rb +0 -2
  375. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
  376. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
  377. data/test/rubygems/test_bundled_ca.rb +42 -45
  378. data/test/rubygems/test_config.rb +0 -2
  379. data/test/rubygems/test_deprecate.rb +40 -7
  380. data/test/rubygems/test_gem.rb +151 -99
  381. data/test/rubygems/test_gem_available_set.rb +3 -5
  382. data/test/rubygems/test_gem_bundler_version_finder.rb +19 -3
  383. data/test/rubygems/test_gem_command.rb +24 -7
  384. data/test/rubygems/test_gem_command_manager.rb +36 -5
  385. data/test/rubygems/test_gem_commands_build_command.rb +250 -15
  386. data/test/rubygems/test_gem_commands_cert_command.rb +4 -6
  387. data/test/rubygems/test_gem_commands_check_command.rb +0 -2
  388. data/test/rubygems/test_gem_commands_cleanup_command.rb +14 -5
  389. data/test/rubygems/test_gem_commands_contents_command.rb +50 -19
  390. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -2
  391. data/test/rubygems/test_gem_commands_environment_command.rb +21 -23
  392. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
  393. data/test/rubygems/test_gem_commands_generate_index_command.rb +1 -7
  394. data/test/rubygems/test_gem_commands_help_command.rb +15 -4
  395. data/test/rubygems/test_gem_commands_info_command.rb +6 -8
  396. data/test/rubygems/test_gem_commands_install_command.rb +163 -34
  397. data/test/rubygems/test_gem_commands_list_command.rb +0 -2
  398. data/test/rubygems/test_gem_commands_lock_command.rb +0 -2
  399. data/test/rubygems/test_gem_commands_mirror.rb +1 -3
  400. data/test/rubygems/test_gem_commands_open_command.rb +4 -6
  401. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -2
  402. data/test/rubygems/test_gem_commands_owner_command.rb +59 -5
  403. data/test/rubygems/test_gem_commands_pristine_command.rb +43 -12
  404. data/test/rubygems/test_gem_commands_push_command.rb +77 -9
  405. data/test/rubygems/test_gem_commands_query_command.rb +12 -12
  406. data/test/rubygems/test_gem_commands_search_command.rb +0 -2
  407. data/test/rubygems/test_gem_commands_server_command.rb +0 -2
  408. data/test/rubygems/test_gem_commands_setup_command.rb +165 -124
  409. data/test/rubygems/test_gem_commands_signin_command.rb +33 -9
  410. data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
  411. data/test/rubygems/test_gem_commands_sources_command.rb +99 -3
  412. data/test/rubygems/test_gem_commands_specification_command.rb +46 -20
  413. data/test/rubygems/test_gem_commands_stale_command.rb +0 -2
  414. data/test/rubygems/test_gem_commands_uninstall_command.rb +2 -3
  415. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
  416. data/test/rubygems/test_gem_commands_update_command.rb +116 -7
  417. data/test/rubygems/test_gem_commands_which_command.rb +3 -5
  418. data/test/rubygems/test_gem_commands_yank_command.rb +44 -8
  419. data/test/rubygems/test_gem_config_file.rb +7 -12
  420. data/test/rubygems/test_gem_dependency.rb +0 -2
  421. data/test/rubygems/test_gem_dependency_installer.rb +90 -193
  422. data/test/rubygems/test_gem_dependency_list.rb +10 -12
  423. data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -3
  424. data/test/rubygems/test_gem_doctor.rb +28 -2
  425. data/test/rubygems/test_gem_ext_builder.rb +26 -47
  426. data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -23
  427. data/test/rubygems/test_gem_ext_configure_builder.rb +4 -20
  428. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +9 -29
  429. data/test/rubygems/test_gem_ext_rake_builder.rb +39 -24
  430. data/test/rubygems/test_gem_gem_runner.rb +44 -1
  431. data/test/rubygems/test_gem_gemcutter_utilities.rb +8 -5
  432. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
  433. data/test/rubygems/test_gem_indexer.rb +9 -15
  434. data/test/rubygems/test_gem_install_update_options.rb +14 -4
  435. data/test/rubygems/test_gem_installer.rb +258 -115
  436. data/test/rubygems/test_gem_local_remote_options.rb +0 -2
  437. data/test/rubygems/test_gem_name_tuple.rb +0 -2
  438. data/test/rubygems/test_gem_package.rb +41 -39
  439. data/test/rubygems/test_gem_package_old.rb +4 -6
  440. data/test/rubygems/test_gem_package_tar_header.rb +18 -1
  441. data/test/rubygems/test_gem_package_tar_reader.rb +0 -2
  442. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -2
  443. data/test/rubygems/test_gem_package_tar_writer.rb +9 -6
  444. data/test/rubygems/test_gem_package_task.rb +46 -13
  445. data/test/rubygems/test_gem_path_support.rb +0 -2
  446. data/test/rubygems/test_gem_platform.rb +63 -6
  447. data/test/rubygems/test_gem_rdoc.rb +0 -2
  448. data/test/rubygems/test_gem_remote_fetcher.rb +168 -211
  449. data/test/rubygems/test_gem_request.rb +13 -17
  450. data/test/rubygems/test_gem_request_connection_pools.rb +0 -4
  451. data/test/rubygems/test_gem_request_set.rb +72 -22
  452. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +3 -5
  453. data/test/rubygems/test_gem_request_set_lockfile.rb +4 -6
  454. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -11
  455. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -120
  456. data/test/rubygems/test_gem_requirement.rb +10 -4
  457. data/test/rubygems/test_gem_resolver.rb +6 -8
  458. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -2
  459. data/test/rubygems/test_gem_resolver_api_set.rb +60 -59
  460. data/test/rubygems/test_gem_resolver_api_specification.rb +3 -5
  461. data/test/rubygems/test_gem_resolver_best_set.rb +5 -7
  462. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -2
  463. data/test/rubygems/test_gem_resolver_conflict.rb +1 -3
  464. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -2
  465. data/test/rubygems/test_gem_resolver_git_set.rb +0 -2
  466. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -2
  467. data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
  468. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -2
  469. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -2
  470. data/test/rubygems/test_gem_resolver_installer_set.rb +7 -9
  471. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -2
  472. data/test/rubygems/test_gem_resolver_lock_set.rb +3 -5
  473. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -2
  474. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -2
  475. data/test/rubygems/test_gem_resolver_specification.rb +0 -4
  476. data/test/rubygems/test_gem_resolver_vendor_set.rb +1 -3
  477. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -2
  478. data/test/rubygems/test_gem_security.rb +22 -24
  479. data/test/rubygems/test_gem_security_policy.rb +7 -12
  480. data/test/rubygems/test_gem_security_signer.rb +10 -12
  481. data/test/rubygems/test_gem_security_trust_dir.rb +4 -6
  482. data/test/rubygems/test_gem_server.rb +10 -14
  483. data/test/rubygems/test_gem_silent_ui.rb +0 -2
  484. data/test/rubygems/test_gem_source.rb +19 -18
  485. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -2
  486. data/test/rubygems/test_gem_source_git.rb +12 -13
  487. data/test/rubygems/test_gem_source_installed.rb +7 -9
  488. data/test/rubygems/test_gem_source_list.rb +1 -2
  489. data/test/rubygems/test_gem_source_local.rb +8 -10
  490. data/test/rubygems/test_gem_source_lock.rb +10 -12
  491. data/test/rubygems/test_gem_source_specific_file.rb +7 -9
  492. data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
  493. data/test/rubygems/test_gem_source_vendor.rb +7 -9
  494. data/test/rubygems/test_gem_spec_fetcher.rb +11 -4
  495. data/test/rubygems/test_gem_specification.rb +182 -131
  496. data/test/rubygems/test_gem_stream_ui.rb +3 -3
  497. data/test/rubygems/test_gem_stub_specification.rb +4 -7
  498. data/test/rubygems/test_gem_text.rb +1 -3
  499. data/test/rubygems/test_gem_uninstaller.rb +134 -12
  500. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -2
  501. data/test/rubygems/test_gem_uri_formatter.rb +0 -2
  502. data/test/rubygems/test_gem_util.rb +7 -7
  503. data/test/rubygems/test_gem_validator.rb +1 -3
  504. data/test/rubygems/test_gem_version.rb +1 -3
  505. data/test/rubygems/test_gem_version_option.rb +1 -3
  506. data/test/rubygems/test_kernel.rb +25 -10
  507. data/test/rubygems/test_project_sanity.rb +7 -2
  508. data/test/rubygems/test_remote_fetch_error.rb +0 -2
  509. data/test/rubygems/test_require.rb +291 -56
  510. data/test/test_changelog_generator.rb +17 -0
  511. metadata +65 -96
  512. data/.bundle/config +0 -2
  513. data/.rubocop.yml +0 -91
  514. data/Gemfile +0 -8
  515. data/Gemfile.lock +0 -43
  516. data/bundler/CODE_OF_CONDUCT.md +0 -136
  517. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
  518. data/bundler/man/bundle-add.1.txt +0 -58
  519. data/bundler/man/bundle-binstubs.1.txt +0 -48
  520. data/bundler/man/bundle-cache.1.txt +0 -78
  521. data/bundler/man/bundle-check.1.txt +0 -33
  522. data/bundler/man/bundle-clean.1.txt +0 -26
  523. data/bundler/man/bundle-config.1.txt +0 -528
  524. data/bundler/man/bundle-doctor.1.txt +0 -44
  525. data/bundler/man/bundle-exec.1.txt +0 -178
  526. data/bundler/man/bundle-gem.1.txt +0 -91
  527. data/bundler/man/bundle-info.1.txt +0 -21
  528. data/bundler/man/bundle-init.1.txt +0 -34
  529. data/bundler/man/bundle-inject.1.txt +0 -32
  530. data/bundler/man/bundle-install.1.txt +0 -401
  531. data/bundler/man/bundle-list.1.txt +0 -43
  532. data/bundler/man/bundle-lock.1.txt +0 -93
  533. data/bundler/man/bundle-open.1.txt +0 -29
  534. data/bundler/man/bundle-outdated.1.txt +0 -131
  535. data/bundler/man/bundle-platform.1.txt +0 -57
  536. data/bundler/man/bundle-pristine.1.txt +0 -44
  537. data/bundler/man/bundle-remove.1.txt +0 -34
  538. data/bundler/man/bundle-show.1.txt +0 -27
  539. data/bundler/man/bundle-update.1.txt +0 -390
  540. data/bundler/man/bundle-viz.1.txt +0 -39
  541. data/bundler/man/bundle.1.txt +0 -116
  542. data/bundler/man/gemfile.5.txt +0 -649
  543. data/lib/rubygems/source_local.rb +0 -7
  544. data/lib/rubygems/source_specific_file.rb +0 -6
  545. data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  546. data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
  547. data/lib/ubygems.rb +0 -14
  548. data/tmp/.keep +0 -0
  549. data/util/CL2notes +0 -55
  550. data/util/bisect +0 -10
  551. data/util/ci.sh +0 -62
  552. data/util/cops/deprecations.rb +0 -52
  553. data/util/create_certs.rb +0 -171
  554. data/util/create_certs.sh +0 -27
  555. data/util/create_encrypted_key.rb +0 -16
  556. data/util/generate_spdx_license_list.rb +0 -63
  557. data/util/patch_with_prs.rb +0 -77
  558. data/util/rubocop +0 -8
  559. data/util/update_bundled_ca_certificates.rb +0 -139
  560. data/util/update_changelog.rb +0 -67
@@ -1,18 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  require 'rubygems'
3
3
 
4
- begin
5
- gem 'rdoc'
6
- rescue Gem::LoadError
7
- # swallow
8
- else
9
- # This will force any deps that 'rdoc' might have
10
- # (such as json) that are ambiguous to be activated, which
11
- # is important because we end up using Specification.reset
12
- # and we don't want the warning it pops out.
13
- Gem.finish_resolve
14
- end
15
-
16
4
  begin
17
5
  require 'rdoc/rubygems_hook'
18
6
  module Gem
@@ -7,17 +7,13 @@ require 'rubygems/uri_formatter'
7
7
  require 'rubygems/uri_parsing'
8
8
  require 'rubygems/user_interaction'
9
9
  require 'resolv'
10
- require 'rubygems/deprecate'
11
10
 
12
11
  ##
13
12
  # RemoteFetcher handles the details of fetching gems and gem information from
14
13
  # a remote source.
15
14
 
16
15
  class Gem::RemoteFetcher
17
-
18
16
  include Gem::UserInteraction
19
- extend Gem::Deprecate
20
-
21
17
  include Gem::UriParsing
22
18
 
23
19
  ##
@@ -25,7 +21,6 @@ class Gem::RemoteFetcher
25
21
  # that could happen while downloading from the internet.
26
22
 
27
23
  class FetchError < Gem::Exception
28
-
29
24
  include Gem::UriParsing
30
25
 
31
26
  ##
@@ -46,7 +41,6 @@ class Gem::RemoteFetcher
46
41
  def to_s # :nodoc:
47
42
  "#{super} (#{uri})"
48
43
  end
49
-
50
44
  end
51
45
 
52
46
  ##
@@ -84,7 +78,6 @@ class Gem::RemoteFetcher
84
78
  def initialize(proxy=nil, dns=nil, headers={})
85
79
  require 'net/http'
86
80
  require 'stringio'
87
- require 'time'
88
81
  require 'uri'
89
82
 
90
83
  Socket.do_not_reverse_lookup = true
@@ -109,7 +102,7 @@ class Gem::RemoteFetcher
109
102
 
110
103
  return if found.empty?
111
104
 
112
- spec, source = found.max_by { |(s,_)| s.version }
105
+ spec, source = found.max_by {|(s,_)| s.version }
113
106
 
114
107
  download spec, source.uri
115
108
  end
@@ -120,11 +113,12 @@ class Gem::RemoteFetcher
120
113
  # always replaced.
121
114
 
122
115
  def download(spec, source_uri, install_dir = Gem.dir)
116
+ install_cache_dir = File.join install_dir, "cache"
123
117
  cache_dir =
124
- if Dir.pwd == install_dir # see fetch_command
118
+ if Dir.pwd == install_dir # see fetch_command
125
119
  install_dir
126
- elsif File.writable? install_dir
127
- File.join install_dir, "cache"
120
+ elsif File.writable?(install_cache_dir) || (File.writable?(install_dir) && (not File.exist?(install_cache_dir)))
121
+ install_cache_dir
128
122
  else
129
123
  File.join Gem.user_dir, "cache"
130
124
  end
@@ -132,6 +126,7 @@ class Gem::RemoteFetcher
132
126
  gem_file_name = File.basename spec.cache_file
133
127
  local_gem_path = File.join cache_dir, gem_file_name
134
128
 
129
+ require "fileutils"
135
130
  FileUtils.mkdir_p cache_dir rescue nil unless File.exist? cache_dir
136
131
 
137
132
  source_uri = parse_uri(source_uri)
@@ -215,12 +210,12 @@ class Gem::RemoteFetcher
215
210
  def fetch_http(uri, last_modified = nil, head = false, depth = 0)
216
211
  fetch_type = head ? Net::HTTP::Head : Net::HTTP::Get
217
212
  response = request uri, fetch_type, last_modified do |req|
218
- headers.each { |k,v| req.add_field(k,v) }
213
+ headers.each {|k,v| req.add_field(k,v) }
219
214
  end
220
215
 
221
216
  case response
222
217
  when Net::HTTPOK, Net::HTTPNotModified then
223
- response.uri = uri if response.respond_to? :uri
218
+ response.uri = uri
224
219
  head ? response : response.body
225
220
  when Net::HTTPMovedPermanently, Net::HTTPFound, Net::HTTPSeeOther,
226
221
  Net::HTTPTemporaryRedirect then
@@ -255,7 +250,7 @@ class Gem::RemoteFetcher
255
250
 
256
251
  data = send "fetch_#{uri.scheme}", uri, mtime, head
257
252
 
258
- if data and !head and uri.to_s =~ /\.gz$/
253
+ if data and !head and uri.to_s.end_with?(".gz")
259
254
  begin
260
255
  data = Gem::Util.gunzip data
261
256
  rescue Zlib::GzipFile::Error
@@ -267,7 +262,7 @@ class Gem::RemoteFetcher
267
262
  rescue Timeout::Error
268
263
  raise UnknownHostError.new('timed out', uri)
269
264
  rescue IOError, SocketError, SystemCallError,
270
- *(OpenSSL::SSL::SSLError if defined?(OpenSSL)) => e
265
+ *(OpenSSL::SSL::SSLError if Gem::HAVE_OPENSSL) => e
271
266
  if e.message =~ /getaddrinfo/
272
267
  raise UnknownHostError.new('no such name', uri)
273
268
  else
@@ -309,17 +304,6 @@ class Gem::RemoteFetcher
309
304
  data
310
305
  end
311
306
 
312
- ##
313
- # Returns the size of +uri+ in bytes.
314
-
315
- def fetch_size(uri)
316
- response = fetch_path(uri, nil, true)
317
-
318
- response['content-length'].to_i
319
- end
320
-
321
- deprecate :fetch_size, :none, 2019, 12
322
-
323
307
  ##
324
308
  # Performs a Net::HTTP request of type +request_class+ on +uri+ returning
325
309
  # a Net::HTTP response object. request maintains a table of persistent
@@ -341,7 +325,7 @@ class Gem::RemoteFetcher
341
325
  end
342
326
 
343
327
  def close_all
344
- @pools.each_value {|pool| pool.close_all}
328
+ @pools.each_value {|pool| pool.close_all }
345
329
  end
346
330
 
347
331
  private
@@ -355,5 +339,4 @@ class Gem::RemoteFetcher
355
339
  @pools[proxy] ||= Gem::Request::ConnectionPools.new proxy, @cert_files
356
340
  end
357
341
  end
358
-
359
342
  end
@@ -1,10 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
  require 'net/http'
3
- require 'time'
4
3
  require 'rubygems/user_interaction'
5
4
 
6
5
  class Gem::Request
7
-
8
6
  extend Gem::UserInteraction
9
7
  include Gem::UserInteraction
10
8
 
@@ -46,7 +44,8 @@ class Gem::Request
46
44
  end
47
45
 
48
46
  def self.configure_connection_for_https(connection, cert_files)
49
- require 'net/https'
47
+ raise Gem::Exception.new('OpenSSl is not available. Install OpenSSL and rebuild Ruby (preferred) or use non-HTTPS sources') unless Gem::HAVE_OPENSSL
48
+
50
49
  connection.use_ssl = true
51
50
  connection.verify_mode =
52
51
  Gem.configuration.ssl_verify_mode || OpenSSL::SSL::VERIFY_PEER
@@ -78,12 +77,6 @@ class Gem::Request
78
77
  end
79
78
 
80
79
  connection
81
- rescue LoadError => e
82
- raise unless (e.respond_to?(:path) && e.path == 'openssl') ||
83
- e.message =~ / -- openssl$/
84
-
85
- raise Gem::Exception.new(
86
- 'Unable to require openssl, install OpenSSL and rebuild Ruby (preferred) or use non-HTTPS sources')
87
80
  end
88
81
 
89
82
  def self.verify_certificate(store_context)
@@ -132,7 +125,7 @@ class Gem::Request
132
125
 
133
126
  def connection_for(uri)
134
127
  @connection_pool.checkout
135
- rescue defined?(OpenSSL::SSL) ? OpenSSL::SSL::SSLError : Errno::EHOSTDOWN,
128
+ rescue Gem::HAVE_OPENSSL ? OpenSSL::SSL::SSLError : Errno::EHOSTDOWN,
136
129
  Errno::EHOSTDOWN => e
137
130
  raise Gem::RemoteFetcher::FetchError.new(e.message, uri)
138
131
  end
@@ -150,6 +143,7 @@ class Gem::Request
150
143
  request.add_field 'Keep-Alive', '30'
151
144
 
152
145
  if @last_modified
146
+ require 'time'
153
147
  request.add_field 'If-Modified-Since', @last_modified.httpdate
154
148
  end
155
149
 
@@ -291,7 +285,6 @@ class Gem::Request
291
285
 
292
286
  ua
293
287
  end
294
-
295
288
  end
296
289
 
297
290
  require 'rubygems/request/http_pool'
@@ -1,13 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Gem::Request::ConnectionPools # :nodoc:
4
-
5
4
  @client = Net::HTTP
6
5
 
7
6
  class << self
8
-
9
7
  attr_accessor :client
10
-
11
8
  end
12
9
 
13
10
  def initialize(proxy_uri, cert_files)
@@ -31,7 +28,7 @@ class Gem::Request::ConnectionPools # :nodoc:
31
28
  end
32
29
 
33
30
  def close_all
34
- @pools.each_value {|pool| pool.close_all}
31
+ @pools.each_value {|pool| pool.close_all }
35
32
  end
36
33
 
37
34
  private
@@ -95,5 +92,4 @@ class Gem::Request::ConnectionPools # :nodoc:
95
92
  net_http_args
96
93
  end
97
94
  end
98
-
99
95
  end
@@ -6,7 +6,6 @@
6
6
  # use it.
7
7
 
8
8
  class Gem::Request::HTTPPool # :nodoc:
9
-
10
9
  attr_reader :cert_files, :proxy_uri
11
10
 
12
11
  def initialize(http_args, cert_files, proxy_uri)
@@ -44,5 +43,4 @@ class Gem::Request::HTTPPool # :nodoc:
44
43
  connection.start
45
44
  connection
46
45
  end
47
-
48
46
  end
@@ -1,11 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
  class Gem::Request::HTTPSPool < Gem::Request::HTTPPool # :nodoc:
3
-
4
3
  private
5
4
 
6
5
  def setup_connection(connection)
7
6
  Gem::Request.configure_connection_for_https(connection, @cert_files)
8
7
  super
9
8
  end
10
-
11
9
  end
@@ -15,7 +15,6 @@ require 'tsort'
15
15
  # #=> ["nokogiri-1.6.0", "mini_portile-0.5.1", "pg-0.17.0"]
16
16
 
17
17
  class Gem::RequestSet
18
-
19
18
  include TSort
20
19
 
21
20
  ##
@@ -184,7 +183,7 @@ class Gem::RequestSet
184
183
  if req.installed?
185
184
  req.spec.spec.build_extensions
186
185
 
187
- if @always_install.none? { |spec| spec == req.spec.spec }
186
+ if @always_install.none? {|spec| spec == req.spec.spec }
188
187
  yield req, nil if block_given?
189
188
  next
190
189
  end
@@ -196,19 +195,8 @@ class Gem::RequestSet
196
195
  yield req, installer if block_given?
197
196
  end
198
197
  rescue Gem::RuntimeRequirementNotMetError => e
199
- recent_match = req.spec.set.find_all(req.request).sort_by(&:version).reverse_each.find do |s|
200
- s = s.spec
201
- s.required_ruby_version.satisfied_by?(Gem.ruby_version) &&
202
- s.required_rubygems_version.satisfied_by?(Gem.rubygems_version) &&
203
- Gem::Platform.installable?(s)
204
- end
205
- if recent_match
206
- suggestion = "The last version of #{req.request} to support your Ruby & RubyGems was #{recent_match.version}. Try installing it with `gem install #{recent_match.name} -v #{recent_match.version}`"
207
- suggestion += " and then running the current command again" unless @always_install.include?(req.spec.spec)
208
- else
209
- suggestion = "There are no versions of #{req.request} compatible with your Ruby & RubyGems"
210
- suggestion += ". Maybe try installing an older version of the gem you're looking for?" unless @always_install.include?(req.spec.spec)
211
- end
198
+ suggestion = "There are no versions of #{req.request} compatible with your Ruby & RubyGems"
199
+ suggestion += ". Maybe try installing an older version of the gem you're looking for?" unless @always_install.include?(req.spec.spec)
212
200
  e.suggestion = suggestion
213
201
  raise
214
202
  end
@@ -269,7 +257,7 @@ class Gem::RequestSet
269
257
  gem_home, ENV['GEM_HOME'] = ENV['GEM_HOME'], dir
270
258
 
271
259
  existing = force ? [] : specs_in(dir)
272
- existing.delete_if { |s| @always_install.include? s }
260
+ existing.delete_if {|s| @always_install.include? s }
273
261
 
274
262
  dir = File.expand_path dir
275
263
 
@@ -283,7 +271,7 @@ class Gem::RequestSet
283
271
  sorted_requests.each do |request|
284
272
  spec = request.spec
285
273
 
286
- if existing.find { |s| s.full_name == spec.full_name }
274
+ if existing.find {|s| s.full_name == spec.full_name }
287
275
  yield request, nil if block_given?
288
276
  next
289
277
  end
@@ -386,7 +374,7 @@ class Gem::RequestSet
386
374
  q.text 'sets:'
387
375
 
388
376
  q.breakable
389
- q.pp @sets.map { |set| set.class }
377
+ q.pp @sets.map {|set| set.class }
390
378
  end
391
379
  end
392
380
 
@@ -440,7 +428,7 @@ class Gem::RequestSet
440
428
  end
441
429
 
442
430
  def specs
443
- @specs ||= @requests.map { |r| r.full_spec }
431
+ @specs ||= @requests.map {|r| r.full_spec }
444
432
  end
445
433
 
446
434
  def specs_in(dir)
@@ -471,7 +459,6 @@ class Gem::RequestSet
471
459
  yield match
472
460
  end
473
461
  end
474
-
475
462
  end
476
463
 
477
464
  require 'rubygems/request_set/gem_dependency_api'
@@ -31,7 +31,6 @@
31
31
  # See `gem help install` and `gem help gem_dependencies` for further details.
32
32
 
33
33
  class Gem::RequestSet::GemDependencyAPI
34
-
35
34
  ENGINE_MAP = { # :nodoc:
36
35
  :jruby => %w[jruby],
37
36
  :jruby_18 => %w[jruby],
@@ -89,7 +88,7 @@ class Gem::RequestSet::GemDependencyAPI
89
88
  :truffleruby => Gem::Platform::RUBY,
90
89
  :x64_mingw => x64_mingw,
91
90
  :x64_mingw_20 => x64_mingw,
92
- :x64_mingw_21 => x64_mingw
91
+ :x64_mingw_21 => x64_mingw,
93
92
  }.freeze
94
93
 
95
94
  gt_eq_0 = Gem::Requirement.new '>= 0'
@@ -206,7 +205,7 @@ class Gem::RequestSet::GemDependencyAPI
206
205
  @git_set = @set.git_set
207
206
  @git_sources = {}
208
207
  @installing = false
209
- @requires = Hash.new { |h, name| h[name] = [] }
208
+ @requires = Hash.new {|h, name| h[name] = [] }
210
209
  @vendor_set = @set.vendor_set
211
210
  @source_set = @set.source_set
212
211
  @gem_sources = {}
@@ -235,7 +234,7 @@ class Gem::RequestSet::GemDependencyAPI
235
234
  return unless (groups & @without_groups).empty?
236
235
 
237
236
  dependencies.each do |dep|
238
- @set.gem dep.name, *dep.requirement
237
+ @set.gem dep.name, *dep.requirement.as_list
239
238
  end
240
239
  end
241
240
 
@@ -380,7 +379,7 @@ class Gem::RequestSet::GemDependencyAPI
380
379
  Gem::Requirement.create requirements
381
380
  end
382
381
 
383
- return unless gem_platforms options
382
+ return unless gem_platforms name, options
384
383
 
385
384
  groups = gem_group name, options
386
385
 
@@ -533,7 +532,7 @@ Gem dependencies file #{@path} includes git reference for both ref/branch and ta
533
532
  # Handles the platforms: option from +options+. Returns true if the
534
533
  # platform matches the current platform.
535
534
 
536
- def gem_platforms(options) # :nodoc:
535
+ def gem_platforms(name, options) # :nodoc:
537
536
  platform_names = Array(options.delete :platform)
538
537
  platform_names.concat Array(options.delete :platforms)
539
538
  platform_names.concat @current_platforms if @current_platforms
@@ -544,7 +543,7 @@ Gem dependencies file #{@path} includes git reference for both ref/branch and ta
544
543
  raise ArgumentError, "unknown platform #{platform_name.inspect}" unless
545
544
  platform = PLATFORM_MAP[platform_name]
546
545
 
547
- next false unless Gem::Platform.match platform
546
+ next false unless Gem::Platform.match_gem? platform, name
548
547
 
549
548
  if engines = ENGINE_MAP[platform_name]
550
549
  next false unless engines.include? Gem.ruby_engine
@@ -842,5 +841,4 @@ Gem dependencies file #{@path} includes git reference for both ref/branch and ta
842
841
 
843
842
  Gem.sources << url
844
843
  end
845
-
846
844
  end
@@ -5,12 +5,10 @@
5
5
  # constructed.
6
6
 
7
7
  class Gem::RequestSet::Lockfile
8
-
9
8
  ##
10
9
  # Raised when a lockfile cannot be parsed
11
10
 
12
11
  class ParseError < Gem::Exception
13
-
14
12
  ##
15
13
  # The column where the error was encountered
16
14
 
@@ -36,7 +34,6 @@ class Gem::RequestSet::Lockfile
36
34
  @path = path
37
35
  super "#{message} (at line #{line} column #{column})"
38
36
  end
39
-
40
37
  end
41
38
 
42
39
  ##
@@ -89,7 +86,7 @@ class Gem::RequestSet::Lockfile
89
86
  def add_DEPENDENCIES(out) # :nodoc:
90
87
  out << "DEPENDENCIES"
91
88
 
92
- out.concat @dependencies.sort_by { |name,| name }.map { |name, requirement|
89
+ out.concat @dependencies.sort_by {|name,| name }.map {|name, requirement|
93
90
  " #{name}#{requirement.for_lockfile}"
94
91
  }
95
92
 
@@ -103,12 +100,12 @@ class Gem::RequestSet::Lockfile
103
100
  request.spec.source.uri
104
101
  end
105
102
 
106
- source_groups.sort_by { |group,| group.to_s }.map do |group, requests|
103
+ source_groups.sort_by {|group,| group.to_s }.map do |group, requests|
107
104
  out << "GEM"
108
105
  out << " remote: #{group}"
109
106
  out << " specs:"
110
107
 
111
- requests.sort_by { |request| request.name }.each do |request|
108
+ requests.sort_by {|request| request.name }.each do |request|
112
109
  next if request.spec.name == 'bundler'
113
110
  platform = "-#{request.spec.platform}" unless
114
111
  Gem::Platform::RUBY == request.spec.platform
@@ -140,10 +137,10 @@ class Gem::RequestSet::Lockfile
140
137
  out << " revision: #{revision}"
141
138
  out << " specs:"
142
139
 
143
- requests.sort_by { |request| request.name }.each do |request|
140
+ requests.sort_by {|request| request.name }.each do |request|
144
141
  out << " #{request.name} (#{request.version})"
145
142
 
146
- dependencies = request.spec.dependencies.sort_by { |dep| dep.name }
143
+ dependencies = request.spec.dependencies.sort_by {|dep| dep.name }
147
144
  dependencies.each do |dep|
148
145
  out << " #{dep.name}#{dep.requirement.for_lockfile}"
149
146
  end
@@ -185,9 +182,9 @@ class Gem::RequestSet::Lockfile
185
182
  def add_PLATFORMS(out) # :nodoc:
186
183
  out << "PLATFORMS"
187
184
 
188
- platforms = requests.map { |request| request.spec.platform }.uniq
185
+ platforms = requests.map {|request| request.spec.platform }.uniq
189
186
 
190
- platforms = platforms.sort_by { |platform| platform.to_s }
187
+ platforms = platforms.sort_by {|platform| platform.to_s }
191
188
 
192
189
  platforms.each do |platform|
193
190
  out << " #{platform}"
@@ -197,7 +194,7 @@ class Gem::RequestSet::Lockfile
197
194
  end
198
195
 
199
196
  def spec_groups
200
- requests.group_by { |request| request.spec.class }
197
+ requests.group_by {|request| request.spec.class }
201
198
  end
202
199
 
203
200
  ##
@@ -237,7 +234,6 @@ class Gem::RequestSet::Lockfile
237
234
  def requests
238
235
  @set.sorted_requests
239
236
  end
240
-
241
237
  end
242
238
 
243
239
  require 'rubygems/request_set/lockfile/tokenizer'