rubygems-update 3.0.6 → 3.2.14

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 (628) hide show
  1. checksums.yaml +4 -4
  2. data/{History.txt → CHANGELOG.md} +1100 -436
  3. data/CODE_OF_CONDUCT.md +55 -19
  4. data/CONTRIBUTING.md +37 -10
  5. data/MAINTAINERS.txt +1 -6
  6. data/Manifest.txt +104 -64
  7. data/POLICIES.md +6 -12
  8. data/README.md +6 -6
  9. data/Rakefile +121 -111
  10. data/bin/gem +0 -6
  11. data/bin/update_rubygems +2 -2
  12. data/bundler/CHANGELOG.md +1788 -1251
  13. data/bundler/LICENSE.md +18 -19
  14. data/bundler/README.md +9 -10
  15. data/bundler/UPGRADING.md +215 -0
  16. data/bundler/bundler.gemspec +9 -26
  17. data/bundler/exe/bundle +22 -3
  18. data/bundler/lib/bundler.rb +233 -94
  19. data/bundler/lib/bundler/build_metadata.rb +5 -13
  20. data/bundler/lib/bundler/capistrano.rb +4 -4
  21. data/bundler/lib/bundler/cli.rb +221 -148
  22. data/bundler/lib/bundler/cli/add.rb +28 -16
  23. data/bundler/lib/bundler/cli/binstubs.rb +6 -2
  24. data/bundler/lib/bundler/cli/cache.rb +24 -17
  25. data/bundler/lib/bundler/cli/clean.rb +1 -1
  26. data/bundler/lib/bundler/cli/common.rb +25 -12
  27. data/bundler/lib/bundler/cli/config.rb +161 -86
  28. data/bundler/lib/bundler/cli/console.rb +1 -1
  29. data/bundler/lib/bundler/cli/doctor.rb +5 -5
  30. data/bundler/lib/bundler/cli/exec.rb +8 -20
  31. data/bundler/lib/bundler/cli/fund.rb +36 -0
  32. data/bundler/lib/bundler/cli/gem.rb +125 -32
  33. data/bundler/lib/bundler/cli/info.rb +29 -6
  34. data/bundler/lib/bundler/cli/init.rb +2 -2
  35. data/bundler/lib/bundler/cli/inject.rb +1 -1
  36. data/bundler/lib/bundler/cli/install.rb +27 -23
  37. data/bundler/lib/bundler/cli/issue.rb +5 -5
  38. data/bundler/lib/bundler/cli/list.rb +12 -10
  39. data/bundler/lib/bundler/cli/open.rb +10 -6
  40. data/bundler/lib/bundler/cli/outdated.rb +134 -109
  41. data/bundler/lib/bundler/cli/plugin.rb +19 -2
  42. data/bundler/lib/bundler/cli/pristine.rb +6 -1
  43. data/bundler/lib/bundler/cli/show.rb +2 -2
  44. data/bundler/lib/bundler/cli/update.rb +34 -12
  45. data/bundler/lib/bundler/compact_index_client.rb +26 -10
  46. data/bundler/lib/bundler/compact_index_client/cache.rb +6 -14
  47. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
  48. data/bundler/lib/bundler/compact_index_client/updater.rb +8 -20
  49. data/bundler/lib/bundler/current_ruby.rb +9 -7
  50. data/bundler/lib/bundler/definition.rb +133 -132
  51. data/bundler/lib/bundler/dep_proxy.rb +16 -9
  52. data/bundler/lib/bundler/dependency.rb +19 -14
  53. data/bundler/lib/bundler/deployment.rb +1 -1
  54. data/bundler/lib/bundler/dsl.rb +54 -71
  55. data/bundler/lib/bundler/endpoint_specification.rb +1 -1
  56. data/bundler/lib/bundler/env.rb +9 -14
  57. data/bundler/lib/bundler/environment_preserver.rb +26 -3
  58. data/bundler/lib/bundler/errors.rb +1 -0
  59. data/bundler/lib/bundler/feature_flag.rb +19 -34
  60. data/bundler/lib/bundler/fetcher.rb +19 -16
  61. data/bundler/lib/bundler/fetcher/base.rb +1 -1
  62. data/bundler/lib/bundler/fetcher/compact_index.rb +27 -13
  63. data/bundler/lib/bundler/fetcher/dependency.rb +1 -1
  64. data/bundler/lib/bundler/fetcher/downloader.rb +6 -3
  65. data/bundler/lib/bundler/fetcher/index.rb +8 -7
  66. data/bundler/lib/bundler/friendly_errors.rb +27 -19
  67. data/bundler/lib/bundler/gem_helper.rb +68 -37
  68. data/bundler/lib/bundler/gem_helpers.rb +38 -29
  69. data/bundler/lib/bundler/gem_tasks.rb +1 -1
  70. data/bundler/lib/bundler/gem_version_promoter.rb +5 -5
  71. data/bundler/lib/bundler/graph.rb +3 -3
  72. data/bundler/lib/bundler/index.rb +12 -7
  73. data/bundler/lib/bundler/injector.rb +32 -12
  74. data/bundler/lib/bundler/inline.rb +41 -30
  75. data/bundler/lib/bundler/installer.rb +41 -60
  76. data/bundler/lib/bundler/installer/gem_installer.rb +8 -4
  77. data/bundler/lib/bundler/installer/parallel_installer.rb +20 -26
  78. data/bundler/lib/bundler/installer/standalone.rb +18 -4
  79. data/bundler/lib/bundler/lazy_specification.rb +41 -27
  80. data/bundler/lib/bundler/lockfile_generator.rb +1 -1
  81. data/bundler/lib/bundler/lockfile_parser.rb +16 -33
  82. data/bundler/lib/bundler/{ssl_certs → man}/.document +0 -0
  83. data/bundler/lib/bundler/man/bundle-add.1 +66 -0
  84. data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +7 -1
  85. data/bundler/lib/bundler/man/bundle-binstubs.1 +42 -0
  86. data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +3 -5
  87. data/bundler/lib/bundler/man/bundle-cache.1 +55 -0
  88. data/bundler/{man/bundle-package.ronn → lib/bundler/man/bundle-cache.1.ronn} +15 -15
  89. data/bundler/lib/bundler/man/bundle-check.1 +31 -0
  90. data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
  91. data/bundler/lib/bundler/man/bundle-clean.1 +24 -0
  92. data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
  93. data/bundler/lib/bundler/man/bundle-config.1 +488 -0
  94. data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +59 -67
  95. data/bundler/lib/bundler/man/bundle-doctor.1 +44 -0
  96. data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
  97. data/bundler/lib/bundler/man/bundle-exec.1 +165 -0
  98. data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +1 -1
  99. data/bundler/lib/bundler/man/bundle-gem.1 +102 -0
  100. data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
  101. data/bundler/lib/bundler/man/bundle-info.1 +20 -0
  102. data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
  103. data/bundler/lib/bundler/man/bundle-init.1 +25 -0
  104. data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +1 -1
  105. data/bundler/lib/bundler/man/bundle-inject.1 +33 -0
  106. data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
  107. data/bundler/lib/bundler/man/bundle-install.1 +338 -0
  108. data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +34 -7
  109. data/bundler/lib/bundler/man/bundle-list.1 +50 -0
  110. data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
  111. data/bundler/lib/bundler/man/bundle-lock.1 +84 -0
  112. data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
  113. data/bundler/lib/bundler/man/bundle-open.1 +32 -0
  114. data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
  115. data/bundler/lib/bundler/man/bundle-outdated.1 +155 -0
  116. data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
  117. data/bundler/lib/bundler/man/bundle-platform.1 +61 -0
  118. data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
  119. data/bundler/lib/bundler/man/bundle-pristine.1 +34 -0
  120. data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
  121. data/bundler/lib/bundler/man/bundle-remove.1 +31 -0
  122. data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
  123. data/bundler/lib/bundler/man/bundle-show.1 +23 -0
  124. data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
  125. data/bundler/lib/bundler/man/bundle-update.1 +394 -0
  126. data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +3 -3
  127. data/bundler/lib/bundler/man/bundle-viz.1 +39 -0
  128. data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
  129. data/bundler/lib/bundler/man/bundle.1 +136 -0
  130. data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +2 -2
  131. data/bundler/lib/bundler/man/gemfile.5 +686 -0
  132. data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +16 -20
  133. data/bundler/lib/bundler/man/index.txt +25 -0
  134. data/bundler/lib/bundler/match_platform.rb +1 -1
  135. data/bundler/lib/bundler/mirror.rb +5 -5
  136. data/bundler/lib/bundler/plugin.rb +75 -36
  137. data/bundler/lib/bundler/plugin/api.rb +1 -1
  138. data/bundler/lib/bundler/plugin/api/source.rb +12 -7
  139. data/bundler/lib/bundler/plugin/dsl.rb +1 -1
  140. data/bundler/lib/bundler/plugin/index.rb +24 -4
  141. data/bundler/lib/bundler/plugin/installer.rb +33 -22
  142. data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
  143. data/bundler/lib/bundler/plugin/source_list.rb +5 -1
  144. data/bundler/lib/bundler/psyched_yaml.rb +0 -15
  145. data/bundler/lib/bundler/remote_specification.rb +5 -4
  146. data/bundler/lib/bundler/resolver.rb +191 -87
  147. data/bundler/lib/bundler/resolver/spec_group.rb +76 -48
  148. data/bundler/lib/bundler/retry.rb +3 -3
  149. data/bundler/lib/bundler/ruby_version.rb +5 -20
  150. data/bundler/lib/bundler/rubygems_ext.rb +76 -72
  151. data/bundler/lib/bundler/rubygems_gem_installer.rb +47 -13
  152. data/bundler/lib/bundler/rubygems_integration.rb +159 -444
  153. data/bundler/lib/bundler/runtime.rb +6 -23
  154. data/bundler/lib/bundler/settings.rb +67 -93
  155. data/bundler/lib/bundler/setup.rb +11 -12
  156. data/bundler/lib/bundler/shared_helpers.rb +54 -80
  157. data/bundler/lib/bundler/similarity_detector.rb +3 -3
  158. data/bundler/lib/bundler/source.rb +12 -6
  159. data/bundler/lib/bundler/source/git.rb +47 -38
  160. data/bundler/lib/bundler/source/git/git_proxy.rb +101 -102
  161. data/bundler/lib/bundler/source/metadata.rb +7 -6
  162. data/bundler/lib/bundler/source/path.rb +20 -11
  163. data/bundler/lib/bundler/source/path/installer.rb +10 -10
  164. data/bundler/lib/bundler/source/rubygems.rb +56 -29
  165. data/bundler/lib/bundler/source/rubygems/remote.rb +3 -4
  166. data/bundler/lib/bundler/source_list.rb +32 -30
  167. data/bundler/lib/bundler/spec_set.rb +37 -25
  168. data/bundler/lib/bundler/stub_specification.rb +40 -34
  169. data/bundler/lib/bundler/templates/Executable.bundler +23 -14
  170. data/bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
  171. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  172. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +16 -2
  173. data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -5
  174. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +19 -5
  175. data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
  176. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
  177. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
  178. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
  179. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
  180. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
  181. data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  182. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +18 -31
  183. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
  184. data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  185. data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  186. data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
  187. data/bundler/lib/bundler/templates/newgem/test/minitest/test_helper.rb.tt +6 -0
  188. data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  189. data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  190. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -1
  191. data/bundler/lib/bundler/ui.rb +3 -3
  192. data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
  193. data/bundler/lib/bundler/ui/shell.rb +7 -11
  194. data/bundler/lib/bundler/uri_credentials_filter.rb +10 -4
  195. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +161 -0
  196. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +66 -0
  197. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +176 -0
  198. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
  199. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +273 -147
  200. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +5 -6
  201. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +7 -0
  202. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +36 -4
  203. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
  204. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
  205. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
  206. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
  207. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +6 -6
  208. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
  209. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +3 -3
  210. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +39 -11
  211. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +4 -4
  212. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  213. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +11 -0
  214. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +53 -51
  215. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +2 -2
  216. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +302 -462
  217. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +40 -0
  218. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +53 -0
  219. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
  220. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +16 -9
  221. data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +28 -13
  222. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +1 -1
  223. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +3 -2
  224. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +7 -17
  225. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +20 -9
  226. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +19 -8
  227. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +63 -43
  228. data/bundler/lib/bundler/vendor/thor/lib/thor/command.rb +21 -14
  229. data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +78 -0
  230. data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +3 -3
  231. data/bundler/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -0
  232. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor.rb +2 -2
  233. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +1 -1
  234. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +6 -6
  235. data/bundler/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
  236. data/bundler/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
  237. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +7 -3
  238. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +20 -7
  239. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +21 -5
  240. data/bundler/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +1 -0
  241. data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +15 -14
  242. data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +4 -4
  243. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +65 -8
  244. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +10 -2
  245. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +3 -3
  246. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +18 -2
  247. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  248. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
  249. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +104 -0
  250. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +744 -0
  251. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +94 -0
  252. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
  253. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1568 -0
  254. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +88 -0
  255. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
  256. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
  257. data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +21 -0
  258. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +294 -0
  259. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +546 -0
  260. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +125 -0
  261. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
  262. data/bundler/lib/bundler/vendored_fileutils.rb +1 -6
  263. data/bundler/lib/bundler/vendored_molinillo.rb +1 -1
  264. data/bundler/lib/bundler/vendored_persistent.rb +7 -12
  265. data/bundler/lib/bundler/vendored_thor.rb +2 -2
  266. data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
  267. data/bundler/lib/bundler/vendored_uri.rb +4 -0
  268. data/bundler/lib/bundler/version.rb +1 -20
  269. data/bundler/lib/bundler/version_ranges.rb +51 -5
  270. data/bundler/lib/bundler/vlad.rb +2 -2
  271. data/bundler/lib/bundler/worker.rb +2 -4
  272. data/bundler/lib/bundler/yaml_serializer.rb +3 -4
  273. data/lib/rubygems.rb +198 -222
  274. data/lib/rubygems/available_set.rb +4 -5
  275. data/lib/rubygems/basic_specification.rb +32 -19
  276. data/lib/rubygems/bundler_version_finder.rb +19 -9
  277. data/lib/rubygems/command.rb +73 -21
  278. data/lib/rubygems/command_manager.rb +5 -12
  279. data/lib/rubygems/commands/build_command.rb +51 -18
  280. data/lib/rubygems/commands/cert_command.rb +2 -11
  281. data/lib/rubygems/commands/check_command.rb +0 -2
  282. data/lib/rubygems/commands/cleanup_command.rb +17 -13
  283. data/lib/rubygems/commands/contents_command.rb +7 -9
  284. data/lib/rubygems/commands/dependency_command.rb +9 -10
  285. data/lib/rubygems/commands/environment_command.rb +1 -6
  286. data/lib/rubygems/commands/fetch_command.rb +2 -4
  287. data/lib/rubygems/commands/generate_index_command.rb +3 -2
  288. data/lib/rubygems/commands/help_command.rb +4 -4
  289. data/lib/rubygems/commands/info_command.rb +9 -4
  290. data/lib/rubygems/commands/install_command.rb +12 -54
  291. data/lib/rubygems/commands/list_command.rb +8 -7
  292. data/lib/rubygems/commands/lock_command.rb +3 -5
  293. data/lib/rubygems/commands/mirror_command.rb +0 -1
  294. data/lib/rubygems/commands/open_command.rb +1 -4
  295. data/lib/rubygems/commands/outdated_command.rb +0 -1
  296. data/lib/rubygems/commands/owner_command.rb +10 -10
  297. data/lib/rubygems/commands/pristine_command.rb +13 -9
  298. data/lib/rubygems/commands/push_command.rb +12 -51
  299. data/lib/rubygems/commands/query_command.rb +14 -330
  300. data/lib/rubygems/commands/rdoc_command.rb +0 -1
  301. data/lib/rubygems/commands/search_command.rb +7 -7
  302. data/lib/rubygems/commands/server_command.rb +3 -1
  303. data/lib/rubygems/commands/setup_command.rb +143 -101
  304. data/lib/rubygems/commands/signin_command.rb +0 -1
  305. data/lib/rubygems/commands/signout_command.rb +0 -2
  306. data/lib/rubygems/commands/sources_command.rb +22 -6
  307. data/lib/rubygems/commands/specification_command.rb +8 -3
  308. data/lib/rubygems/commands/stale_command.rb +1 -1
  309. data/lib/rubygems/commands/uninstall_command.rb +2 -3
  310. data/lib/rubygems/commands/unpack_command.rb +3 -32
  311. data/lib/rubygems/commands/update_command.rb +73 -28
  312. data/lib/rubygems/commands/which_command.rb +0 -1
  313. data/lib/rubygems/commands/yank_command.rb +10 -7
  314. data/lib/rubygems/compatibility.rb +4 -4
  315. data/lib/rubygems/config_file.rb +48 -27
  316. data/lib/rubygems/core_ext/kernel_gem.rb +7 -6
  317. data/lib/rubygems/core_ext/kernel_require.rb +44 -6
  318. data/lib/rubygems/core_ext/kernel_warn.rb +22 -13
  319. data/lib/rubygems/core_ext/tcpsocket_init.rb +52 -0
  320. data/lib/rubygems/defaults.rb +110 -23
  321. data/lib/rubygems/dependency.rb +28 -14
  322. data/lib/rubygems/dependency_installer.rb +11 -166
  323. data/lib/rubygems/dependency_list.rb +17 -18
  324. data/lib/rubygems/deprecate.rb +51 -6
  325. data/lib/rubygems/doctor.rb +4 -4
  326. data/lib/rubygems/errors.rb +5 -7
  327. data/lib/rubygems/exceptions.rb +2 -24
  328. data/lib/rubygems/ext.rb +6 -6
  329. data/lib/rubygems/ext/build_error.rb +2 -0
  330. data/lib/rubygems/ext/builder.rb +45 -82
  331. data/lib/rubygems/ext/cmake_builder.rb +6 -7
  332. data/lib/rubygems/ext/configure_builder.rb +5 -8
  333. data/lib/rubygems/ext/ext_conf_builder.rb +27 -23
  334. data/lib/rubygems/ext/rake_builder.rb +4 -6
  335. data/lib/rubygems/gem_runner.rb +3 -10
  336. data/lib/rubygems/gemcutter_utilities.rb +111 -37
  337. data/lib/rubygems/indexer.rb +9 -26
  338. data/lib/rubygems/install_update_options.rb +7 -7
  339. data/lib/rubygems/installer.rb +91 -98
  340. data/lib/rubygems/installer_test_case.rb +104 -42
  341. data/lib/rubygems/installer_uninstaller_utils.rb +29 -0
  342. data/lib/rubygems/local_remote_options.rb +1 -1
  343. data/lib/rubygems/mock_gem_ui.rb +1 -4
  344. data/lib/rubygems/name_tuple.rb +4 -7
  345. data/lib/rubygems/openssl.rb +7 -0
  346. data/lib/rubygems/package.rb +49 -32
  347. data/lib/rubygems/package/digest_io.rb +0 -2
  348. data/lib/rubygems/package/file_source.rb +0 -2
  349. data/lib/rubygems/package/io_source.rb +0 -2
  350. data/lib/rubygems/package/old.rb +1 -3
  351. data/lib/rubygems/package/tar_header.rb +4 -6
  352. data/lib/rubygems/package/tar_reader.rb +15 -12
  353. data/lib/rubygems/package/tar_reader/entry.rb +0 -3
  354. data/lib/rubygems/package/tar_test_case.rb +2 -4
  355. data/lib/rubygems/package/tar_writer.rb +6 -16
  356. data/lib/rubygems/package_task.rb +1 -7
  357. data/lib/rubygems/path_support.rb +2 -2
  358. data/lib/rubygems/platform.rb +22 -16
  359. data/lib/rubygems/query_utils.rb +353 -0
  360. data/lib/rubygems/rdoc.rb +0 -12
  361. data/lib/rubygems/remote_fetcher.rb +33 -59
  362. data/lib/rubygems/request.rb +11 -14
  363. data/lib/rubygems/request/connection_pools.rb +3 -7
  364. data/lib/rubygems/request/http_pool.rb +0 -1
  365. data/lib/rubygems/request_set.rb +10 -23
  366. data/lib/rubygems/request_set/gem_dependency_api.rb +9 -11
  367. data/lib/rubygems/request_set/lockfile.rb +13 -12
  368. data/lib/rubygems/request_set/lockfile/parser.rb +2 -2
  369. data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -1
  370. data/lib/rubygems/requirement.rb +36 -35
  371. data/lib/rubygems/resolver.rb +20 -16
  372. data/lib/rubygems/resolver/activation_request.rb +27 -51
  373. data/lib/rubygems/resolver/api_set.rb +31 -24
  374. data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
  375. data/lib/rubygems/resolver/api_specification.rb +24 -10
  376. data/lib/rubygems/resolver/best_set.rb +4 -6
  377. data/lib/rubygems/resolver/composed_set.rb +3 -5
  378. data/lib/rubygems/resolver/conflict.rb +2 -9
  379. data/lib/rubygems/resolver/current_set.rb +0 -2
  380. data/lib/rubygems/resolver/dependency_request.rb +1 -3
  381. data/lib/rubygems/resolver/git_set.rb +0 -2
  382. data/lib/rubygems/resolver/git_specification.rb +0 -2
  383. data/lib/rubygems/resolver/index_set.rb +1 -3
  384. data/lib/rubygems/resolver/index_specification.rb +32 -2
  385. data/lib/rubygems/resolver/installed_specification.rb +0 -2
  386. data/lib/rubygems/resolver/installer_set.rb +63 -16
  387. data/lib/rubygems/resolver/local_specification.rb +0 -2
  388. data/lib/rubygems/resolver/lock_set.rb +3 -5
  389. data/lib/rubygems/resolver/lock_specification.rb +2 -4
  390. data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
  391. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
  392. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +8 -0
  393. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +39 -6
  394. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
  395. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
  396. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
  397. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
  398. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
  399. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
  400. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
  401. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
  402. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +51 -12
  403. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +76 -8
  404. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
  405. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +12 -0
  406. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
  407. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +510 -165
  408. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
  409. data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
  410. data/lib/rubygems/resolver/requirement_list.rb +0 -1
  411. data/lib/rubygems/resolver/set.rb +0 -2
  412. data/lib/rubygems/resolver/source_set.rb +0 -2
  413. data/lib/rubygems/resolver/spec_specification.rb +14 -2
  414. data/lib/rubygems/resolver/specification.rb +13 -2
  415. data/lib/rubygems/resolver/vendor_set.rb +0 -2
  416. data/lib/rubygems/resolver/vendor_specification.rb +0 -2
  417. data/lib/rubygems/s3_uri_signer.rb +15 -13
  418. data/lib/rubygems/safe_yaml.rb +4 -4
  419. data/lib/rubygems/security.rb +27 -34
  420. data/lib/rubygems/security/policy.rb +4 -8
  421. data/lib/rubygems/security/signer.rb +8 -9
  422. data/lib/rubygems/security/trust_dir.rb +1 -3
  423. data/lib/rubygems/server.rb +20 -16
  424. data/lib/rubygems/source.rb +30 -13
  425. data/lib/rubygems/source/git.rb +7 -8
  426. data/lib/rubygems/source/installed.rb +0 -2
  427. data/lib/rubygems/source/local.rb +2 -4
  428. data/lib/rubygems/source/lock.rb +0 -2
  429. data/lib/rubygems/source/specific_file.rb +0 -2
  430. data/lib/rubygems/source/vendor.rb +0 -2
  431. data/lib/rubygems/source_list.rb +6 -6
  432. data/lib/rubygems/spec_fetcher.rb +22 -34
  433. data/lib/rubygems/specification.rb +207 -278
  434. data/lib/rubygems/specification_policy.rb +135 -57
  435. data/{bundler/lib/bundler/ssl_certs/index.rubygems.org → lib/rubygems/ssl_certs/rubygems.org}/GlobalSignRootCA.pem +0 -0
  436. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
  437. data/lib/rubygems/stub_specification.rb +4 -5
  438. data/lib/rubygems/test_case.rb +221 -341
  439. data/lib/rubygems/test_utilities.rb +22 -18
  440. data/lib/rubygems/text.rb +2 -3
  441. data/lib/rubygems/uninstaller.rb +49 -30
  442. data/lib/rubygems/uri_formatter.rb +2 -4
  443. data/lib/rubygems/uri_parser.rb +34 -0
  444. data/lib/rubygems/uri_parsing.rb +23 -0
  445. data/lib/rubygems/user_interaction.rb +3 -20
  446. data/lib/rubygems/util.rb +20 -44
  447. data/lib/rubygems/util/licenses.rb +400 -400
  448. data/lib/rubygems/validator.rb +9 -31
  449. data/lib/rubygems/version.rb +29 -21
  450. data/lib/rubygems/version_option.rb +6 -0
  451. data/rubygems-update.gemspec +4 -11
  452. data/setup.rb +2 -7
  453. data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
  454. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  455. data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
  456. data/test/rubygems/rubygems_plugin.rb +0 -2
  457. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
  458. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
  459. data/test/rubygems/test_bundled_ca.rb +42 -45
  460. data/test/rubygems/test_config.rb +0 -2
  461. data/test/rubygems/test_deprecate.rb +41 -5
  462. data/test/rubygems/test_gem.rb +405 -236
  463. data/test/rubygems/test_gem_available_set.rb +5 -6
  464. data/test/rubygems/test_gem_bundler_version_finder.rb +20 -2
  465. data/test/rubygems/test_gem_command.rb +144 -9
  466. data/test/rubygems/test_gem_command_manager.rb +40 -17
  467. data/test/rubygems/test_gem_commands_build_command.rb +386 -13
  468. data/test/rubygems/test_gem_commands_cert_command.rb +18 -6
  469. data/test/rubygems/test_gem_commands_check_command.rb +0 -2
  470. data/test/rubygems/test_gem_commands_cleanup_command.rb +35 -10
  471. data/test/rubygems/test_gem_commands_contents_command.rb +50 -19
  472. data/test/rubygems/test_gem_commands_dependency_command.rb +1 -3
  473. data/test/rubygems/test_gem_commands_environment_command.rb +21 -33
  474. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
  475. data/test/rubygems/test_gem_commands_generate_index_command.rb +32 -2
  476. data/test/rubygems/test_gem_commands_help_command.rb +16 -8
  477. data/test/rubygems/test_gem_commands_info_command.rb +6 -7
  478. data/test/rubygems/test_gem_commands_install_command.rb +368 -34
  479. data/test/rubygems/test_gem_commands_list_command.rb +0 -2
  480. data/test/rubygems/test_gem_commands_lock_command.rb +0 -2
  481. data/test/rubygems/test_gem_commands_mirror.rb +1 -2
  482. data/test/rubygems/test_gem_commands_open_command.rb +4 -6
  483. data/test/rubygems/test_gem_commands_outdated_command.rb +18 -1
  484. data/test/rubygems/test_gem_commands_owner_command.rb +62 -9
  485. data/test/rubygems/test_gem_commands_pristine_command.rb +148 -16
  486. data/test/rubygems/test_gem_commands_push_command.rb +94 -21
  487. data/test/rubygems/test_gem_commands_query_command.rb +35 -10
  488. data/test/rubygems/test_gem_commands_search_command.rb +0 -2
  489. data/test/rubygems/test_gem_commands_server_command.rb +6 -4
  490. data/test/rubygems/test_gem_commands_setup_command.rb +228 -128
  491. data/test/rubygems/test_gem_commands_signin_command.rb +36 -11
  492. data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
  493. data/test/rubygems/test_gem_commands_sources_command.rb +193 -9
  494. data/test/rubygems/test_gem_commands_specification_command.rb +46 -20
  495. data/test/rubygems/test_gem_commands_stale_command.rb +0 -2
  496. data/test/rubygems/test_gem_commands_uninstall_command.rb +108 -52
  497. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
  498. data/test/rubygems/test_gem_commands_update_command.rb +201 -29
  499. data/test/rubygems/test_gem_commands_which_command.rb +3 -5
  500. data/test/rubygems/test_gem_commands_yank_command.rb +86 -5
  501. data/test/rubygems/test_gem_config_file.rb +25 -13
  502. data/test/rubygems/test_gem_dependency.rb +6 -2
  503. data/test/rubygems/test_gem_dependency_installer.rb +169 -252
  504. data/test/rubygems/test_gem_dependency_list.rb +31 -26
  505. data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -3
  506. data/test/rubygems/test_gem_doctor.rb +28 -2
  507. data/test/rubygems/test_gem_ext_builder.rb +51 -44
  508. data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -23
  509. data/test/rubygems/test_gem_ext_configure_builder.rb +6 -14
  510. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +21 -29
  511. data/test/rubygems/test_gem_ext_rake_builder.rb +39 -22
  512. data/test/rubygems/test_gem_gem_runner.rb +47 -2
  513. data/test/rubygems/test_gem_gemcutter_utilities.rb +16 -13
  514. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
  515. data/test/rubygems/test_gem_indexer.rb +40 -55
  516. data/test/rubygems/test_gem_install_update_options.rb +45 -21
  517. data/test/rubygems/test_gem_installer.rb +661 -338
  518. data/test/rubygems/test_gem_local_remote_options.rb +0 -2
  519. data/test/rubygems/test_gem_name_tuple.rb +0 -2
  520. data/test/rubygems/test_gem_package.rb +132 -45
  521. data/test/rubygems/test_gem_package_old.rb +56 -55
  522. data/test/rubygems/test_gem_package_tar_header.rb +18 -1
  523. data/test/rubygems/test_gem_package_tar_reader.rb +0 -2
  524. data/test/rubygems/test_gem_package_tar_reader_entry.rb +6 -7
  525. data/test/rubygems/test_gem_package_tar_writer.rb +20 -12
  526. data/test/rubygems/test_gem_package_task.rb +46 -13
  527. data/test/rubygems/test_gem_path_support.rb +17 -13
  528. data/test/rubygems/test_gem_platform.rb +74 -7
  529. data/test/rubygems/test_gem_rdoc.rb +0 -1
  530. data/test/rubygems/test_gem_remote_fetcher.rb +223 -209
  531. data/test/rubygems/test_gem_request.rb +30 -19
  532. data/test/rubygems/test_gem_request_connection_pools.rb +2 -2
  533. data/test/rubygems/test_gem_request_set.rb +104 -29
  534. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +4 -6
  535. data/test/rubygems/test_gem_request_set_lockfile.rb +4 -5
  536. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -10
  537. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -118
  538. data/test/rubygems/test_gem_requirement.rb +50 -4
  539. data/test/rubygems/test_gem_resolver.rb +73 -31
  540. data/test/rubygems/test_gem_resolver_activation_request.rb +3 -34
  541. data/test/rubygems/test_gem_resolver_api_set.rb +60 -59
  542. data/test/rubygems/test_gem_resolver_api_specification.rb +3 -5
  543. data/test/rubygems/test_gem_resolver_best_set.rb +27 -6
  544. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -2
  545. data/test/rubygems/test_gem_resolver_conflict.rb +1 -7
  546. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -2
  547. data/test/rubygems/test_gem_resolver_git_set.rb +0 -2
  548. data/test/rubygems/test_gem_resolver_git_specification.rb +1 -2
  549. data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
  550. data/test/rubygems/test_gem_resolver_index_specification.rb +7 -4
  551. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -3
  552. data/test/rubygems/test_gem_resolver_installer_set.rb +10 -10
  553. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -2
  554. data/test/rubygems/test_gem_resolver_lock_set.rb +3 -5
  555. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -2
  556. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -2
  557. data/test/rubygems/test_gem_resolver_specification.rb +0 -2
  558. data/test/rubygems/test_gem_resolver_vendor_set.rb +1 -3
  559. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -2
  560. data/test/rubygems/test_gem_security.rb +27 -25
  561. data/test/rubygems/test_gem_security_policy.rb +7 -12
  562. data/test/rubygems/test_gem_security_signer.rb +11 -12
  563. data/test/rubygems/test_gem_security_trust_dir.rb +4 -6
  564. data/test/rubygems/test_gem_server.rb +13 -12
  565. data/test/rubygems/test_gem_silent_ui.rb +0 -1
  566. data/test/rubygems/test_gem_source.rb +32 -17
  567. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -1
  568. data/test/rubygems/test_gem_source_git.rb +12 -18
  569. data/test/rubygems/test_gem_source_installed.rb +11 -13
  570. data/test/rubygems/test_gem_source_list.rb +1 -1
  571. data/test/rubygems/test_gem_source_local.rb +8 -9
  572. data/test/rubygems/test_gem_source_lock.rb +17 -19
  573. data/test/rubygems/test_gem_source_specific_file.rb +9 -10
  574. data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
  575. data/test/rubygems/test_gem_source_vendor.rb +7 -9
  576. data/test/rubygems/test_gem_spec_fetcher.rb +11 -4
  577. data/test/rubygems/test_gem_specification.rb +363 -245
  578. data/test/rubygems/test_gem_stream_ui.rb +3 -1
  579. data/test/rubygems/test_gem_stub_specification.rb +6 -7
  580. data/test/rubygems/test_gem_text.rb +1 -2
  581. data/test/rubygems/test_gem_uninstaller.rb +165 -22
  582. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -2
  583. data/test/rubygems/test_gem_uri_formatter.rb +0 -2
  584. data/test/rubygems/test_gem_util.rb +17 -15
  585. data/test/rubygems/test_gem_validator.rb +4 -7
  586. data/test/rubygems/test_gem_version.rb +23 -10
  587. data/test/rubygems/test_gem_version_option.rb +1 -3
  588. data/test/rubygems/test_kernel.rb +25 -9
  589. data/test/rubygems/test_project_sanity.rb +20 -0
  590. data/test/rubygems/test_remote_fetch_error.rb +1 -2
  591. data/test/rubygems/test_require.rb +394 -56
  592. data/test/test_changelog_generator.rb +17 -0
  593. metadata +109 -155
  594. data/.rubocop.yml +0 -67
  595. data/.travis.yml +0 -38
  596. data/appveyor.yml +0 -43
  597. data/bundler/CODE_OF_CONDUCT.md +0 -42
  598. data/bundler/CONTRIBUTING.md +0 -17
  599. data/bundler/exe/bundle_ruby +0 -60
  600. data/bundler/lib/bundler/cli/package.rb +0 -49
  601. data/bundler/lib/bundler/compatibility_guard.rb +0 -14
  602. data/bundler/lib/bundler/gem_remote_fetcher.rb +0 -43
  603. data/bundler/lib/bundler/ssl_certs/certificate_manager.rb +0 -66
  604. data/bundler/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  605. data/bundler/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
  606. data/bundler/lib/bundler/templates/newgem/test/test_helper.rb.tt +0 -4
  607. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
  608. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +0 -27
  609. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb +0 -129
  610. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb +0 -12
  611. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb +0 -129
  612. data/lib/rubygems/source_local.rb +0 -7
  613. data/lib/rubygems/source_specific_file.rb +0 -6
  614. data/lib/rubygems/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +0 -21
  615. data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  616. data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
  617. data/lib/ubygems.rb +0 -14
  618. data/util/CL2notes +0 -55
  619. data/util/ci +0 -82
  620. data/util/cops/deprecations.rb +0 -52
  621. data/util/create_certs.rb +0 -171
  622. data/util/create_certs.sh +0 -27
  623. data/util/create_encrypted_key.rb +0 -16
  624. data/util/generate_spdx_license_list.rb +0 -61
  625. data/util/patch_with_prs.rb +0 -77
  626. data/util/rubocop +0 -8
  627. data/util/update_bundled_ca_certificates.rb +0 -139
  628. data/util/update_changelog.rb +0 -67
