rubygems-update 3.1.6 → 3.4.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (784) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5619 -0
  3. data/CODE_OF_CONDUCT.md +55 -19
  4. data/CONTRIBUTING.md +97 -27
  5. data/Manifest.txt +185 -143
  6. data/POLICIES.md +70 -27
  7. data/README.md +29 -14
  8. data/UPGRADING.md +5 -81
  9. data/bin/gem +2 -10
  10. data/bin/update_rubygems +5 -5
  11. data/bundler/CHANGELOG.md +2605 -1431
  12. data/bundler/README.md +9 -14
  13. data/bundler/UPGRADING.md +27 -34
  14. data/bundler/bundler.gemspec +10 -13
  15. data/bundler/exe/bundle +7 -8
  16. data/bundler/exe/bundler +1 -1
  17. data/bundler/lib/bundler/.document +1 -0
  18. data/bundler/lib/bundler/build_metadata.rb +4 -12
  19. data/bundler/lib/bundler/cli/add.rb +2 -2
  20. data/bundler/lib/bundler/cli/binstubs.rb +11 -3
  21. data/bundler/lib/bundler/cli/cache.rb +3 -8
  22. data/bundler/lib/bundler/cli/check.rb +5 -3
  23. data/bundler/lib/bundler/cli/clean.rb +1 -1
  24. data/bundler/lib/bundler/cli/common.rb +32 -3
  25. data/bundler/lib/bundler/cli/config.rb +10 -1
  26. data/bundler/lib/bundler/cli/console.rb +3 -3
  27. data/bundler/lib/bundler/cli/doctor.rb +23 -6
  28. data/bundler/lib/bundler/cli/exec.rb +5 -10
  29. data/bundler/lib/bundler/cli/fund.rb +36 -0
  30. data/bundler/lib/bundler/cli/gem.rb +258 -45
  31. data/bundler/lib/bundler/cli/info.rb +38 -6
  32. data/bundler/lib/bundler/cli/init.rb +7 -3
  33. data/bundler/lib/bundler/cli/inject.rb +1 -1
  34. data/bundler/lib/bundler/cli/install.rb +27 -57
  35. data/bundler/lib/bundler/cli/issue.rb +5 -4
  36. data/bundler/lib/bundler/cli/list.rb +19 -11
  37. data/bundler/lib/bundler/cli/lock.rb +11 -4
  38. data/bundler/lib/bundler/cli/open.rb +7 -6
  39. data/bundler/lib/bundler/cli/outdated.rb +106 -79
  40. data/bundler/lib/bundler/cli/platform.rb +2 -2
  41. data/bundler/lib/bundler/cli/plugin.rb +10 -0
  42. data/bundler/lib/bundler/cli/pristine.rb +5 -0
  43. data/bundler/lib/bundler/cli/remove.rb +1 -2
  44. data/bundler/lib/bundler/cli/show.rb +2 -2
  45. data/bundler/lib/bundler/cli/update.rb +20 -9
  46. data/bundler/lib/bundler/cli/viz.rb +1 -1
  47. data/bundler/lib/bundler/cli.rb +151 -85
  48. data/bundler/lib/bundler/compact_index_client/cache.rb +7 -24
  49. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
  50. data/bundler/lib/bundler/compact_index_client/updater.rb +56 -51
  51. data/bundler/lib/bundler/compact_index_client.rb +3 -9
  52. data/bundler/lib/bundler/constants.rb +1 -1
  53. data/bundler/lib/bundler/current_ruby.rb +19 -6
  54. data/bundler/lib/bundler/definition.rb +353 -440
  55. data/bundler/lib/bundler/dependency.rb +23 -77
  56. data/bundler/lib/bundler/digest.rb +71 -0
  57. data/bundler/lib/bundler/dsl.rb +77 -85
  58. data/bundler/lib/bundler/endpoint_specification.rb +16 -14
  59. data/bundler/lib/bundler/env.rb +3 -3
  60. data/bundler/lib/bundler/environment_preserver.rb +32 -4
  61. data/bundler/lib/bundler/errors.rb +31 -14
  62. data/bundler/lib/bundler/feature_flag.rb +0 -9
  63. data/bundler/lib/bundler/fetcher/base.rb +7 -9
  64. data/bundler/lib/bundler/fetcher/compact_index.rb +20 -27
  65. data/bundler/lib/bundler/fetcher/dependency.rb +2 -6
  66. data/bundler/lib/bundler/fetcher/downloader.rb +11 -11
  67. data/bundler/lib/bundler/fetcher/index.rb +2 -30
  68. data/bundler/lib/bundler/fetcher.rb +26 -31
  69. data/bundler/lib/bundler/force_platform.rb +18 -0
  70. data/bundler/lib/bundler/friendly_errors.rb +45 -49
  71. data/bundler/lib/bundler/gem_helper.rb +53 -31
  72. data/bundler/lib/bundler/gem_helpers.rb +42 -24
  73. data/bundler/lib/bundler/gem_version_promoter.rb +54 -99
  74. data/bundler/lib/bundler/graph.rb +4 -4
  75. data/bundler/lib/bundler/index.rb +16 -54
  76. data/bundler/lib/bundler/injector.rb +41 -9
  77. data/bundler/lib/bundler/inline.rb +11 -22
  78. data/bundler/lib/bundler/installer/gem_installer.rb +19 -24
  79. data/bundler/lib/bundler/installer/parallel_installer.rb +34 -43
  80. data/bundler/lib/bundler/installer/standalone.rb +62 -11
  81. data/bundler/lib/bundler/installer.rb +43 -87
  82. data/bundler/lib/bundler/lazy_specification.rb +88 -51
  83. data/bundler/lib/bundler/lockfile_generator.rb +4 -4
  84. data/bundler/lib/bundler/lockfile_parser.rb +34 -59
  85. data/bundler/lib/bundler/man/.document +1 -0
  86. data/bundler/{man → lib/bundler/man}/bundle-add.1 +21 -5
  87. data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +16 -4
  88. data/bundler/{man → lib/bundler/man}/bundle-binstubs.1 +5 -3
  89. data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
  90. data/bundler/{man → lib/bundler/man}/bundle-cache.1 +7 -1
  91. data/bundler/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +7 -0
  92. data/bundler/{man → lib/bundler/man}/bundle-check.1 +1 -1
  93. data/bundler/{man → lib/bundler/man}/bundle-clean.1 +2 -2
  94. data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +1 -1
  95. data/bundler/{man → lib/bundler/man}/bundle-config.1 +66 -48
  96. data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +75 -66
  97. data/bundler/lib/bundler/man/bundle-console.1 +53 -0
  98. data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
  99. data/bundler/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
  100. data/bundler/{man → lib/bundler/man}/bundle-exec.1 +6 -6
  101. data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +6 -6
  102. data/bundler/lib/bundler/man/bundle-gem.1 +105 -0
  103. data/bundler/lib/bundler/man/bundle-gem.1.ronn +117 -0
  104. data/bundler/lib/bundler/man/bundle-help.1 +13 -0
  105. data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
  106. data/bundler/{man → lib/bundler/man}/bundle-info.1 +1 -1
  107. data/bundler/{man → lib/bundler/man}/bundle-init.1 +5 -1
  108. data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +2 -0
  109. data/bundler/{man → lib/bundler/man}/bundle-inject.1 +5 -2
  110. data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +3 -1
  111. data/bundler/{man → lib/bundler/man}/bundle-install.1 +35 -33
  112. data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +33 -34
  113. data/bundler/{man → lib/bundler/man}/bundle-list.1 +7 -7
  114. data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
  115. data/bundler/{man → lib/bundler/man}/bundle-lock.1 +1 -1
  116. data/bundler/{man → lib/bundler/man}/bundle-open.1 +22 -2
  117. data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +9 -1
  118. data/bundler/{man → lib/bundler/man}/bundle-outdated.1 +3 -10
  119. data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +1 -10
  120. data/bundler/{man → lib/bundler/man}/bundle-platform.1 +16 -6
  121. data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +14 -7
  122. data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
  123. data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
  124. data/bundler/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
  125. data/bundler/{man → lib/bundler/man}/bundle-remove.1 +1 -1
  126. data/bundler/{man → lib/bundler/man}/bundle-show.1 +1 -1
  127. data/bundler/{man → lib/bundler/man}/bundle-update.1 +5 -5
  128. data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +5 -4
  129. data/bundler/lib/bundler/man/bundle-version.1 +35 -0
  130. data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
  131. data/bundler/{man → lib/bundler/man}/bundle-viz.1 +4 -1
  132. data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +2 -0
  133. data/bundler/{man → lib/bundler/man}/bundle.1 +15 -10
  134. data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +12 -7
  135. data/bundler/{man → lib/bundler/man}/gemfile.5 +120 -83
  136. data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +109 -88
  137. data/bundler/{man → lib/bundler/man}/index.txt +4 -0
  138. data/bundler/lib/bundler/match_metadata.rb +13 -0
  139. data/bundler/lib/bundler/match_platform.rb +0 -1
  140. data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
  141. data/bundler/lib/bundler/mirror.rb +7 -9
  142. data/bundler/lib/bundler/plugin/api/source.rb +25 -9
  143. data/bundler/lib/bundler/plugin/dsl.rb +1 -1
  144. data/bundler/lib/bundler/plugin/index.rb +17 -5
  145. data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
  146. data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -9
  147. data/bundler/lib/bundler/plugin/installer.rb +16 -13
  148. data/bundler/lib/bundler/plugin/source_list.rb +5 -1
  149. data/bundler/lib/bundler/plugin.rb +59 -12
  150. data/bundler/lib/bundler/process_lock.rb +1 -1
  151. data/bundler/lib/bundler/remote_specification.rb +12 -7
  152. data/bundler/lib/bundler/resolver/base.rb +109 -0
  153. data/bundler/lib/bundler/resolver/candidate.rb +94 -0
  154. data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
  155. data/bundler/lib/bundler/resolver/package.rb +72 -0
  156. data/bundler/lib/bundler/resolver/root.rb +25 -0
  157. data/bundler/lib/bundler/resolver/spec_group.rb +49 -74
  158. data/bundler/lib/bundler/resolver.rb +336 -344
  159. data/bundler/lib/bundler/retry.rb +2 -2
  160. data/bundler/lib/bundler/ruby_dsl.rb +1 -1
  161. data/bundler/lib/bundler/ruby_version.rb +6 -19
  162. data/bundler/lib/bundler/rubygems_ext.rb +231 -32
  163. data/bundler/lib/bundler/rubygems_gem_installer.rb +89 -16
  164. data/bundler/lib/bundler/rubygems_integration.rb +81 -167
  165. data/bundler/lib/bundler/runtime.rb +23 -31
  166. data/bundler/lib/bundler/self_manager.rb +168 -0
  167. data/bundler/lib/bundler/settings.rb +146 -73
  168. data/bundler/lib/bundler/setup.rb +5 -2
  169. data/bundler/lib/bundler/shared_helpers.rb +20 -35
  170. data/bundler/lib/bundler/similarity_detector.rb +1 -1
  171. data/bundler/lib/bundler/source/git/git_proxy.rb +263 -114
  172. data/bundler/lib/bundler/source/git.rb +64 -47
  173. data/bundler/lib/bundler/source/metadata.rb +3 -8
  174. data/bundler/lib/bundler/source/path/installer.rb +11 -32
  175. data/bundler/lib/bundler/source/path.rb +16 -10
  176. data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
  177. data/bundler/lib/bundler/source/rubygems.rb +167 -200
  178. data/bundler/lib/bundler/source/rubygems_aggregate.rb +68 -0
  179. data/bundler/lib/bundler/source.rb +25 -5
  180. data/bundler/lib/bundler/source_list.rb +112 -64
  181. data/bundler/lib/bundler/source_map.rb +71 -0
  182. data/bundler/lib/bundler/spec_set.rb +74 -61
  183. data/bundler/lib/bundler/stub_specification.rb +30 -10
  184. data/bundler/lib/bundler/templates/Executable +3 -5
  185. data/bundler/lib/bundler/templates/Executable.bundler +11 -16
  186. data/bundler/lib/bundler/templates/Executable.standalone +4 -4
  187. data/bundler/lib/bundler/templates/Gemfile +0 -2
  188. data/bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
  189. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  190. data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
  191. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +15 -1
  192. data/bundler/lib/bundler/templates/newgem/README.md.tt +13 -16
  193. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +43 -5
  194. data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
  195. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +25 -0
  196. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
  197. data/bundler/lib/bundler/templates/newgem/ext/newgem/{extconf.rb.tt → extconf-c.rb.tt} +2 -0
  198. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
  199. data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
  200. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +37 -0
  201. data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
  202. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +18 -0
  203. data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  204. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
  205. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +34 -18
  206. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
  207. data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
  208. data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  209. data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  210. data/bundler/lib/bundler/templates/newgem/standard.yml.tt +3 -0
  211. data/bundler/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
  212. data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/test_newgem.rb.tt} +3 -1
  213. data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  214. data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  215. data/bundler/lib/bundler/ui/shell.rb +37 -14
  216. data/bundler/lib/bundler/ui/silent.rb +21 -5
  217. data/bundler/lib/bundler/uri_credentials_filter.rb +3 -1
  218. data/bundler/lib/bundler/uri_normalizer.rb +23 -0
  219. data/bundler/lib/bundler/vendor/.document +1 -0
  220. data/bundler/lib/bundler/vendor/connection_pool/LICENSE +20 -0
  221. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +19 -21
  222. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  223. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +56 -0
  224. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +41 -74
  225. data/bundler/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
  226. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1350 -408
  227. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
  228. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +82 -189
  229. data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  230. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  231. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
  232. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  233. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
  234. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  235. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  236. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  237. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  238. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
  239. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  240. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  241. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
  242. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
  243. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +243 -0
  244. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  245. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  246. data/bundler/lib/bundler/vendor/thor/LICENSE.md +20 -0
  247. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
  248. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +9 -7
  249. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -2
  250. data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +7 -3
  251. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
  252. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +6 -0
  253. data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +10 -5
  254. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +5 -1
  255. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +28 -9
  256. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +28 -7
  257. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +5 -1
  258. data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
  259. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
  260. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  261. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +5 -13
  262. data/bundler/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
  263. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +452 -0
  264. data/bundler/lib/bundler/vendor/uri/LICENSE.txt +22 -0
  265. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +76 -91
  266. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
  267. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -2
  268. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +32 -13
  269. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -3
  270. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -2
  271. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +2 -2
  272. data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
  273. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -3
  274. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +14 -21
  275. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +11 -17
  276. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  277. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
  278. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
  279. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -3
  280. data/bundler/lib/bundler/vendored_persistent.rb +1 -40
  281. data/bundler/lib/bundler/{vendored_molinillo.rb → vendored_pub_grub.rb} +1 -1
  282. data/bundler/lib/bundler/vendored_tsort.rb +4 -0
  283. data/bundler/lib/bundler/version.rb +5 -1
  284. data/bundler/lib/bundler/worker.rb +25 -12
  285. data/bundler/lib/bundler/yaml_serializer.rb +1 -1
  286. data/bundler/lib/bundler.rb +98 -110
  287. data/hide_lib_for_update/note.txt +0 -4
  288. data/lib/rubygems/available_set.rb +7 -9
  289. data/lib/rubygems/basic_specification.rb +23 -21
  290. data/lib/rubygems/bundler_version_finder.rb +27 -54
  291. data/lib/rubygems/command.rb +63 -52
  292. data/lib/rubygems/command_manager.rb +36 -16
  293. data/lib/rubygems/commands/build_command.rb +50 -27
  294. data/lib/rubygems/commands/cert_command.rb +78 -75
  295. data/lib/rubygems/commands/check_command.rb +20 -22
  296. data/lib/rubygems/commands/cleanup_command.rb +30 -26
  297. data/lib/rubygems/commands/contents_command.rb +16 -18
  298. data/lib/rubygems/commands/dependency_command.rb +39 -51
  299. data/lib/rubygems/commands/environment_command.rb +11 -10
  300. data/lib/rubygems/commands/exec_command.rb +248 -0
  301. data/lib/rubygems/commands/fetch_command.rb +33 -16
  302. data/lib/rubygems/commands/generate_index_command.rb +17 -19
  303. data/lib/rubygems/commands/help_command.rb +9 -9
  304. data/lib/rubygems/commands/info_command.rb +10 -7
  305. data/lib/rubygems/commands/install_command.rb +36 -30
  306. data/lib/rubygems/commands/list_command.rb +9 -8
  307. data/lib/rubygems/commands/lock_command.rb +5 -7
  308. data/lib/rubygems/commands/mirror_command.rb +3 -5
  309. data/lib/rubygems/commands/open_command.rb +10 -14
  310. data/lib/rubygems/commands/outdated_command.rb +5 -7
  311. data/lib/rubygems/commands/owner_command.rb +26 -16
  312. data/lib/rubygems/commands/pristine_command.rb +70 -49
  313. data/lib/rubygems/commands/push_command.rb +22 -59
  314. data/lib/rubygems/commands/query_command.rb +21 -351
  315. data/lib/rubygems/commands/rdoc_command.rb +26 -27
  316. data/lib/rubygems/commands/search_command.rb +8 -8
  317. data/lib/rubygems/commands/server_command.rb +16 -77
  318. data/lib/rubygems/commands/setup_command.rb +255 -229
  319. data/lib/rubygems/commands/signin_command.rb +9 -11
  320. data/lib/rubygems/commands/signout_command.rb +7 -9
  321. data/lib/rubygems/commands/sources_command.rb +27 -25
  322. data/lib/rubygems/commands/specification_command.rb +25 -21
  323. data/lib/rubygems/commands/stale_command.rb +3 -5
  324. data/lib/rubygems/commands/uninstall_command.rb +44 -43
  325. data/lib/rubygems/commands/unpack_command.rb +14 -16
  326. data/lib/rubygems/commands/update_command.rb +126 -74
  327. data/lib/rubygems/commands/which_command.rb +7 -9
  328. data/lib/rubygems/commands/yank_command.rb +16 -19
  329. data/lib/rubygems/compatibility.rb +4 -2
  330. data/lib/rubygems/config_file.rb +75 -26
  331. data/lib/rubygems/core_ext/kernel_gem.rb +1 -6
  332. data/lib/rubygems/core_ext/kernel_require.rb +108 -112
  333. data/lib/rubygems/core_ext/kernel_warn.rb +31 -36
  334. data/lib/rubygems/core_ext/tcpsocket_init.rb +52 -0
  335. data/lib/rubygems/defaults.rb +124 -34
  336. data/lib/rubygems/dependency.rb +24 -22
  337. data/lib/rubygems/dependency_installer.rb +43 -115
  338. data/lib/rubygems/dependency_list.rb +13 -15
  339. data/lib/rubygems/deprecate.rb +102 -8
  340. data/lib/rubygems/doctor.rb +22 -22
  341. data/lib/rubygems/errors.rb +6 -21
  342. data/lib/rubygems/exceptions.rb +34 -37
  343. data/lib/rubygems/ext/build_error.rb +2 -0
  344. data/lib/rubygems/ext/builder.rb +64 -54
  345. data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +27 -0
  346. data/lib/rubygems/ext/cargo_builder.rb +360 -0
  347. data/lib/rubygems/ext/cmake_builder.rb +6 -9
  348. data/lib/rubygems/ext/configure_builder.rb +5 -8
  349. data/lib/rubygems/ext/ext_conf_builder.rb +43 -66
  350. data/lib/rubygems/ext/rake_builder.rb +7 -10
  351. data/lib/rubygems/ext.rb +7 -6
  352. data/lib/rubygems/gem_runner.rb +15 -26
  353. data/lib/rubygems/gemcutter_utilities.rb +161 -33
  354. data/lib/rubygems/indexer.rb +31 -50
  355. data/lib/rubygems/install_default_message.rb +2 -2
  356. data/lib/rubygems/install_message.rb +2 -2
  357. data/lib/rubygems/install_update_options.rb +73 -64
  358. data/lib/rubygems/installer.rb +199 -156
  359. data/lib/rubygems/installer_uninstaller_utils.rb +29 -0
  360. data/lib/rubygems/local_remote_options.rb +22 -24
  361. data/lib/rubygems/mock_gem_ui.rb +2 -8
  362. data/lib/rubygems/name_tuple.rb +9 -14
  363. data/lib/rubygems/openssl.rb +7 -0
  364. data/lib/rubygems/optparse/.document +1 -0
  365. data/lib/rubygems/optparse/COPYING +56 -0
  366. data/lib/rubygems/optparse/lib/optionparser.rb +2 -0
  367. data/lib/rubygems/optparse/lib/optparse/ac.rb +54 -0
  368. data/lib/rubygems/optparse/lib/optparse/date.rb +18 -0
  369. data/lib/rubygems/optparse/lib/optparse/kwargs.rb +22 -0
  370. data/lib/rubygems/optparse/lib/optparse/shellwords.rb +7 -0
  371. data/lib/rubygems/optparse/lib/optparse/time.rb +11 -0
  372. data/lib/rubygems/optparse/lib/optparse/uri.rb +7 -0
  373. data/lib/rubygems/optparse/lib/optparse/version.rb +71 -0
  374. data/lib/rubygems/optparse/lib/optparse.rb +2308 -0
  375. data/lib/rubygems/optparse.rb +3 -0
  376. data/lib/rubygems/package/digest_io.rb +0 -2
  377. data/lib/rubygems/package/file_source.rb +2 -4
  378. data/lib/rubygems/package/io_source.rb +4 -2
  379. data/lib/rubygems/package/old.rb +9 -11
  380. data/lib/rubygems/package/tar_header.rb +65 -67
  381. data/lib/rubygems/package/tar_reader/entry.rb +89 -11
  382. data/lib/rubygems/package/tar_reader.rb +1 -32
  383. data/lib/rubygems/package/tar_writer.rb +8 -18
  384. data/lib/rubygems/package.rb +109 -120
  385. data/lib/rubygems/package_task.rb +5 -11
  386. data/lib/rubygems/path_support.rb +2 -9
  387. data/lib/rubygems/platform.rb +113 -74
  388. data/lib/rubygems/psych_tree.rb +1 -3
  389. data/lib/rubygems/query_utils.rb +351 -0
  390. data/lib/rubygems/rdoc.rb +2 -14
  391. data/lib/rubygems/remote_fetcher.rb +48 -74
  392. data/lib/rubygems/request/connection_pools.rb +6 -10
  393. data/lib/rubygems/request/http_pool.rb +2 -4
  394. data/lib/rubygems/request/https_pool.rb +0 -2
  395. data/lib/rubygems/request.rb +26 -31
  396. data/lib/rubygems/request_set/gem_dependency_api.rb +127 -130
  397. data/lib/rubygems/request_set/lockfile/parser.rb +26 -28
  398. data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -7
  399. data/lib/rubygems/request_set/lockfile.rb +17 -21
  400. data/lib/rubygems/request_set.rb +27 -40
  401. data/lib/rubygems/requirement.rb +29 -49
  402. data/lib/rubygems/resolver/activation_request.rb +12 -6
  403. data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
  404. data/lib/rubygems/resolver/api_set.rb +32 -25
  405. data/lib/rubygems/resolver/api_specification.rb +29 -15
  406. data/lib/rubygems/resolver/best_set.rb +7 -9
  407. data/lib/rubygems/resolver/composed_set.rb +3 -5
  408. data/lib/rubygems/resolver/conflict.rb +12 -14
  409. data/lib/rubygems/resolver/current_set.rb +0 -2
  410. data/lib/rubygems/resolver/dependency_request.rb +3 -5
  411. data/lib/rubygems/resolver/git_set.rb +2 -4
  412. data/lib/rubygems/resolver/git_specification.rb +6 -8
  413. data/lib/rubygems/resolver/index_set.rb +4 -6
  414. data/lib/rubygems/resolver/index_specification.rb +38 -7
  415. data/lib/rubygems/resolver/installed_specification.rb +4 -6
  416. data/lib/rubygems/resolver/installer_set.rb +66 -24
  417. data/lib/rubygems/resolver/local_specification.rb +2 -4
  418. data/lib/rubygems/resolver/lock_set.rb +6 -8
  419. data/lib/rubygems/resolver/lock_specification.rb +4 -6
  420. data/lib/rubygems/resolver/molinillo/LICENSE +9 -0
  421. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
  422. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +8 -0
  423. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
  424. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
  425. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
  426. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
  427. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
  428. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
  429. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
  430. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
  431. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +51 -12
  432. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +42 -9
  433. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +82 -8
  434. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
  435. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +13 -1
  436. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
  437. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +510 -165
  438. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
  439. data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
  440. data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
  441. data/lib/rubygems/resolver/molinillo.rb +1 -1
  442. data/lib/rubygems/resolver/requirement_list.rb +0 -2
  443. data/lib/rubygems/resolver/set.rb +0 -3
  444. data/lib/rubygems/resolver/source_set.rb +0 -2
  445. data/lib/rubygems/resolver/spec_specification.rb +14 -2
  446. data/lib/rubygems/resolver/specification.rb +14 -4
  447. data/lib/rubygems/resolver/stats.rb +1 -3
  448. data/lib/rubygems/resolver/vendor_set.rb +1 -3
  449. data/lib/rubygems/resolver/vendor_specification.rb +3 -5
  450. data/lib/rubygems/resolver.rb +53 -51
  451. data/lib/rubygems/s3_uri_signer.rb +7 -15
  452. data/lib/rubygems/safe_yaml.rb +14 -16
  453. data/lib/rubygems/security/policies.rb +47 -47
  454. data/lib/rubygems/security/policy.rb +25 -29
  455. data/lib/rubygems/security/signer.rb +13 -16
  456. data/lib/rubygems/security/trust_dir.rb +5 -6
  457. data/lib/rubygems/security.rb +90 -69
  458. data/lib/rubygems/security_option.rb +7 -7
  459. data/lib/rubygems/source/git.rb +31 -31
  460. data/lib/rubygems/source/installed.rb +1 -3
  461. data/lib/rubygems/source/local.rb +4 -6
  462. data/lib/rubygems/source/lock.rb +0 -2
  463. data/lib/rubygems/source/specific_file.rb +1 -3
  464. data/lib/rubygems/source/vendor.rb +0 -2
  465. data/lib/rubygems/source.rb +44 -38
  466. data/lib/rubygems/source_list.rb +9 -16
  467. data/lib/rubygems/spec_fetcher.rb +49 -48
  468. data/lib/rubygems/specification.rb +382 -343
  469. data/lib/rubygems/specification_policy.rb +131 -61
  470. data/lib/rubygems/stub_specification.rb +24 -31
  471. data/lib/rubygems/text.rb +22 -21
  472. data/lib/rubygems/tsort/.document +1 -0
  473. data/lib/rubygems/tsort/LICENSE.txt +22 -0
  474. data/lib/rubygems/tsort/lib/tsort.rb +452 -0
  475. data/lib/rubygems/tsort.rb +3 -0
  476. data/lib/rubygems/uninstaller.rb +98 -45
  477. data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
  478. data/lib/rubygems/update_suggestion.rb +69 -0
  479. data/lib/rubygems/uri.rb +126 -0
  480. data/lib/rubygems/uri_formatter.rb +2 -3
  481. data/lib/rubygems/user_interaction.rb +43 -54
  482. data/lib/rubygems/util/licenses.rb +115 -10
  483. data/lib/rubygems/util/list.rb +0 -2
  484. data/lib/rubygems/util.rb +19 -17
  485. data/lib/rubygems/validator.rb +7 -9
  486. data/lib/rubygems/version.rb +31 -22
  487. data/lib/rubygems/version_option.rb +11 -5
  488. data/lib/rubygems.rb +213 -290
  489. data/rubygems-update.gemspec +5 -5
  490. data/setup.rb +11 -22
  491. data/test/rubygems/alternate_cert.pem +14 -14
  492. data/test/rubygems/alternate_cert_32.pem +15 -15
  493. data/test/rubygems/alternate_key.pem +25 -25
  494. data/test/rubygems/bundler_test_gem.rb +419 -0
  495. data/test/rubygems/child_cert.pem +15 -16
  496. data/test/rubygems/child_cert_32.pem +15 -16
  497. data/test/rubygems/child_key.pem +25 -25
  498. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  499. data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
  500. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  501. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  502. data/test/rubygems/encrypted_private_key.pem +26 -26
  503. data/test/rubygems/expired_cert.pem +15 -15
  504. data/test/rubygems/future_cert.pem +15 -15
  505. data/test/rubygems/future_cert_32.pem +15 -15
  506. data/test/rubygems/grandchild_cert.pem +15 -16
  507. data/test/rubygems/grandchild_cert_32.pem +15 -16
  508. data/test/rubygems/grandchild_key.pem +25 -25
  509. data/{lib/rubygems/test_case.rb → test/rubygems/helper.rb} +402 -327
  510. data/{lib → test}/rubygems/installer_test_case.rb +38 -24
  511. data/test/rubygems/invalid_issuer_cert.pem +16 -16
  512. data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
  513. data/test/rubygems/invalid_key.pem +25 -25
  514. data/test/rubygems/invalid_signer_cert.pem +15 -15
  515. data/test/rubygems/invalid_signer_cert_32.pem +15 -15
  516. data/test/rubygems/invalidchild_cert.pem +15 -16
  517. data/test/rubygems/invalidchild_cert_32.pem +15 -16
  518. data/test/rubygems/invalidchild_key.pem +25 -25
  519. data/{lib → test}/rubygems/package/tar_test_case.rb +51 -18
  520. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  521. data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
  522. data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
  523. data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
  524. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
  525. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
  526. data/test/rubygems/private_ec_key.pem +9 -0
  527. data/test/rubygems/private_key.pem +25 -25
  528. data/test/rubygems/public_cert.pem +16 -16
  529. data/test/rubygems/public_cert_32.pem +15 -15
  530. data/test/rubygems/public_key.pem +7 -7
  531. data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
  532. data/test/rubygems/rubygems_plugin.rb +2 -4
  533. data/test/rubygems/simple_gem.rb +1 -1
  534. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
  535. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +4 -6
  536. data/test/rubygems/test_bundled_ca.rb +43 -50
  537. data/test/rubygems/test_config.rb +5 -7
  538. data/test/rubygems/test_deprecate.rb +87 -10
  539. data/test/rubygems/test_exit.rb +17 -0
  540. data/test/rubygems/test_gem.rb +560 -826
  541. data/test/rubygems/test_gem_available_set.rb +24 -26
  542. data/test/rubygems/test_gem_bundler_version_finder.rb +40 -46
  543. data/test/rubygems/test_gem_command.rb +78 -49
  544. data/test/rubygems/test_gem_command_manager.rb +163 -35
  545. data/test/rubygems/test_gem_commands_build_command.rb +285 -57
  546. data/test/rubygems/test_gem_commands_cert_command.rb +180 -125
  547. data/test/rubygems/test_gem_commands_check_command.rb +9 -11
  548. data/test/rubygems/test_gem_commands_cleanup_command.rb +78 -69
  549. data/test/rubygems/test_gem_commands_contents_command.rb +73 -42
  550. data/test/rubygems/test_gem_commands_dependency_command.rb +38 -40
  551. data/test/rubygems/test_gem_commands_environment_command.rb +60 -38
  552. data/test/rubygems/test_gem_commands_exec_command.rb +851 -0
  553. data/test/rubygems/test_gem_commands_fetch_command.rb +163 -32
  554. data/test/rubygems/test_gem_commands_generate_index_command.rb +8 -14
  555. data/test/rubygems/test_gem_commands_help_command.rb +34 -16
  556. data/test/rubygems/test_gem_commands_info_command.rb +33 -9
  557. data/test/rubygems/test_gem_commands_install_command.rb +420 -198
  558. data/test/rubygems/test_gem_commands_list_command.rb +5 -7
  559. data/test/rubygems/test_gem_commands_lock_command.rb +11 -13
  560. data/test/rubygems/test_gem_commands_mirror.rb +3 -5
  561. data/test/rubygems/test_gem_commands_open_command.rb +16 -19
  562. data/test/rubygems/test_gem_commands_outdated_command.rb +23 -7
  563. data/test/rubygems/test_gem_commands_owner_command.rb +181 -46
  564. data/test/rubygems/test_gem_commands_pristine_command.rb +179 -99
  565. data/test/rubygems/test_gem_commands_push_command.rb +156 -67
  566. data/test/rubygems/test_gem_commands_query_command.rb +91 -91
  567. data/test/rubygems/test_gem_commands_search_command.rb +2 -4
  568. data/test/rubygems/test_gem_commands_server_command.rb +6 -50
  569. data/test/rubygems/test_gem_commands_setup_command.rb +285 -183
  570. data/test/rubygems/test_gem_commands_signin_command.rb +187 -28
  571. data/test/rubygems/test_gem_commands_signout_command.rb +3 -10
  572. data/test/rubygems/test_gem_commands_sources_command.rb +139 -32
  573. data/test/rubygems/test_gem_commands_specification_command.rb +81 -55
  574. data/test/rubygems/test_gem_commands_stale_command.rb +4 -6
  575. data/test/rubygems/test_gem_commands_uninstall_command.rb +102 -87
  576. data/test/rubygems/test_gem_commands_unpack_command.rb +32 -34
  577. data/test/rubygems/test_gem_commands_update_command.rb +341 -94
  578. data/test/rubygems/test_gem_commands_which_command.rb +12 -14
  579. data/test/rubygems/test_gem_commands_yank_command.rb +80 -44
  580. data/test/rubygems/test_gem_config_file.rb +114 -97
  581. data/test/rubygems/test_gem_dependency.rb +88 -86
  582. data/test/rubygems/test_gem_dependency_installer.rb +277 -391
  583. data/test/rubygems/test_gem_dependency_list.rb +57 -59
  584. data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -7
  585. data/test/rubygems/test_gem_doctor.rb +73 -47
  586. data/test/rubygems/test_gem_ext_builder.rb +115 -111
  587. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
  588. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +8 -0
  589. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +233 -0
  590. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +10 -0
  591. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +27 -0
  592. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +1 -0
  593. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +1 -0
  594. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +247 -0
  595. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +10 -0
  596. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +8 -0
  597. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +51 -0
  598. data/test/rubygems/test_gem_ext_cargo_builder.rb +166 -0
  599. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +33 -0
  600. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +60 -0
  601. data/test/rubygems/test_gem_ext_cmake_builder.rb +31 -38
  602. data/test/rubygems/test_gem_ext_configure_builder.rb +23 -39
  603. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +66 -82
  604. data/test/rubygems/test_gem_ext_rake_builder.rb +49 -32
  605. data/test/rubygems/test_gem_gem_runner.rb +57 -9
  606. data/test/rubygems/test_gem_gemcutter_utilities.rb +91 -76
  607. data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -6
  608. data/test/rubygems/test_gem_indexer.rb +100 -83
  609. data/test/rubygems/test_gem_install_update_options.rb +31 -21
  610. data/test/rubygems/test_gem_installer.rb +857 -484
  611. data/test/rubygems/test_gem_local_remote_options.rb +11 -13
  612. data/test/rubygems/test_gem_name_tuple.rb +4 -6
  613. data/test/rubygems/test_gem_package.rb +330 -305
  614. data/test/rubygems/test_gem_package_old.rb +18 -20
  615. data/test/rubygems/test_gem_package_tar_header.rb +69 -52
  616. data/test/rubygems/test_gem_package_tar_reader.rb +54 -9
  617. data/test/rubygems/test_gem_package_tar_reader_entry.rb +168 -25
  618. data/test/rubygems/test_gem_package_tar_writer.rb +96 -100
  619. data/test/rubygems/test_gem_package_task.rb +58 -25
  620. data/test/rubygems/test_gem_path_support.rb +15 -21
  621. data/test/rubygems/test_gem_platform.rb +388 -201
  622. data/test/rubygems/test_gem_rdoc.rb +19 -21
  623. data/test/rubygems/test_gem_remote_fetcher.rb +377 -338
  624. data/test/rubygems/test_gem_request.rb +114 -86
  625. data/test/rubygems/test_gem_request_connection_pools.rb +30 -34
  626. data/test/rubygems/test_gem_request_set.rb +124 -125
  627. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +227 -231
  628. data/test/rubygems/test_gem_request_set_lockfile.rb +93 -95
  629. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +69 -71
  630. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +136 -138
  631. data/test/rubygems/test_gem_requirement.rb +133 -54
  632. data/test/rubygems/test_gem_resolver.rb +182 -117
  633. data/test/rubygems/test_gem_resolver_activation_request.rb +6 -8
  634. data/test/rubygems/test_gem_resolver_api_set.rb +79 -78
  635. data/test/rubygems/test_gem_resolver_api_specification.rb +47 -49
  636. data/test/rubygems/test_gem_resolver_best_set.rb +43 -22
  637. data/test/rubygems/test_gem_resolver_composed_set.rb +1 -3
  638. data/test/rubygems/test_gem_resolver_conflict.rb +12 -14
  639. data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -17
  640. data/test/rubygems/test_gem_resolver_git_set.rb +22 -24
  641. data/test/rubygems/test_gem_resolver_git_specification.rb +22 -23
  642. data/test/rubygems/test_gem_resolver_index_set.rb +14 -16
  643. data/test/rubygems/test_gem_resolver_index_specification.rb +16 -18
  644. data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -7
  645. data/test/rubygems/test_gem_resolver_installer_set.rb +104 -44
  646. data/test/rubygems/test_gem_resolver_local_specification.rb +7 -9
  647. data/test/rubygems/test_gem_resolver_lock_set.rb +15 -17
  648. data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -19
  649. data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -3
  650. data/test/rubygems/test_gem_resolver_specification.rb +8 -12
  651. data/test/rubygems/test_gem_resolver_vendor_set.rb +9 -11
  652. data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -12
  653. data/test/rubygems/test_gem_security.rb +105 -79
  654. data/test/rubygems/test_gem_security_policy.rb +102 -107
  655. data/test/rubygems/test_gem_security_signer.rb +51 -53
  656. data/test/rubygems/test_gem_security_trust_dir.rb +14 -16
  657. data/test/rubygems/test_gem_silent_ui.rb +46 -42
  658. data/test/rubygems/test_gem_source.rb +53 -52
  659. data/test/rubygems/test_gem_source_fetch_problem.rb +16 -8
  660. data/test/rubygems/test_gem_source_git.rb +78 -72
  661. data/test/rubygems/test_gem_source_installed.rb +16 -18
  662. data/test/rubygems/test_gem_source_list.rb +5 -6
  663. data/test/rubygems/test_gem_source_local.rb +15 -17
  664. data/test/rubygems/test_gem_source_lock.rb +31 -33
  665. data/test/rubygems/test_gem_source_specific_file.rb +18 -20
  666. data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
  667. data/test/rubygems/test_gem_source_vendor.rb +13 -15
  668. data/test/rubygems/test_gem_spec_fetcher.rb +74 -67
  669. data/test/rubygems/test_gem_specification.rb +967 -1056
  670. data/test/rubygems/test_gem_stream_ui.rb +23 -23
  671. data/test/rubygems/test_gem_stub_specification.rb +39 -57
  672. data/test/rubygems/test_gem_text.rb +8 -4
  673. data/test/rubygems/test_gem_uninstaller.rb +234 -105
  674. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -5
  675. data/test/rubygems/test_gem_update_suggestion.rb +208 -0
  676. data/test/rubygems/test_gem_uri.rb +39 -0
  677. data/test/rubygems/test_gem_uri_formatter.rb +14 -16
  678. data/test/rubygems/test_gem_util.rb +37 -35
  679. data/test/rubygems/test_gem_validator.rb +10 -12
  680. data/test/rubygems/test_gem_version.rb +32 -32
  681. data/test/rubygems/test_gem_version_option.rb +16 -18
  682. data/test/rubygems/test_kernel.rb +47 -67
  683. data/test/rubygems/test_project_sanity.rb +8 -3
  684. data/test/rubygems/test_remote_fetch_error.rb +7 -9
  685. data/test/rubygems/test_require.rb +269 -182
  686. data/test/rubygems/test_rubygems.rb +74 -0
  687. data/{lib/rubygems/test_utilities.rb → test/rubygems/utilities.rb} +63 -50
  688. data/test/rubygems/wrong_key_cert.pem +15 -15
  689. data/test/rubygems/wrong_key_cert_32.pem +15 -15
  690. data/test/test_changelog_generator.rb +17 -0
  691. metadata +190 -173
  692. data/.bundle/config +0 -2
  693. data/.rubocop.yml +0 -91
  694. data/Gemfile +0 -8
  695. data/Gemfile.lock +0 -43
  696. data/History.txt +0 -4473
  697. data/Rakefile +0 -428
  698. data/bundler/CODE_OF_CONDUCT.md +0 -136
  699. data/bundler/lib/bundler/dep_proxy.rb +0 -48
  700. data/bundler/lib/bundler/gemdeps.rb +0 -29
  701. data/bundler/lib/bundler/psyched_yaml.rb +0 -37
  702. data/bundler/lib/bundler/templates/gems.rb +0 -8
  703. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
  704. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +0 -66
  705. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
  706. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
  707. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -81
  708. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
  709. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
  710. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
  711. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
  712. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
  713. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
  714. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
  715. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
  716. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -158
  717. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -223
  718. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -143
  719. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
  720. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -101
  721. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
  722. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -837
  723. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
  724. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
  725. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -12
  726. data/bundler/lib/bundler/version_ranges.rb +0 -122
  727. data/bundler/man/bundle-add.1.txt +0 -58
  728. data/bundler/man/bundle-binstubs.1.txt +0 -48
  729. data/bundler/man/bundle-cache.1.txt +0 -78
  730. data/bundler/man/bundle-check.1.txt +0 -33
  731. data/bundler/man/bundle-clean.1.txt +0 -26
  732. data/bundler/man/bundle-config.1.txt +0 -528
  733. data/bundler/man/bundle-doctor.1.txt +0 -44
  734. data/bundler/man/bundle-exec.1.txt +0 -178
  735. data/bundler/man/bundle-gem.1 +0 -80
  736. data/bundler/man/bundle-gem.1.txt +0 -91
  737. data/bundler/man/bundle-gem.ronn +0 -78
  738. data/bundler/man/bundle-info.1.txt +0 -21
  739. data/bundler/man/bundle-init.1.txt +0 -34
  740. data/bundler/man/bundle-inject.1.txt +0 -32
  741. data/bundler/man/bundle-install.1.txt +0 -401
  742. data/bundler/man/bundle-list.1.txt +0 -43
  743. data/bundler/man/bundle-lock.1.txt +0 -93
  744. data/bundler/man/bundle-open.1.txt +0 -29
  745. data/bundler/man/bundle-outdated.1.txt +0 -131
  746. data/bundler/man/bundle-platform.1.txt +0 -57
  747. data/bundler/man/bundle-pristine.1.txt +0 -44
  748. data/bundler/man/bundle-remove.1.txt +0 -34
  749. data/bundler/man/bundle-show.1.txt +0 -27
  750. data/bundler/man/bundle-update.1.txt +0 -390
  751. data/bundler/man/bundle-viz.1.txt +0 -39
  752. data/bundler/man/bundle.1.txt +0 -116
  753. data/bundler/man/gemfile.5.txt +0 -649
  754. data/lib/rubygems/psych_additions.rb +0 -10
  755. data/lib/rubygems/server.rb +0 -879
  756. data/lib/rubygems/source_local.rb +0 -7
  757. data/lib/rubygems/source_specific_file.rb +0 -6
  758. data/lib/rubygems/syck_hack.rb +0 -79
  759. data/lib/rubygems/uri_parser.rb +0 -36
  760. data/lib/rubygems/uri_parsing.rb +0 -23
  761. data/lib/ubygems.rb +0 -14
  762. data/test/rubygems/bogussources.rb +0 -9
  763. data/test/rubygems/data/null-type.gemspec.rz +0 -0
  764. data/test/rubygems/test_gem_server.rb +0 -612
  765. data/tmp/.keep +0 -0
  766. data/util/CL2notes +0 -55
  767. data/util/bisect +0 -10
  768. data/util/ci.sh +0 -62
  769. data/util/cops/deprecations.rb +0 -52
  770. data/util/create_certs.rb +0 -171
  771. data/util/create_certs.sh +0 -27
  772. data/util/create_encrypted_key.rb +0 -16
  773. data/util/generate_spdx_license_list.rb +0 -63
  774. data/util/patch_with_prs.rb +0 -77
  775. data/util/rubocop +0 -8
  776. data/util/update_bundled_ca_certificates.rb +0 -137
  777. data/util/update_changelog.rb +0 -64
  778. /data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
  779. /data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
  780. /data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
  781. /data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
  782. /data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
  783. /data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
  784. /data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