@@ -5,16 +5,21 @@ module Bundler
5
5
  class Metadata < Source
6
6
  def specs
7
7
  @specs ||= Index.build do |idx|
8
- idx << Gem::Specification.new("ruby\0", RubyVersion.system.to_gem_version_with_patchlevel)
9
- idx << Gem::Specification.new("rubygems\0", Gem::VERSION)
8
+ idx << Gem::Specification.new("Ruby\0", RubyVersion.system.to_gem_version_with_patchlevel)
9
+ idx << Gem::Specification.new("RubyGems\0", Gem::VERSION) do |s|
10
+ s.required_rubygems_version = Gem::Requirement.default
11
+ end
10
12
 
11
13
  idx << Gem::Specification.new do |s|
12
14
  s.name = "bundler"
13
15
  s.version = VERSION
16
+ s.license = "MIT"
14
17
  s.platform = Gem::Platform::RUBY
15
18
  s.source = self
16
19
  s.authors = ["bundler team"]
17
20
  s.bindir = "exe"
21
+ s.homepage = "https://bundler.io"
22
+ s.summary = "The best way to manage your application's dependencies"
18
23
  s.executables = %w[bundle]
19
24
  # can't point to the actual gemspec or else the require paths will be wrong
20
25
  s.loaded_from = File.expand_path("..", __FILE__)
@@ -28,10 +33,6 @@ module Bundler
28
33
  end
29
34
  end
30
35
 
31
- def cached!; end
32
-
33
- def remote!; end
34
-
35
36
  def options
36
37
  {}
37
38
  end
@@ -3,7 +3,7 @@
3
3
  module Bundler
4
4
  class Source
5
5
  class Path < Source
6
- autoload :Installer, "bundler/source/path/installer"
6
+ autoload :Installer, File.expand_path("path/installer", __dir__)
7
7
 
8
8
  attr_reader :path, :options, :root_path, :original_path
9
9
  attr_writer :name
@@ -20,11 +20,16 @@ module Bundler
20
20
  @allow_cached = false
21
21
  @allow_remote = false
22
22
 
23
- @root_path = options["root_path"] || Bundler.root
23
+ @root_path = options["root_path"] || root
24
24
 
25
25
  if options["path"]
26
26
  @path = Pathname.new(options["path"])
27
- @path = expand(@path) unless @path.relative?
27
+ expanded_path = expand(@path)
28
+ @path = if @path.relative?
29
+ expanded_path.relative_path_from(root_path.expand_path)
30
+ else
31
+ expanded_path
32
+ end
28
33
  end
29
34
 
30
35
  @name = options["name"]
@@ -120,14 +125,18 @@ module Bundler
120
125
  @expanded_original_path ||= expand(original_path)