data/bundler/README.md CHANGED
@@ -1,7 +1,5 @@
1
- [![Version ](https://img.shields.io/gem/v/bundler.svg?style=flat)](https://rubygems.org/gems/bundler)
2
- [![Build Status](https://img.shields.io/travis/bundler/bundler/master.svg?style=flat)](https://travis-ci.org/bundler/bundler)
3
- [![Inline docs ](https://inch-ci.org/github/bundler/bundler.svg?style=flat)](https://inch-ci.org/github/bundler/bundler)
4
- [![Slack ](https://bundler-slackin.herokuapp.com/badge.svg)](https://bundler-slackin.herokuapp.com)
1
+ [![Version ](https://img.shields.io/gem/v/bundler.svg?style=flat)](https://rubygems.org/gems/bundler)
2
+ [![Slack ](https://bundler-slackin.herokuapp.com/badge.svg)](https://bundler-slackin.herokuapp.com)
5
3
 
6
4
  # Bundler: a gem to bundle gems
7
5
 
@@ -34,31 +32,28 @@ See [bundler.io](https://bundler.io) for the full documentation.
34
32
 
35
33
  For help with common problems, see [TROUBLESHOOTING](doc/TROUBLESHOOTING.md).
36
34
 
37
- Still stuck? Try [filing an issue](doc/contributing/ISSUES.md).
35
+ Still stuck? Try [filing an issue](https://github.com/rubygems/rubygems/issues/new?labels=Bundler&template=bundler-related-issue.md).
38
36
 
39
37
  ### Other questions
40
38
 
41
39
  To see what has changed in recent versions of Bundler, see the [CHANGELOG](CHANGELOG.md).
42
40
 
43
- To get in touch with the Bundler core team and other Bundler users, please see [getting help](doc/contributing/GETTING_HELP.md).
41
+ To get in touch with the Bundler core team and other Bundler users, please join [the Bundler slack](https://slack.bundler.io).
44
42
 
45
43
  ### Contributing
46
44
 
47
- If you'd like to contribute to Bundler, that's awesome, and we <3 you. We've put together [the Bundler contributor guide](https://github.com/bundler/bundler/blob/master/doc/contributing/README.md) with all of the information you need to get started.
45
+ If you'd like to contribute to Bundler, that's awesome, and we <3 you. We've put together [the Bundler contributor guide](https://github.com/rubygems/rubygems/blob/master/bundler/doc/contributing/README.md) with all of the information you need to get started.
48
46
 
49
- If you'd like to request a substantial change to Bundler or to the Bundler documentation, refer to the [Bundler RFC process](https://github.com/bundler/rfcs) for more information.
50
-
51
- While some Bundler contributors are compensated by Ruby Together, the project maintainers make decisions independent of Ruby Together. As a project, we welcome contributions regardless of the author's affiliation with Ruby Together.
47
+ If you'd like to request a substantial change to Bundler or its documentation, refer to the [Bundler RFC process](https://github.com/rubygems/rfcs) for more information.
52
48
 
53
49
  ### Supporting
54
50
 
55
- <a href="https://rubytogether.org/"><img src="https://rubytogether.org/images/rubies.svg" width="150"></a><br>
56
- <a href="https://rubytogether.org/">Ruby Together</a> pays some Bundler maintainers for their ongoing work. As a grassroots initiative committed to supporting the critical Ruby infrastructure you rely on, Ruby Together is funded entirely by the Ruby community. Contribute today <a href="https://rubytogether.org/developers">as an individual</a> or (better yet) <a href="https://rubytogether.org/companies">as a company</a> to ensure that Bundler, RubyGems, and other shared tooling is around for years to come.
51
+ RubyGems is managed by [Ruby Central](https://rubycentral.org), a non-profit organization that supports the Ruby community through projects like this one, as well as [RubyConf](https://rubyconf.org), [RailsConf](https://railsconf.org), and [RubyGems.org](https://rubygems.org). You can support Ruby Central by attending or [sponsoring](sponsors@rubycentral.org) a conference, or by [joining as a supporting member](https://rubycentral.org/#/portal/signup).
57
52
 
58
53
  ### Code of Conduct
59
54
 
60
- Everyone interacting in the Bundler project's codebases, issue trackers, chat rooms, and mailing lists is expected to follow the [Bundler code of conduct](https://github.com/bundler/bundler/blob/master/CODE_OF_CONDUCT.md).
55
+ Everyone interacting in the Bundler project's codebases, issue trackers, chat rooms, and mailing lists is expected to follow the [Bundler code of conduct](https://github.com/rubygems/rubygems/blob/master/CODE_OF_CONDUCT.md).
61
56
 
62
57
  ### License
63
58
 
64
- Bundler is available under an [MIT License](https://github.com/bundler/bundler/blob/master/LICENSE.md).
59
+ Bundler is available under an [MIT License](https://github.com/rubygems/rubygems/blob/master/bundler/LICENSE.md).
data/bundler/UPGRADING.md CHANGED
@@ -4,13 +4,12 @@
4
4
 
5
5
  The following is a summary of the changes that we plan to introduce in Bundler
6
6
  3, why we will be making those changes, and what the deprecation process will
7
- look like. All these deprecations will be printed by default in the upcoming
8
- Bundler 2.1 release.
7
+ look like. All these deprecations are printed by default in the Bundler 2.1 release.
9
8
 
10
9
  If you don't want to deal with deprecations right now and want to toggle them
11
10
  off, you can do it through configuration. Set the `BUNDLE_SILENCE_DEPRECATIONS`
12
11
  environment variable to "true", or configure it through `bundle config` either
13
- globally through `bundle config set silence_deprecations true` command, or
12
+ globally through `bundle config set --global silence_deprecations true` command, or
14
13
  locally through `bundle config set --local silence_deprecations true`. From now
15
14
  on in this document we will assume that all three of these configuration options
16
15
  are available, but will only mention `bundle config set <option> <value>`.
@@ -22,18 +21,19 @@ We do understand that changing behaviour that have been existing for years can
22
21
  be annoying for old users, that's why we intend to make this process as smooth
23
22
  as possible for everyone.
24
23
 
25
- I'll be dividing the deprecations into three groups: CLI deprecations, DSL
26
- deprecations, and misc deprecations. Let's dive into each of them.
24
+ I'll be dividing the deprecations into four groups: CLI deprecations, Helper
25
+ deprecations, DSL deprecations, and misc deprecations. Let's dive into each of
26
+ them.
27
27
 
28
- #### CLI deprecations
28
+ ### CLI deprecations
29
29
 
30
30
  The CLI defines a set of commands and options that can be used by our users to
31
31
  create command lines that bundler can understand. There's a number of changes
32
- that we plan to make to this set of commands and options.
32
+ in the upcoming 3 version.
33
33
 
34
34
  * Flags passed to `bundle install` that relied on being remembered across invocations have been deprecated.
35
35
 
36
- In particular, the `--clean`, `--deployment`, `--frozen`, `--no-cache`,
36
+ In particular, the `--clean`, `--deployment`, `--frozen`,
37
37
  `--no-prune`, `--path`, `--shebang`, `--system`, `--without`, and `--with`
38
38
  options to `bundle install`.
39
39
 
@@ -51,7 +51,7 @@ that we plan to make to this set of commands and options.
51
51
  development and test gems. This magic will disappear from bundler 3, and
52
52
  you will explicitly need to configure it, either through environment
53
53
  variables, application configuration, or machine configuration. For example,
54
- with `bundle config set without development test`.
54
+ with `bundle config set --local without development test`.
55
55
 
56
56
  The removal of this kind of flag also applies to analogous commands, for
57
57
  example, to `bundle check --path`.
@@ -67,13 +67,12 @@ that we plan to make to this set of commands and options.
67
67
  This is the only bundler command requiring external dependencies, both an OS
68
68
  dependency (the `graphviz` package) and a gem dependency (the `ruby-graphviz`
69
69
  gem). Removing these dependencies will make development easier and it was also
70
- seen by the bundler team as an opportunity to develop a [bundler
71
- plugin](https://github.com/bundler/bundle-viz) that it's officially maintained
72
- by the bundler team, and that users can take as a reference to develop their
73
- own plugins. The plugin contains the same code as the old core command, the
74
- only difference being that the command is now implemented as `bundle graph`
75
- hich is much easier to understand. Have a look at the plugin's repo for more
76
- information about how to install and use the new plugin.
70
+ seen by the bundler team as an opportunity to develop a bundler plugin that
71
+ it's officially maintained by the bundler team, and that users can take as a
72
+ reference to develop their own plugins. The plugin will contain the same code
73
+ as the old core command, the only difference being that the command is now
74
+ implemented as `bundle graph` which is much easier to understand. However, the
75
+ details of the plugin are under discussion. See [#3333](https://github.com/rubygems/rubygems/issues/3333).
77
76
 
78
77
  * The `bundle console` will be removed and replaced with `bin/console`.
79
78
 
@@ -83,12 +82,6 @@ that we plan to make to this set of commands and options.
83
82
  in favor of a `bin/console` script created by `bundle gem` on gem generation
84
83
  that users can tweak to their needs.
85
84
 
86
- * The `bundle update` command will no longer update all gems, you'll need to pass `--all` to it.
87
-
88
- The bundler team considers that updating all gems at once should not be the
89
- main use case for this command, and that it's better to upgrade gems one at a
90
- time (or in groups of related gems). You can still upgrade all gems at once,
91
- but now you need the `--all` flag.
92
85
 
93
86
  * The `bundle install` command will no longer accept a `--binstubs` flag.
94
87
 
@@ -98,17 +91,8 @@ that we plan to make to this set of commands and options.
98
91
  hardly useful since most users will only use a subset of all the binstubs
99
92
  available to them. Also, it would force the introduction of a bunch of most
100
93
  likely unused files into source control. Because of this, binstubs now must
101
- must be created and checked into version control individually.
102
-
103
- * The `bundle config` command has a new subcommand-based interface.
94
+ be created and checked into version control individually.
104
95
 
105
- We believe the old interface where the kind of operation was guessed from the
106
- combination of flags and number of arguments being passed to the command was
107
- confusing. Instead we have introduced a compulsory subcommand argument that
108
- can be either `list`, `get`, `set` or `unset`. We believe this will make the
109
- `config` command much easier to interact with. The old interface is
110
- deprecated, but we are giving suggestions about the new commands that should
111
- be used along with the deprecation messages.
112
96
 
113
97
  * The `bundle inject` command is deprecated and replaced with `bundle add`.
114
98
 
@@ -117,7 +101,16 @@ that we plan to make to this set of commands and options.
117
101
  exactly the same in `bundle add`, so it should be easy to migrate to the new
118
102
  command.
119
103
 
120
- #### Helper deprecations
104
+ #### Cancelled CLI deprecations
105
+
106
+ These deprecations have been initially announced before, but the deprecations
107
+ were cancelled before the release of Bundler 2.1.0 in [rubygems/bundler#7475](https://github.com/rubygems/bundler/pull/7475).
108
+
109
+ * ~The `bundle update` command will no longer update all gems, you'll need to pass `--all` to it.~ (postponed)
110
+
111
+ * ~The `bundle config` command will no longer accept old subcommand-based interface before Bundler 2.1.~ (postponed)
112
+
113
+ ### Helper deprecations
121
114
 
122
115
  * `Bundler.clean_env`, `Bundler.with_clean_env`, `Bundler.clean_system`, and `Bundler.clean_exec` are deprecated.
123
116
 
@@ -223,7 +216,7 @@ unambiguously defined.
223
216
  the `capistrano-bundler` gem, and everyone using Capistrano 3 should be
224
217
  already using that instead. If for some reason, you are still using Capistrano
225
218
  2, feel free to copy the Capistrano tasks out of the Bundler 2 file
226
- `bundler/deployment.rb` and put them into your app.
219
+ `lib/bundler/deployment.rb` and put them into your app.
227
220
 
228
221
  In general, we don't want to maintain integrations for every deployment system
229
222
  out there, so that's why we are removing these.
@@ -22,25 +22,22 @@ Gem::Specification.new do |s|
22
22
  s.summary = "The best way to manage your application's dependencies"
23
23
  s.description = "Bundler manages an application's dependencies through its entire life, across many machines, systematically and repeatably"
24
24
 
25
- if s.respond_to?(:metadata=)
26
- s.metadata = {
27
- "bug_tracker_uri" => "https://github.com/bundler/bundler/issues",
28
- "changelog_uri" => "https://github.com/bundler/bundler/blob/master/CHANGELOG.md",
29
- "homepage_uri" => "https://bundler.io/",
30
- "source_code_uri" => "https://github.com/bundler/bundler/",
31
- }
32
- end
25
+ s.metadata = {
26
+ "bug_tracker_uri" => "https://github.com/rubygems/rubygems/issues?q=is%3Aopen+is%3Aissue+label%3ABundler",
27
+ "changelog_uri" => "https://github.com/rubygems/rubygems/blob/master/bundler/CHANGELOG.md",
28
+ "homepage_uri" => "https://bundler.io/",
29
+ "source_code_uri" => "https://github.com/rubygems/rubygems/tree/master/bundler",
30
+ }
33
31
 
34
- s.required_ruby_version = ">= 2.3.0"
35
- s.required_rubygems_version = ">= 2.5.2"
32
+ s.required_ruby_version = ">= 2.6.0"
33
+ s.required_rubygems_version = ">= 3.0.1"
36
34
 
37
- s.files = Dir.glob("{lib,man,exe}/**/*", File::FNM_DOTMATCH).reject {|f| File.directory?(f) }
35
+ s.files = Dir.glob("lib/bundler{.rb,/**/*}", File::FNM_DOTMATCH).reject {|f| File.directory?(f) }
38
36
 
39
- # Include the CHANGELOG.md, LICENSE.md, README.md manually
40
- s.files += %w[CHANGELOG.md LICENSE.md README.md]
41
37
  # include the gemspec itself because warbler breaks w/o it
42
38
  s.files += %w[bundler.gemspec]
43
39
 
40
+ s.files += %w[CHANGELOG.md LICENSE.md README.md]
44
41
  s.bindir = "exe"
45
42
  s.executables = %w[bundle bundler]
46
43
  s.require_paths = ["lib"]
data/bundler/exe/bundle CHANGED
@@ -15,14 +15,13 @@ else
15
15
  require "bundler"
16
16
  end
17
17
 
18
- # Check if an older version of bundler is installed
19
- $LOAD_PATH.each do |path|
20
- next unless path =~ %r{/bundler-0\.(\d+)} && $1.to_i < 9
21
- err = String.new
22
- err << "Looks like you have a version of bundler that's older than 0.9.\n"
23
- err << "Please remove your old versions.\n"
24
- err << "An easy way to do this is by running `gem cleanup bundler`."
25
- abort(err)
18
+ if Gem.rubygems_version < Gem::Version.new("3.2.3") && Gem.ruby_version < Gem::Version.new("2.7.a") && !ENV["BUNDLER_NO_OLD_RUBYGEMS_WARNING"]
19
+ Bundler.ui.warn \
20
+ "Your RubyGems version (#{Gem::VERSION}) has a bug that prevents " \
21
+ "`required_ruby_version` from working for Bundler. Any scripts that use " \
22
+ "`gem install bundler` will break as soon as Bundler drops support for " \
23
+ "your Ruby version. Please upgrade RubyGems to avoid future breakage " \
24
+ "and silence this warning by running `gem update --system 3.2.3`"
26
25
  end
27
26
 
28
27
  if File.exist?(base_path)
data/bundler/exe/bundler CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- load File.expand_path("../bundle", __FILE__)
4
+ load File.expand_path("bundle", __dir__)
@@ -0,0 +1 @@
1
+ # not in RDoc
@@ -4,9 +4,9 @@ module Bundler
4
4
  # Represents metadata from when the Bundler gem was built.
5
5
  module BuildMetadata
6
6
  # begin ivars
7
- @built_at = "2021-01-26".freeze
8
- @git_commit_sha = "32a4159325".freeze
9
- @release = false
7
+ @built_at = "2023-03-27".freeze
8
+ @git_commit_sha = "7ffdec80d0".freeze
9
+ @release = true
10
10
  # end ivars
11
11
 
12
12
  # A hash representation of the build metadata.
@@ -29,19 +29,11 @@ module Bundler
29
29
 
30
30
  # If Bundler has been installed without its .git directory and without a
31
31
  # commit instance variable then we can't determine its commits SHA.
32
- git_dir = File.join(File.expand_path("../../..", __FILE__), ".git")
32
+ git_dir = File.expand_path("../../../.git", __dir__)
33
33
  if File.directory?(git_dir)
34
34
  return @git_commit_sha = Dir.chdir(git_dir) { `git rev-parse --short HEAD`.strip.freeze }
35
35
  end
36
36
 
37
- # If Bundler is a submodule in RubyGems, get the submodule commit
38
- git_sub_dir = File.join(File.expand_path("../../../..", __FILE__), ".git")
39
- if File.directory?(git_sub_dir)
40
- return @git_commit_sha = Dir.chdir(git_sub_dir) do
41
- `git ls-tree --abbrev=8 HEAD bundler`.split(/\s/).fetch(2, "").strip.freeze
42
- end
43
- end
44
-
45
37
  @git_commit_sha ||= "unknown"
46
38
  end
47
39
 
@@ -17,7 +17,7 @@ module Bundler
17
17
  perform_bundle_install unless options["skip-install"]
18
18
  end
19
19
 
20
- private
20
+ private
21
21
 
22
22
  def perform_bundle_install
23
23
  Installer.install(Bundler.root, Bundler.definition)
@@ -40,7 +40,7 @@ module Bundler
40
40
  raise InvalidOption, "Please specify gems to add." if gems.empty?
41
41
 
42
42
  version.to_a.each do |v|
43
- raise InvalidOption, "Invalid gem requirement pattern '#{v}'" unless Gem::Requirement::PATTERN =~ v.to_s
43
+ raise InvalidOption, "Invalid gem requirement pattern '#{v}'" unless Gem::Requirement::PATTERN.match?(v.to_s)
44
44
  end
45
45
  end
46
46
  end
@@ -16,7 +16,11 @@ module Bundler
16
16
  Bundler.settings.set_command_option_if_given :shebang, options["shebang"]
17
17
  installer = Installer.new(Bundler.root, Bundler.definition)
18
18
 
19
- installer_opts = { :force => options[:force], :binstubs_cmd => true }
19
+ installer_opts = {
20
+ :force => options[:force],
21
+ :binstubs_cmd => true,
22
+ :all_platforms => options["all-platforms"],
23
+ }
20
24
 
21
25
  if options[:all]
22
26
  raise InvalidOption, "Cannot specify --all with specific gems" unless gems.empty?
@@ -36,9 +40,13 @@ module Bundler
36
40
  end
37
41
 
38
42
  if options[:standalone]
39
- next Bundler.ui.warn("Sorry, Bundler can only be run via RubyGems.") if gem_name == "bundler"
43
+ if gem_name == "bundler"
44
+ Bundler.ui.warn("Sorry, Bundler can only be run via RubyGems.") unless options[:all]
45
+ next
46
+ end
47
+
40
48
  Bundler.settings.temporary(:path => (Bundler.settings[:path] || Bundler.root)) do
41
- installer.generate_standalone_bundler_executable_stubs(spec)
49
+ installer.generate_standalone_bundler_executable_stubs(spec, installer_opts)
42
50
  end
43
51
  else
44
52
  installer.generate_bundler_executable_stubs(spec, installer_opts)
@@ -9,7 +9,7 @@ module Bundler
9
9
  end
10
10
 
11
11
  def run
12
- Bundler.ui.level = "error" if options[:quiet]
12
+ Bundler.ui.level = "warn" if options[:quiet]
13
13
  Bundler.settings.set_command_option_if_given :path, options[:path]
14
14
  Bundler.settings.set_command_option_if_given :cache_path, options["cache-path"]
15
15
 
@@ -24,12 +24,13 @@ module Bundler
24
24
  end
25
25
  end
26
26
 
27
- private
27
+ private
28
28
 
29
29
  def install
30
30
  require_relative "install"
31
31
  options = self.options.dup
32
32
  options["local"] = false if Bundler.settings[:cache_all_platforms]
33
+ options["no-cache"] = true
33
34
  Bundler::CLI::Install.new(options).run
34
35
  end
35
36
 
@@ -37,12 +38,6 @@ module Bundler
37
38
  all = options.fetch(:all, Bundler.feature_flag.cache_all? || nil)
38
39
 
39
40
  Bundler.settings.set_command_option_if_given :cache_all, all
40
-
41
- if Bundler.definition.has_local_dependencies? && !Bundler.feature_flag.cache_all?
42
- Bundler.ui.warn "Your Gemfile contains path and git dependencies. If you want " \
43
- "to cache them as well, please pass the --all flag. This will be the default " \
44
- "on Bundler 3.0."
45
- end
46
41
  end
47
42
  end
48
43
  end
@@ -11,11 +11,13 @@ module Bundler
11
11
  def run
12
12
  Bundler.settings.set_command_option_if_given :path, options[:path]
13
13
 
14
+ definition = Bundler.definition
15
+ definition.validate_runtime!
16
+
14
17
  begin
15
- definition = Bundler.definition
16
- definition.validate_runtime!
18
+ definition.resolve_only_locally!
17
19
  not_installed = definition.missing_specs
18
- rescue GemNotFound, VersionConflict
20
+ rescue GemNotFound, SolveFailure
19
21
  Bundler.ui.error "Bundler can't satisfy your Gemfile's dependencies."
20
22
  Bundler.ui.warn "Install missing gems with `bundle install`."
21
23
  exit 1
@@ -13,7 +13,7 @@ module Bundler
13
13
  Bundler.load.clean(options[:"dry-run"])
14
14
  end
15
15
 
16
- protected
16
+ protected
17
17
 
18
18
  def require_path_or_force
19
19
  return unless Bundler.use_system_gems? && !options[:force]
@@ -14,6 +14,21 @@ module Bundler
14
14
  Bundler.ui.info msg
15
15
  end
16
16
 
17
+ def self.output_fund_metadata_summary
18
+ return if Bundler.settings["ignore_funding_requests"]
19
+ definition = Bundler.definition
20
+ current_dependencies = definition.requested_dependencies
21
+ current_specs = definition.specs
22
+
23
+ count = current_dependencies.count {|dep| current_specs[dep.name].first.metadata.key?("funding_uri") }
24
+
25
+ return if count.zero?
26
+
27
+ intro = count > 1 ? "#{count} installed gems you directly depend on are" : "#{count} installed gem you directly depend on is"
28
+ message = "#{intro} looking for funding.\n Run `bundle fund` for details"
29
+ Bundler.ui.info message
30
+ end
31
+
17
32
  def self.output_without_groups_message(command)
18
33
  return if Bundler.settings[:without].empty?
19
34
  Bundler.ui.confirm without_groups_message(command)
@@ -22,10 +37,15 @@ module Bundler
22
37
  def self.without_groups_message(command)
23
38
  command_in_past_tense = command == :install ? "installed" : "updated"
24
39
  groups = Bundler.settings[:without]
40
+ "Gems in the #{verbalize_groups(groups)} were not #{command_in_past_tense}."
41
+ end
42
+
43
+ def self.verbalize_groups(groups)
44
+ groups.map! {|g| "'#{g}'" }
25
45
  group_list = [groups[0...-1].join(", "), groups[-1..-1]].
26
46
  reject {|s| s.to_s.empty? }.join(" and ")
27
47
  group_str = groups.size == 1 ? "group" : "groups"
28
- "Gems in the #{group_str} #{group_list} were not #{command_in_past_tense}."
48
+ "#{group_str} #{group_list}"
29
49
  end
30
50
 
31
51
  def self.select_spec(name, regex_match = nil)
@@ -39,7 +59,13 @@ module Bundler
39
59
 
40
60
  case specs.count
41
61
  when 0
42
- raise GemNotFound, gem_not_found_message(name, Bundler.definition.dependencies)
62
+ dep_in_other_group = Bundler.definition.current_dependencies.find {|dep|dep.name == name }
63
+
64
+ if dep_in_other_group
65
+ raise GemNotFound, "Could not find gem '#{name}', because it's in the #{verbalize_groups(dep_in_other_group.groups)}, configured to be ignored."
66
+ else
67
+ raise GemNotFound, gem_not_found_message(name, Bundler.definition.dependencies)
68
+ end
43
69
  when 1
44
70
  specs.first
45
71
  else
@@ -69,6 +95,8 @@ module Bundler
69
95
  end
70
96
 
71
97
  def self.ensure_all_gems_in_lockfile!(names, locked_gems = Bundler.locked_gems)
98
+ return unless locked_gems
99
+
72
100
  locked_names = locked_gems.specs.map(&:name).uniq
73
101
  names.-(locked_names).each do |g|
74
102
  raise GemNotFound, gem_not_found_message(g, locked_names)
@@ -82,7 +110,8 @@ module Bundler
82
110
 
83
111
  definition.gem_version_promoter.tap do |gvp|
84
112
  gvp.level = patch_level.first || :major
85
- gvp.strict = options[:strict] || options["update-strict"] || options["filter-strict"]
113
+ gvp.strict = options[:strict] || options["filter-strict"]
114
+ gvp.pre = options[:pre]
86
115
  end
87
116
  end
88
117
 
@@ -180,7 +180,7 @@ module Bundler
180
180
  scopes = %w[global local].select {|s| options[s] }
181
181
  case scopes.size
182
182
  when 0
183
- @scope = "global"
183
+ @scope = inside_app? ? "local" : "global"
184
184
  @explicit_scope = false
185
185
  when 1
186
186
  @scope = scopes.first
@@ -189,6 +189,15 @@ module Bundler
189
189
  "The options #{scopes.join " and "} were specified. Please only use one of the switches at a time."
190
190
  end
191
191
  end
192
+
193
+ private
194
+
195
+ def inside_app?
196
+ Bundler.root
197
+ true
198
+ rescue GemfileNotFound
199
+ false
200
+ end
192
201
  end
193
202
  end
194
203
  end
@@ -12,7 +12,7 @@ module Bundler
12
12
  Bundler::SharedHelpers.major_deprecation 2, "bundle console will be replaced " \
13
13
  "by `bin/console` generated by `bundle gem <name>`"
14
14
 
15
- group ? Bundler.require(:default, *group.split.map!(&:to_sym)) : Bundler.require
15
+ group ? Bundler.require(:default, *group.split(" ").map!(&:to_sym)) : Bundler.require
16
16
  ARGV.clear
17
17
 
18
18
  console = get_console(Bundler.settings[:console] || "irb")
@@ -30,9 +30,9 @@ module Bundler
30
30
 
31
31
  def get_constant(name)
32
32
  const_name = {
33
- "pry" => :Pry,
33
+ "pry" => :Pry,
34
34
  "ripl" => :Ripl,
35
- "irb" => :IRB,
35
+ "irb" => :IRB,
36
36
  }[name]
37
37
  Object.const_get(const_name)
38
38
  rescue NameError
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "rbconfig"
4
+ require "shellwords"
5
+ require "fiddle"
4
6
 
5
7
  module Bundler
6
8
  class CLI::Doctor
@@ -22,14 +24,14 @@ module Bundler
22
24
  end
23
25
 
24
26
  def dylibs_darwin(path)
25
- output = `/usr/bin/otool -L "#{path}"`.chomp
27
+ output = `/usr/bin/otool -L #{path.shellescape}`.chomp
26
28
  dylibs = output.split("\n")[1..-1].map {|l| l.match(DARWIN_REGEX).captures[0] }.uniq
27
29
  # ignore @rpath and friends
28
30
  dylibs.reject {|dylib| dylib.start_with? "@" }
29
31
  end
30
32
 
31
33
  def dylibs_ldd(path)
32
- output = `/usr/bin/ldd "#{path}"`.chomp
34
+ output = `/usr/bin/ldd #{path.shellescape}`.chomp
33
35
  output.split("\n").map do |l|
34
36
  match = l.match(LDD_REGEX)
35
37
  next if match.nil?
@@ -61,7 +63,7 @@ module Bundler
61
63
  end
62
64
 
63
65
  def run
64
- Bundler.ui.level = "error" if options[:quiet]
66
+ Bundler.ui.level = "warn" if options[:quiet]
65
67
  Bundler.settings.validate!
66
68
  check!
67
69
 
@@ -70,7 +72,12 @@ module Bundler
70
72
 
71
73
  definition.specs.each do |spec|
72
74
  bundles_for_gem(spec).each do |bundle|
73
- bad_paths = dylibs(bundle).select {|f| !File.exist?(f) }
75
+ bad_paths = dylibs(bundle).select do |f|
76
+ Fiddle.dlopen(f)
77
+ false
78
+ rescue Fiddle::DLError
79
+ true
80
+ end
74
81
  if bad_paths.any?
75
82
  broken_links[spec] ||= []
76
83
  broken_links[spec].concat(bad_paths)
@@ -93,15 +100,18 @@ module Bundler
93
100
  end
94
101
  end
95
102
 
96
- private
103
+ private
97
104
 
98
105
  def check_home_permissions
99
106
  require "find"
100
107
  files_not_readable_or_writable = []
101
108
  files_not_rw_and_owned_by_different_user = []
102
109
  files_not_owned_by_current_user_but_still_rw = []
110
+ broken_symlinks = []
103
111
  Find.find(Bundler.bundle_path.to_s).each do |f|
104
- if !File.writable?(f) || !File.readable?(f)
112
+ if !File.exist?(f)
113
+ broken_symlinks << f
114
+ elsif !File.writable?(f) || !File.readable?(f)
105
115
  if File.stat(f).uid != Process.uid
106
116
  files_not_rw_and_owned_by_different_user << f
107
117
  else
@@ -113,6 +123,13 @@ module Bundler
113
123
  end
114
124
 
115
125
  ok = true
126
+
127
+ if broken_symlinks.any?
128
+ Bundler.ui.warn "Broken links exist in the Bundler home. Please report them to the offending gem's upstream repo. These files are:\n - #{broken_symlinks.join("\n - ")}"
129
+
130
+ ok = false
131
+ end
132
+
116
133
  if files_not_owned_by_current_user_but_still_rw.any?
117
134
  Bundler.ui.warn "Files exist in the Bundler home that are owned by another " \
118
135
  "user, but are still readable/writable. These files are:\n - #{files_not_owned_by_current_user_but_still_rw.join("\n - ")}"
@@ -12,12 +12,7 @@ module Bundler
12
12
  @options = options
13
13
  @cmd = args.shift
14
14
  @args = args
15
-
16
- if !Bundler.current_ruby.jruby?
17
- @args << { :close_others => !options.keep_file_descriptors? }
18
- elsif options.keep_file_descriptors?
19
- Bundler.ui.warn "Ruby version #{RUBY_VERSION} defaults to keeping non-standard file descriptors on Kernel#exec."
20
- end
15
+ @args << { :close_others => !options.keep_file_descriptors? } unless Bundler.current_ruby.jruby?
21
16
  end
22
17
 
23
18
  def run
@@ -34,7 +29,7 @@ module Bundler
34
29
  end
35
30
  end
36
31
 
37
- private
32
+ private
38
33
 
39
34
  def validate_cmd!
40
35
  return unless cmd.nil?
@@ -63,10 +58,10 @@ module Bundler
63
58
  Kernel.load(file)
64
59
  rescue SystemExit, SignalException
65
60
  raise
66
- rescue Exception => e # rubocop:disable Lint/RescueException
61
+ rescue Exception # rubocop:disable Lint/RescueException
67
62
  Bundler.ui.error "bundler: failed to load command: #{cmd} (#{file})"
68
- backtrace = e.backtrace ? e.backtrace.take_while {|bt| !bt.start_with?(__FILE__) } : []
69
- abort "#{e.class}: #{e.message}\n #{backtrace.join("\n ")}"
63
+ Bundler::FriendlyErrors.disable!
64
+ raise
70
65
  end
71
66
 
72
67
  def process_title(file, args)