121
126
  end
122
127
 
123
- private
128
+ private
124
129
 
125
130
  def expanded_path
126
131
  @expanded_path ||= expand(path)
127
132
  end
128
133
 
129
134
  def expand(somepath)
130
- somepath.expand_path(root_path)
135
+ if Bundler.current_ruby.jruby? # TODO: Unify when https://github.com/rubygems/bundler/issues/7598 fixed upstream and all supported jrubies include the fix
136
+ somepath.expand_path(root_path).expand_path
137
+ else
138
+ somepath.expand_path(root_path)
139
+ end
131
140
  rescue ArgumentError => e
132
141
  Bundler.ui.debug(e)
133
142
  raise PathError, "There was an error while trying to use the path " \
@@ -136,7 +145,7 @@ module Bundler
136
145
 
137
146
  def lockfile_path
138
147
  return relative_path(original_path) if original_path.absolute?
139
- expand(original_path).relative_path_from(Bundler.root)
148
+ expand(original_path).relative_path_from(root)
140
149
  end
141
150
 
142
151
  def app_cache_path(custom_path = nil)
@@ -162,7 +171,7 @@ module Bundler
162
171
 
163
172
  if File.directory?(expanded_path)
164
173
  # We sort depth-first since `<<` will override the earlier-found specs
165
- Dir["#{expanded_path}/#{@glob}"].sort_by {|p| -p.split(File::SEPARATOR).size }.each do |file|
174
+ Gem::Util.glob_files_in_dir(@glob, expanded_path).sort_by {|p| -p.split(File::SEPARATOR).size }.each do |file|
166
175
  next unless spec = load_gemspec(file)
167
176
  spec.source = self
168
177
 
@@ -191,10 +200,10 @@ module Bundler
191
200
  else
192
201
  message = String.new("The path `#{expanded_path}` ")
193
202
  message << if File.exist?(expanded_path)
194
- "is not a directory."
195
- else
196
- "does not exist."
197
- end
203
+ "is not a directory."
204
+ else
205
+ "does not exist."
206
+ end
198
207
  raise PathError, message
199
208
  end
200
209
 
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "../../rubygems_gem_installer"
4
+
3
5
  module Bundler
4
6
  class Source
5
7
  class Path
@@ -26,23 +28,21 @@ module Bundler
26
28
  end
27
29
 
28
30
  def post_install
29
- SharedHelpers.chdir(@gem_dir) do
30
- run_hooks(:pre_install)
31
+ run_hooks(:pre_install)
31
32
 
32
- unless @disable_extensions
33
- build_extensions
34
- run_hooks(:post_build)
35
- end
33
+ unless @disable_extensions
34
+ build_extensions
35
+ run_hooks(:post_build)
36
+ end
36
37
 
37
- generate_bin unless spec.executables.nil? || spec.executables.empty?
38
+ generate_bin unless spec.executables.nil? || spec.executables.empty?
38
39
 
39
- run_hooks(:post_install)
40
- end
40
+ run_hooks(:post_install)
41
41
  ensure
42
42
  Bundler.rm_rf(@tmp_dir) if Bundler.requires_sudo?
43
43
  end
44
44
 
45
- private
45
+ private
46
46
 
47
47
  def generate_bin
48
48
  super
@@ -1,12 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "uri"
4
3
  require "rubygems/user_interaction"
5
4
 
6
5
  module Bundler
7
6
  class Source
8
7
  class Rubygems < Source
9
- autoload :Remote, "bundler/source/rubygems/remote"
8
+ autoload :Remote, File.expand_path("rubygems/remote", __dir__)
10
9
 
11
10
  # Use the API when installing less than X gems
12
11
  API_REQUEST_LIMIT = 500
@@ -21,17 +20,29 @@ module Bundler
21
20
  @dependency_names = []
22
21
  @allow_remote = false
23
22
  @allow_cached = false
23
+ @allow_local = options["allow_local"] || false
24
24
  @caches = [cache_path, *Bundler.rubygems.gem_cache]
25
25
 
26
- Array(options["remotes"] || []).reverse_each {|r| add_remote(r) }
26
+ Array(options["remotes"]).reverse_each {|r| add_remote(r) }
27
+ end
28
+
29
+ def local!
30
+ return if @allow_local
31
+
32
+ @specs = nil
33
+ @allow_local = true
27
34
  end
28
35
 
29
36
  def remote!
37
+ return if @allow_remote
38
+
30
39
  @specs = nil
31
40
  @allow_remote = true
32
41
  end
33
42
 
34
43
  def cached!
44
+ return if @allow_cached
45
+
35
46
  @specs = nil
36
47
  @allow_cached = true
37
48
  end
@@ -50,8 +61,12 @@ module Bundler
50
61
  o.is_a?(Rubygems) && (o.credless_remotes - credless_remotes).empty?
51
62
  end
52
63
 
64
+ def disable_multisource?
65
+ @remotes.size <= 1
66
+ end
67
+
53
68
  def can_lock?(spec)
54
- return super if Bundler.feature_flag.lockfile_uses_separate_rubygems_sources?
69
+ return super if disable_multisource?
55
70
  spec.source.is_a?(Rubygems)
56
71
  end
57
72
 
@@ -88,7 +103,7 @@ module Bundler
88
103
  # small_idx.use large_idx.
89
104
  idx = @allow_remote ? remote_specs.dup : Index.new
90
105
  idx.use(cached_specs, :override_dupes) if @allow_cached || @allow_remote
91
- idx.use(installed_specs, :override_dupes)
106
+ idx.use(installed_specs, :override_dupes) if @allow_local
92
107
  idx
93
108
  end
94
109
  end
@@ -106,7 +121,7 @@ module Bundler
106
121
  end
107
122
  end
108
123
 
109
- if installed?(spec) && !force
124
+ if (installed?(spec) || Plugin.installed?(spec.name)) && !force
110
125
  print_using_message "Using #{version_message(spec)}"
111
126
  return nil # no post-install message
112
127
  end
@@ -120,8 +135,14 @@ module Bundler
120
135
  uris.uniq!
121
136
  Installer.ambiguous_gems << [spec.name, *uris] if uris.length > 1
122
137
 
123
- s = Bundler.rubygems.spec_from_gem(fetch_gem(spec), Bundler.settings["trust-policy"])
124
- spec.__swap__(s)
138
+ path = fetch_gem(spec)
139
+ begin
140
+ s = Bundler.rubygems.spec_from_gem(path, Bundler.settings["trust-policy"])
141
+ spec.__swap__(s)
142
+ rescue StandardError
143
+ Bundler.rm_rf(path)
144
+ raise
145
+ end
125
146
  end
126
147
 
127
148
  unless Bundler.settings[:no_install]
@@ -140,20 +161,19 @@ module Bundler
140
161
 
141
162
  Bundler.mkdir_p bin_path, :no_sudo => true unless spec.executables.empty? || Bundler.rubygems.provides?(">= 2.7.5")
142
163
 
143
- installed_spec = nil
144
- Bundler.rubygems.preserve_paths do
145
- installed_spec = Bundler::RubyGemsGemInstaller.at(
146
- path,
147
- :install_dir => install_path.to_s,
148
- :bin_dir => bin_path.to_s,
149
- :ignore_dependencies => true,
150
- :wrappers => true,
151
- :env_shebang => true,
152
- :build_args => opts[:build_args],
153
- :bundler_expected_checksum => spec.respond_to?(:checksum) && spec.checksum,
154
- :bundler_extension_cache_path => extension_cache_path(spec)
155
- ).install
156
- end
164
+ require_relative "../rubygems_gem_installer"
165
+
166
+ installed_spec = Bundler::RubyGemsGemInstaller.at(
167
+ path,
168
+ :install_dir => install_path.to_s,
169
+ :bin_dir => bin_path.to_s,
170
+ :ignore_dependencies => true,
171
+ :wrappers => true,
172
+ :env_shebang => true,
173
+ :build_args => opts[:build_args],
174
+ :bundler_expected_checksum => spec.respond_to?(:checksum) && spec.checksum,
175
+ :bundler_extension_cache_path => extension_cache_path(spec)
176
+ ).install
157
177
  spec.full_gem_path = installed_spec.full_gem_path
158
178
 
159
179
  # SUDO HAX
@@ -289,7 +309,7 @@ module Bundler
289
309
  names
290
310
  end
291
311
 
292
- protected
312
+ protected
293
313
 
294
314
  def credless_remotes
295
315
  remotes.map(&method(:suppress_configured_credentials))
@@ -322,9 +342,10 @@ module Bundler
322
342
  def normalize_uri(uri)
323
343
  uri = uri.to_s
324
344
  uri = "#{uri}/" unless uri =~ %r{/$}
325
- uri = URI(uri)
345
+ require_relative "../vendored_uri"
346
+ uri = Bundler::URI(uri)
326
347
  raise ArgumentError, "The source must be an absolute URI. For example:\n" \
327
- "source 'https://rubygems.org'" if !uri.absolute? || (uri.is_a?(URI::HTTP) && uri.host.nil?)
348
+ "source 'https://rubygems.org'" if !uri.absolute? || (uri.is_a?(Bundler::URI::HTTP) && uri.host.nil?)
328
349
  uri
329
350
  end
330
351
 
@@ -348,7 +369,6 @@ module Bundler
348
369
  def installed_specs
349
370
  @installed_specs ||= Index.build do |idx|
350
371
  Bundler.rubygems.all_specs.reverse_each do |spec|
351
- next if spec.name == "bundler"
352
372
  spec.source = self
353
373
  if Bundler.rubygems.spec_missing_extensions?(spec, false)
354
374
  Bundler.ui.debug "Source #{self} is ignoring #{spec} because it is missing extensions"
@@ -361,7 +381,7 @@ module Bundler
361
381
 
362
382
  def cached_specs
363
383
  @cached_specs ||= begin
364
- idx = installed_specs.dup
384
+ idx = @allow_local ? installed_specs.dup : Index.new
365
385
 
366
386
  Dir["#{cache_path}/*.gem"].each do |gemfile|
367
387
  next if gemfile =~ /^bundler\-[\d\.]+?\.gem/
@@ -462,7 +482,7 @@ module Bundler
462
482
  Bundler.app_cache
463
483
  end
464
484
 
465
- private
485
+ private
466
486
 
467
487
  # Checks if the requested spec exists in the global cache. If it does,
468
488
  # we copy it to the download path, and if it does not, we download it.
@@ -484,8 +504,15 @@ module Bundler
484
504
  uri = spec.remote.uri
485
505
  Bundler.ui.confirm("Fetching #{version_message(spec)}")
486
506
  rubygems_local_path = Bundler.rubygems.download_gem(spec, uri, download_path)
507
+
508
+ # older rubygems return varying file:// variants depending on version
509
+ rubygems_local_path = rubygems_local_path.gsub(/\Afile:/, "") unless Bundler.rubygems.provides?(">= 3.2.0.rc.2")
510
+ rubygems_local_path = rubygems_local_path.gsub(%r{\A//}, "") if Bundler.rubygems.provides?("< 3.1.0")
511
+
487
512
  if rubygems_local_path != local_path
488
- FileUtils.mv(rubygems_local_path, local_path)
513
+ SharedHelpers.filesystem_access(local_path) do
514
+ FileUtils.mv(rubygems_local_path, local_path)
515
+ end
489
516
  end
490
517
  cache_globally(spec, local_path)
491
518
  end
@@ -25,8 +25,7 @@ module Bundler
25
25
 
26
26
  cache_uri = original_uri || uri
27
27
 
28
- # URI::File of Ruby 2.6 returns empty string when given "file://".
29
- host = defined?(URI::File) && cache_uri.is_a?(URI::File) ? nil : cache_uri.host
28
+ host = cache_uri.to_s.start_with?("file://") ? nil : cache_uri.host
30
29
 
31
30
  uri_parts = [host, cache_uri.user, cache_uri.port, cache_uri.path]
32
31
  uri_digest = SharedHelpers.digest(:MD5).hexdigest(uri_parts.compact.join("."))
@@ -40,7 +39,7 @@ module Bundler
40
39
  "rubygems remote at #{anonymized_uri}"
41
40
  end
42
41
 
43
- private
42
+ private
44
43
 
45
44
  def apply_auth(uri, auth)
46
45
  if auth && uri.userinfo.nil?
@@ -49,7 +48,7 @@ module Bundler
49
48
  end
50
49
 
51
50
  uri
52
- rescue URI::InvalidComponentError
51
+ rescue Bundler::URI::InvalidComponentError
53
52
  error_message = "Please CGI escape your usernames and passwords before " \
54
53
  "setting them for authentication."
55
54
  raise HTTPError.new(error_message)
@@ -5,24 +5,40 @@ module Bundler
5
5
  attr_reader :path_sources,
6
6
  :git_sources,
7
7
  :plugin_sources,
8
- :global_rubygems_source,
8
+ :global_path_source,
9
9
  :metadata_source
10
10
 
11
+ def global_rubygems_source
12
+ @global_rubygems_source ||= rubygems_aggregate_class.new("allow_local" => true)
13
+ end
14
+
11
15
  def initialize
12
16
  @path_sources = []
13
17
  @git_sources = []
14
18
  @plugin_sources = []
15
19
  @global_rubygems_source = nil
16
- @rubygems_aggregate = rubygems_aggregate_class.new
20
+ @global_path_source = nil
17
21
  @rubygems_sources = []
18
22
  @metadata_source = Source::Metadata.new
23
+
24
+ @disable_multisource = true
25
+ end
26
+
27
+ def disable_multisource?
28
+ @disable_multisource
29
+ end
30
+
31
+ def merged_gem_lockfile_sections!
32
+ @disable_multisource = false
19
33
  end
20
34
 
21
35
  def add_path_source(options = {})
22
36
  if options["gemspec"]
23
37
  add_source_to_list Source::Gemspec.new(options), path_sources
24
38
  else
25
- add_source_to_list Source::Path.new(options), path_sources
39
+ path_source = add_source_to_list Source::Path.new(options), path_sources
40
+ @global_path_source ||= path_source if options["global"]
41
+ path_source
26
42
  end
27
43
  end
28
44
 
@@ -41,27 +57,20 @@ module Bundler
41
57
  end
42
58
 
43
59
  def global_rubygems_source=(uri)
44
- if Bundler.feature_flag.lockfile_uses_separate_rubygems_sources?
45
- @global_rubygems_source ||= rubygems_aggregate_class.new("remotes" => uri)
46
- end
47
- add_rubygems_remote(uri)
60
+ @global_rubygems_source ||= rubygems_aggregate_class.new("remotes" => uri, "allow_local" => true)
48
61
  end
49
62
 
50
63
  def add_rubygems_remote(uri)
51
- if Bundler.feature_flag.lockfile_uses_separate_rubygems_sources?
52
- return if Bundler.feature_flag.disable_multisource?
53
- raise InvalidOption, "`lockfile_uses_separate_rubygems_sources` cannot be set without `disable_multisource` being set"
54
- end
55
- @rubygems_aggregate.add_remote(uri)
56
- @rubygems_aggregate
64
+ global_rubygems_source.add_remote(uri)
65
+ global_rubygems_source
57
66
  end
58
67
 
59
68
  def default_source
60
- global_rubygems_source || @rubygems_aggregate
69
+ global_path_source || global_rubygems_source
61
70
  end
62
71
 
63
72
  def rubygems_sources
64
- @rubygems_sources + [default_source]
73
+ @rubygems_sources + [global_rubygems_source]
65
74
  end
66
75
 
67
76
  def rubygems_remotes
@@ -77,12 +86,10 @@ module Bundler
77
86
  end
78
87
 
79
88
  def lock_sources
80
- if Bundler.feature_flag.lockfile_uses_separate_rubygems_sources?
81
- [[default_source], @rubygems_sources, git_sources, path_sources, plugin_sources].map do |sources|
82
- sources.sort_by(&:to_s)
83
- end.flatten(1)
89
+ lock_sources = (path_sources + git_sources + plugin_sources).sort_by(&:to_s)
90
+ if disable_multisource?
91
+ lock_sources + rubygems_sources.sort_by(&:to_s)
84
92
  else
85
- lock_sources = (path_sources + git_sources + plugin_sources).sort_by(&:to_s)
86
93
  lock_sources << combine_rubygems_sources
87
94
  end
88
95
  end
@@ -97,12 +104,11 @@ module Bundler
97
104
  end
98
105
  end
99
106
 
100
- replacement_rubygems = !Bundler.feature_flag.lockfile_uses_separate_rubygems_sources? &&
107
+ replacement_rubygems = !disable_multisource? &&
101
108
  replacement_sources.detect {|s| s.is_a?(Source::Rubygems) }
102
- @rubygems_aggregate = replacement_rubygems if replacement_rubygems
109
+ @global_rubygems_source = replacement_rubygems if replacement_rubygems
103
110
 
104
111
  return true if !equal_sources?(lock_sources, replacement_sources) && !equivalent_sources?(lock_sources, replacement_sources)
105
- return true if replacement_rubygems && rubygems_remotes.to_set != replacement_rubygems.remotes.to_set
106
112
 
107
113
  false
108
114
  end
@@ -115,11 +121,7 @@ module Bundler
115
121
  all_sources.each(&:remote!)
116
122
  end
117
123
 
118
- def rubygems_primary_remotes
119
- @rubygems_aggregate.remotes
120
- end
121
-
122
- private
124
+ private
123
125
 
124
126
  def rubygems_aggregate_class
125
127
  Source::Rubygems
@@ -150,13 +152,13 @@ module Bundler
150
152
  if source.uri =~ /^git\:/
151
153
  Bundler.ui.warn "The git source `#{source.uri}` uses the `git` protocol, " \
152
154
  "which transmits data without encryption. Disable this warning with " \
153
- "`bundle config git.allow_insecure true`, or switch to the `https` " \
155
+ "`bundle config set --local git.allow_insecure true`, or switch to the `https` " \
154
156
  "protocol to keep your data secure."
155
157
  end
156
158
  end
157
159
 
158
160
  def equal_sources?(lock_sources, replacement_sources)
159
- lock_sources.to_set == replacement_sources.to_set
161
+ lock_sources.sort_by(&:to_s) == replacement_sources.sort_by(&:to_s)
160
162
  end
161
163
 
162
164
  def equal_source?(source, other_source)