bundler 2.2.29 → 2.5.16

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 (330) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1129 -4
  3. data/README.md +4 -8
  4. data/bundler.gemspec +11 -11
  5. data/exe/bundle +5 -26
  6. data/exe/bundler +1 -1
  7. data/lib/bundler/.document +1 -0
  8. data/lib/bundler/build_metadata.rb +4 -4
  9. data/lib/bundler/capistrano.rb +1 -1
  10. data/lib/bundler/checksum.rb +254 -0
  11. data/lib/bundler/ci_detector.rb +75 -0
  12. data/lib/bundler/cli/add.rb +4 -4
  13. data/lib/bundler/cli/binstubs.rb +10 -6
  14. data/lib/bundler/cli/cache.rb +1 -1
  15. data/lib/bundler/cli/check.rb +3 -3
  16. data/lib/bundler/cli/common.rb +13 -3
  17. data/lib/bundler/cli/config.rb +18 -8
  18. data/lib/bundler/cli/console.rb +5 -4
  19. data/lib/bundler/cli/doctor.rb +12 -5
  20. data/lib/bundler/cli/exec.rb +1 -1
  21. data/lib/bundler/cli/fund.rb +1 -1
  22. data/lib/bundler/cli/gem.rb +141 -48
  23. data/lib/bundler/cli/info.rb +27 -17
  24. data/lib/bundler/cli/init.rb +6 -2
  25. data/lib/bundler/cli/install.rb +22 -39
  26. data/lib/bundler/cli/issue.rb +5 -4
  27. data/lib/bundler/cli/lock.rb +36 -29
  28. data/lib/bundler/cli/open.rb +9 -9
  29. data/lib/bundler/cli/outdated.rb +19 -12
  30. data/lib/bundler/cli/platform.rb +8 -6
  31. data/lib/bundler/cli/plugin.rb +9 -15
  32. data/lib/bundler/cli/pristine.rb +38 -30
  33. data/lib/bundler/cli/show.rb +3 -3
  34. data/lib/bundler/cli/update.rb +12 -7
  35. data/lib/bundler/cli/viz.rb +1 -1
  36. data/lib/bundler/cli.rb +266 -285
  37. data/lib/bundler/compact_index_client/cache.rb +53 -67
  38. data/lib/bundler/compact_index_client/cache_file.rb +153 -0
  39. data/lib/bundler/compact_index_client/gem_parser.rb +7 -3
  40. data/lib/bundler/compact_index_client/parser.rb +84 -0
  41. data/lib/bundler/compact_index_client/updater.rb +83 -76
  42. data/lib/bundler/compact_index_client.rb +59 -87
  43. data/lib/bundler/constants.rb +9 -2
  44. data/lib/bundler/current_ruby.rb +12 -16
  45. data/lib/bundler/definition.rb +509 -319
  46. data/lib/bundler/dependency.rb +33 -71
  47. data/lib/bundler/digest.rb +71 -0
  48. data/lib/bundler/dsl.rb +88 -69
  49. data/lib/bundler/endpoint_specification.rb +32 -15
  50. data/lib/bundler/env.rb +5 -7
  51. data/lib/bundler/environment_preserver.rb +8 -22
  52. data/lib/bundler/errors.rb +101 -13
  53. data/lib/bundler/feature_flag.rb +0 -2
  54. data/lib/bundler/fetcher/base.rb +11 -11
  55. data/lib/bundler/fetcher/compact_index.rb +32 -52
  56. data/lib/bundler/fetcher/dependency.rb +3 -7
  57. data/lib/bundler/fetcher/downloader.rb +17 -16
  58. data/lib/bundler/fetcher/gem_remote_fetcher.rb +16 -0
  59. data/lib/bundler/fetcher/index.rb +2 -29
  60. data/lib/bundler/fetcher.rb +87 -79
  61. data/lib/bundler/force_platform.rb +18 -0
  62. data/lib/bundler/friendly_errors.rb +29 -40
  63. data/lib/bundler/gem_helper.rb +11 -23
  64. data/lib/bundler/gem_helpers.rb +30 -6
  65. data/lib/bundler/gem_version_promoter.rb +68 -109
  66. data/lib/bundler/graph.rb +9 -9
  67. data/lib/bundler/index.rb +71 -79
  68. data/lib/bundler/injector.rb +23 -11
  69. data/lib/bundler/inline.rb +11 -23
  70. data/lib/bundler/installer/gem_installer.rb +18 -11
  71. data/lib/bundler/installer/parallel_installer.rb +17 -65
  72. data/lib/bundler/installer/standalone.rb +56 -15
  73. data/lib/bundler/installer.rb +35 -61
  74. data/lib/bundler/lazy_specification.rb +92 -61
  75. data/lib/bundler/lockfile_generator.rb +12 -3
  76. data/lib/bundler/lockfile_parser.rb +137 -70
  77. data/lib/bundler/man/bundle-add.1 +19 -26
  78. data/lib/bundler/man/bundle-add.1.ronn +16 -4
  79. data/lib/bundler/man/bundle-binstubs.1 +4 -16
  80. data/lib/bundler/man/bundle-cache.1 +9 -24
  81. data/lib/bundler/man/bundle-cache.1.ronn +9 -2
  82. data/lib/bundler/man/bundle-check.1 +5 -12
  83. data/lib/bundler/man/bundle-check.1.ronn +3 -0
  84. data/lib/bundler/man/bundle-clean.1 +4 -11
  85. data/lib/bundler/man/bundle-clean.1.ronn +1 -1
  86. data/lib/bundler/man/bundle-config.1 +47 -224
  87. data/lib/bundler/man/bundle-config.1.ronn +40 -28
  88. data/lib/bundler/man/bundle-console.1 +35 -0
  89. data/lib/bundler/man/bundle-console.1.ronn +44 -0
  90. data/lib/bundler/man/bundle-doctor.1 +4 -18
  91. data/lib/bundler/man/bundle-exec.1 +16 -77
  92. data/lib/bundler/man/bundle-exec.1.ronn +8 -9
  93. data/lib/bundler/man/bundle-gem.1 +45 -72
  94. data/lib/bundler/man/bundle-gem.1.ronn +32 -5
  95. data/lib/bundler/man/bundle-help.1 +9 -0
  96. data/lib/bundler/man/bundle-help.1.ronn +12 -0
  97. data/lib/bundler/man/bundle-info.1 +5 -11
  98. data/lib/bundler/man/bundle-info.1.ronn +3 -3
  99. data/lib/bundler/man/bundle-init.1 +6 -11
  100. data/lib/bundler/man/bundle-init.1.ronn +2 -0
  101. data/lib/bundler/man/bundle-inject.1 +8 -18
  102. data/lib/bundler/man/bundle-inject.1.ronn +3 -1
  103. data/lib/bundler/man/bundle-install.1 +32 -155
  104. data/lib/bundler/man/bundle-install.1.ronn +11 -33
  105. data/lib/bundler/man/bundle-list.1 +4 -19
  106. data/lib/bundler/man/bundle-lock.1 +5 -29
  107. data/lib/bundler/man/bundle-open.1 +18 -18
  108. data/lib/bundler/man/bundle-open.1.ronn +9 -1
  109. data/lib/bundler/man/bundle-outdated.1 +17 -72
  110. data/lib/bundler/man/bundle-outdated.1.ronn +13 -18
  111. data/lib/bundler/man/bundle-platform.1 +16 -28
  112. data/lib/bundler/man/bundle-platform.1.ronn +14 -7
  113. data/lib/bundler/man/bundle-plugin.1 +58 -0
  114. data/lib/bundler/man/bundle-plugin.1.ronn +63 -0
  115. data/lib/bundler/man/bundle-pristine.1 +5 -16
  116. data/lib/bundler/man/bundle-remove.1 +4 -14
  117. data/lib/bundler/man/bundle-show.1 +3 -10
  118. data/lib/bundler/man/bundle-update.1 +19 -138
  119. data/lib/bundler/man/bundle-update.1.ronn +2 -1
  120. data/lib/bundler/man/bundle-version.1 +22 -0
  121. data/lib/bundler/man/bundle-version.1.ronn +24 -0
  122. data/lib/bundler/man/bundle-viz.1 +6 -15
  123. data/lib/bundler/man/bundle-viz.1.ronn +2 -0
  124. data/lib/bundler/man/bundle.1 +17 -51
  125. data/lib/bundler/man/bundle.1.ronn +12 -7
  126. data/lib/bundler/man/gemfile.5 +130 -346
  127. data/lib/bundler/man/gemfile.5.ronn +121 -86
  128. data/lib/bundler/man/index.txt +4 -0
  129. data/lib/bundler/match_metadata.rb +17 -0
  130. data/lib/bundler/match_platform.rb +1 -2
  131. data/lib/bundler/match_remote_metadata.rb +29 -0
  132. data/lib/bundler/mirror.rb +8 -10
  133. data/lib/bundler/plugin/api/source.rb +9 -13
  134. data/lib/bundler/plugin/index.rb +13 -5
  135. data/lib/bundler/plugin/installer/git.rb +0 -4
  136. data/lib/bundler/plugin/installer/path.rb +18 -0
  137. data/lib/bundler/plugin/installer/rubygems.rb +0 -8
  138. data/lib/bundler/plugin/installer.rb +42 -19
  139. data/lib/bundler/plugin/source_list.rb +4 -4
  140. data/lib/bundler/plugin.rb +16 -7
  141. data/lib/bundler/process_lock.rb +1 -1
  142. data/lib/bundler/remote_specification.rb +11 -5
  143. data/lib/bundler/resolver/base.rb +111 -0
  144. data/lib/bundler/resolver/candidate.rb +82 -0
  145. data/lib/bundler/resolver/incompatibility.rb +15 -0
  146. data/lib/bundler/resolver/package.rb +81 -0
  147. data/lib/bundler/resolver/root.rb +25 -0
  148. data/lib/bundler/resolver/spec_group.rb +53 -66
  149. data/lib/bundler/resolver.rb +419 -307
  150. data/lib/bundler/retry.rb +1 -1
  151. data/lib/bundler/ruby_dsl.rb +42 -7
  152. data/lib/bundler/ruby_version.rb +16 -22
  153. data/lib/bundler/rubygems_ext.rb +250 -64
  154. data/lib/bundler/rubygems_gem_installer.rb +90 -64
  155. data/lib/bundler/rubygems_integration.rb +81 -190
  156. data/lib/bundler/runtime.rb +8 -13
  157. data/lib/bundler/safe_marshal.rb +31 -0
  158. data/lib/bundler/self_manager.rb +206 -0
  159. data/lib/bundler/settings.rb +139 -57
  160. data/lib/bundler/setup.rb +13 -1
  161. data/lib/bundler/shared_helpers.rb +67 -36
  162. data/lib/bundler/source/git/git_proxy.rb +285 -82
  163. data/lib/bundler/source/git.rb +81 -41
  164. data/lib/bundler/source/metadata.rb +17 -16
  165. data/lib/bundler/source/path/installer.rb +1 -22
  166. data/lib/bundler/source/path.rb +13 -25
  167. data/lib/bundler/source/rubygems/remote.rb +1 -1
  168. data/lib/bundler/source/rubygems.rb +164 -234
  169. data/lib/bundler/source/rubygems_aggregate.rb +1 -1
  170. data/lib/bundler/source.rb +7 -6
  171. data/lib/bundler/source_list.rb +40 -32
  172. data/lib/bundler/source_map.rb +15 -2
  173. data/lib/bundler/spec_set.rb +156 -46
  174. data/lib/bundler/stub_specification.rb +18 -5
  175. data/lib/bundler/templates/Executable +3 -5
  176. data/lib/bundler/templates/Executable.bundler +7 -12
  177. data/lib/bundler/templates/Executable.standalone +4 -4
  178. data/lib/bundler/templates/Gemfile +0 -2
  179. data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +77 -29
  180. data/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
  181. data/lib/bundler/templates/newgem/Gemfile.tt +8 -2
  182. data/lib/bundler/templates/newgem/README.md.tt +7 -11
  183. data/lib/bundler/templates/newgem/Rakefile.tt +28 -4
  184. data/lib/bundler/templates/newgem/bin/console.tt +0 -4
  185. data/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
  186. data/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
  187. data/lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt +10 -0
  188. data/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
  189. data/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +1 -1
  190. data/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
  191. data/lib/bundler/templates/newgem/github/workflows/main.yml.tt +13 -3
  192. data/lib/bundler/templates/newgem/gitignore.tt +3 -0
  193. data/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
  194. data/lib/bundler/templates/newgem/newgem.gemspec.tt +25 -17
  195. data/lib/bundler/templates/newgem/rubocop.yml.tt +0 -5
  196. data/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
  197. data/lib/bundler/templates/newgem/standard.yml.tt +3 -0
  198. data/lib/bundler/templates/newgem/test/minitest/{newgem_test.rb.tt → test_newgem.rb.tt} +1 -1
  199. data/lib/bundler/ui/rg_proxy.rb +1 -1
  200. data/lib/bundler/ui/shell.rb +38 -15
  201. data/lib/bundler/ui/silent.rb +21 -5
  202. data/lib/bundler/uri_credentials_filter.rb +2 -2
  203. data/lib/bundler/uri_normalizer.rb +23 -0
  204. data/lib/bundler/vendor/.document +1 -0
  205. data/lib/bundler/vendor/connection_pool/.document +1 -0
  206. data/lib/bundler/vendor/connection_pool/LICENSE +20 -0
  207. data/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +19 -21
  208. data/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  209. data/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +56 -0
  210. data/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +92 -78
  211. data/lib/bundler/vendor/fileutils/.document +1 -0
  212. data/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
  213. data/lib/bundler/vendor/fileutils/lib/fileutils.rb +1340 -410
  214. data/lib/bundler/vendor/net-http-persistent/.document +1 -0
  215. data/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
  216. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +4 -3
  217. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +23 -11
  218. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +1 -1
  219. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +57 -57
  220. data/lib/bundler/vendor/pub_grub/.document +1 -0
  221. data/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  222. data/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  223. data/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
  224. data/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  225. data/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
  226. data/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  227. data/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  228. data/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  229. data/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  230. data/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +61 -0
  231. data/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  232. data/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  233. data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
  234. data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
  235. data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +248 -0
  236. data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  237. data/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  238. data/lib/bundler/vendor/thor/.document +1 -0
  239. data/lib/bundler/vendor/thor/LICENSE.md +20 -0
  240. data/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +3 -2
  241. data/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +1 -1
  242. data/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb +1 -1
  243. data/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +12 -14
  244. data/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +16 -6
  245. data/lib/bundler/vendor/thor/lib/thor/actions.rb +21 -17
  246. data/lib/bundler/vendor/thor/lib/thor/base.rb +140 -14
  247. data/lib/bundler/vendor/thor/lib/thor/command.rb +13 -4
  248. data/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +10 -0
  249. data/lib/bundler/vendor/thor/lib/thor/error.rb +16 -20
  250. data/lib/bundler/vendor/thor/lib/thor/group.rb +1 -1
  251. data/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -1
  252. data/lib/bundler/vendor/thor/lib/thor/nested_context.rb +2 -2
  253. data/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +20 -1
  254. data/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +33 -17
  255. data/lib/bundler/vendor/thor/lib/thor/parser/option.rb +27 -8
  256. data/lib/bundler/vendor/thor/lib/thor/parser/options.rb +63 -7
  257. data/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +2 -2
  258. data/lib/bundler/vendor/thor/lib/thor/runner.rb +40 -30
  259. data/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +48 -154
  260. data/lib/bundler/vendor/thor/lib/thor/shell/color.rb +1 -46
  261. data/lib/bundler/vendor/thor/lib/thor/shell/column_printer.rb +29 -0
  262. data/lib/bundler/vendor/thor/lib/thor/shell/html.rb +0 -45
  263. data/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +134 -0
  264. data/lib/bundler/vendor/thor/lib/thor/shell/terminal.rb +42 -0
  265. data/lib/bundler/vendor/thor/lib/thor/shell/wrapped_printer.rb +38 -0
  266. data/lib/bundler/vendor/thor/lib/thor/shell.rb +2 -2
  267. data/lib/bundler/vendor/thor/lib/thor/util.rb +9 -8
  268. data/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  269. data/lib/bundler/vendor/thor/lib/thor.rb +155 -8
  270. data/lib/bundler/vendor/tsort/.document +1 -0
  271. data/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
  272. data/lib/bundler/vendor/tsort/lib/tsort.rb +455 -0
  273. data/lib/bundler/vendor/uri/.document +1 -0
  274. data/lib/bundler/vendor/uri/LICENSE.txt +22 -0
  275. data/lib/bundler/vendor/uri/lib/uri/common.rb +316 -207
  276. data/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
  277. data/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -2
  278. data/lib/bundler/vendor/uri/lib/uri/generic.rb +33 -13
  279. data/lib/bundler/vendor/uri/lib/uri/http.rb +40 -3
  280. data/lib/bundler/vendor/uri/lib/uri/https.rb +2 -2
  281. data/lib/bundler/vendor/uri/lib/uri/ldap.rb +2 -2
  282. data/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
  283. data/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -3
  284. data/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +16 -23
  285. data/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +105 -47
  286. data/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  287. data/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
  288. data/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
  289. data/lib/bundler/vendor/uri/lib/uri.rb +3 -3
  290. data/lib/bundler/vendored_net_http.rb +23 -0
  291. data/lib/bundler/vendored_persistent.rb +0 -36
  292. data/lib/bundler/{vendored_molinillo.rb → vendored_pub_grub.rb} +1 -1
  293. data/lib/bundler/vendored_timeout.rb +12 -0
  294. data/lib/bundler/{vendored_tmpdir.rb → vendored_tsort.rb} +1 -1
  295. data/lib/bundler/vendored_uri.rb +18 -1
  296. data/lib/bundler/version.rb +5 -1
  297. data/lib/bundler/vlad.rb +1 -1
  298. data/lib/bundler/worker.rb +7 -9
  299. data/lib/bundler/yaml_serializer.rb +21 -12
  300. data/lib/bundler.rb +114 -121
  301. metadata +87 -41
  302. data/lib/bundler/dep_proxy.rb +0 -55
  303. data/lib/bundler/gemdeps.rb +0 -29
  304. data/lib/bundler/psyched_yaml.rb +0 -22
  305. data/lib/bundler/templates/gems.rb +0 -8
  306. data/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +0 -5
  307. data/lib/bundler/templates/newgem/travis.yml.tt +0 -6
  308. data/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +0 -66
  309. data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
  310. data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
  311. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
  312. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
  313. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
  314. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
  315. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
  316. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
  317. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
  318. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
  319. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
  320. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
  321. data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -143
  322. data/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
  323. data/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
  324. data/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
  325. data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
  326. data/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
  327. data/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
  328. data/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
  329. data/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
  330. data/lib/bundler/version_ranges.rb +0 -122
data/lib/bundler.rb CHANGED
@@ -17,9 +17,9 @@ require_relative "bundler/build_metadata"
17
17
  # Bundler provides a consistent environment for Ruby projects by
18
18
  # tracking and installing the exact gems and versions that are needed.
19
19
  #
20
- # Since Ruby 2.6, Bundler is a part of Ruby's standard library.
20
+ # Bundler is a part of Ruby's standard library.
21
21
  #
22
- # Bunder is used by creating _gemfiles_ listing all the project dependencies
22
+ # Bundler is used by creating _gemfiles_ listing all the project dependencies
23
23
  # and (optionally) their versions and then using
24
24
  #
25
25
  # require 'bundler/setup'
@@ -37,12 +37,16 @@ module Bundler
37
37
  environment_preserver = EnvironmentPreserver.from_env
38
38
  ORIGINAL_ENV = environment_preserver.restore
39
39
  environment_preserver.replace_with_backup
40
- SUDO_MUTEX = Mutex.new
40
+ SUDO_MUTEX = Thread::Mutex.new
41
41
 
42
+ autoload :Checksum, File.expand_path("bundler/checksum", __dir__)
43
+ autoload :CLI, File.expand_path("bundler/cli", __dir__)
44
+ autoload :CIDetector, File.expand_path("bundler/ci_detector", __dir__)
45
+ autoload :CompactIndexClient, File.expand_path("bundler/compact_index_client", __dir__)
42
46
  autoload :Definition, File.expand_path("bundler/definition", __dir__)
43
47
  autoload :Dependency, File.expand_path("bundler/dependency", __dir__)
44
- autoload :DepProxy, File.expand_path("bundler/dep_proxy", __dir__)
45
48
  autoload :Deprecate, File.expand_path("bundler/deprecate", __dir__)
49
+ autoload :Digest, File.expand_path("bundler/digest", __dir__)
46
50
  autoload :Dsl, File.expand_path("bundler/dsl", __dir__)
47
51
  autoload :EndpointSpecification, File.expand_path("bundler/endpoint_specification", __dir__)
48
52
  autoload :Env, File.expand_path("bundler/env", __dir__)
@@ -57,7 +61,7 @@ module Bundler
57
61
  autoload :Installer, File.expand_path("bundler/installer", __dir__)
58
62
  autoload :LazySpecification, File.expand_path("bundler/lazy_specification", __dir__)
59
63
  autoload :LockfileParser, File.expand_path("bundler/lockfile_parser", __dir__)
60
- autoload :MatchPlatform, File.expand_path("bundler/match_platform", __dir__)
64
+ autoload :MatchRemoteMetadata, File.expand_path("bundler/match_remote_metadata", __dir__)
61
65
  autoload :ProcessLock, File.expand_path("bundler/process_lock", __dir__)
62
66
  autoload :RemoteSpecification, File.expand_path("bundler/remote_specification", __dir__)
63
67
  autoload :Resolver, File.expand_path("bundler/resolver", __dir__)
@@ -65,6 +69,7 @@ module Bundler
65
69
  autoload :RubyDsl, File.expand_path("bundler/ruby_dsl", __dir__)
66
70
  autoload :RubyVersion, File.expand_path("bundler/ruby_version", __dir__)
67
71
  autoload :Runtime, File.expand_path("bundler/runtime", __dir__)
72
+ autoload :SelfManager, File.expand_path("bundler/self_manager", __dir__)
68
73
  autoload :Settings, File.expand_path("bundler/settings", __dir__)
69
74
  autoload :SharedHelpers, File.expand_path("bundler/shared_helpers", __dir__)
70
75
  autoload :Source, File.expand_path("bundler/source", __dir__)
@@ -74,11 +79,12 @@ module Bundler
74
79
  autoload :StubSpecification, File.expand_path("bundler/stub_specification", __dir__)
75
80
  autoload :UI, File.expand_path("bundler/ui", __dir__)
76
81
  autoload :URICredentialsFilter, File.expand_path("bundler/uri_credentials_filter", __dir__)
77
- autoload :VersionRanges, File.expand_path("bundler/version_ranges", __dir__)
82
+ autoload :URINormalizer, File.expand_path("bundler/uri_normalizer", __dir__)
83
+ autoload :SafeMarshal, File.expand_path("bundler/safe_marshal", __dir__)
78
84
 
79
85
  class << self
80
86
  def configure
81
- @configured ||= configure_gem_home_and_path
87
+ @configure ||= configure_gem_home_and_path
82
88
  end
83
89
 
84
90
  def ui
@@ -95,6 +101,15 @@ module Bundler
95
101
  @bundle_path ||= Pathname.new(configured_bundle_path.path).expand_path(root)
96
102
  end
97
103
 
104
+ def create_bundle_path
105
+ mkdir_p(bundle_path) unless bundle_path.exist?
106
+
107
+ @bundle_path = bundle_path.realpath
108
+ rescue Errno::EEXIST
109
+ raise PathError, "Could not install to path `#{bundle_path}` " \
110
+ "because a file already exists at that path. Either remove or rename the file so the directory can be created."
111
+ end
112
+
98
113
  def configured_bundle_path
99
114
  @configured_bundle_path ||= settings.path.tap(&:validate!)
100
115
  end
@@ -104,7 +119,7 @@ module Bundler
104
119
  @bin_path ||= begin
105
120
  path = settings[:bin] || "bin"
106
121
  path = Pathname.new(path).expand_path(root).expand_path
107
- SharedHelpers.filesystem_access(path) {|p| FileUtils.mkdir_p(p) }
122
+ mkdir_p(path)
108
123
  path
109
124
  end
110
125
  end
@@ -152,6 +167,29 @@ module Bundler
152
167
  end
153
168
  end
154
169
 
170
+ def auto_switch
171
+ self_manager.restart_with_locked_bundler_if_needed
172
+ end
173
+
174
+ # Automatically install dependencies if Bundler.settings[:auto_install] exists.
175
+ # This is set through config cmd `bundle config set --global auto_install 1`.
176
+ #
177
+ # Note that this method `nil`s out the global Definition object, so it
178
+ # should be called first, before you instantiate anything like an
179
+ # `Installer` that'll keep a reference to the old one instead.
180
+ def auto_install
181
+ return unless settings[:auto_install]
182
+
183
+ begin
184
+ definition.specs
185
+ rescue GemNotFound, GitError
186
+ ui.info "Automatically installing missing gems."
187
+ reset!
188
+ CLI::Install.new({}).run
189
+ reset!
190
+ end
191
+ end
192
+
155
193
  # Setups Bundler environment (see Bundler.setup) if it is not already set,
156
194
  # and loads all gems from groups specified. Unlike ::setup, can be called
157
195
  # multiple times with different groups (if they were allowed by setup).
@@ -179,7 +217,7 @@ module Bundler
179
217
  end
180
218
 
181
219
  def environment
182
- SharedHelpers.major_deprecation 2, "Bundler.environment has been removed in favor of Bundler.load", :print_caller_location => true
220
+ SharedHelpers.major_deprecation 2, "Bundler.environment has been removed in favor of Bundler.load", print_caller_location: true
183
221
  load
184
222
  end
185
223
 
@@ -187,19 +225,21 @@ module Bundler
187
225
  #
188
226
  # @param unlock [Hash, Boolean, nil] Gems that have been requested
189
227
  # to be updated or true if all gems should be updated
228
+ # @param lockfile [Pathname] Path to Gemfile.lock
190
229
  # @return [Bundler::Definition]
191
- def definition(unlock = nil)
230
+ def definition(unlock = nil, lockfile = default_lockfile)
192
231
  @definition = nil if unlock
193
232
  @definition ||= begin
194
233
  configure
195
- Definition.build(default_gemfile, default_lockfile, unlock)
234
+ Definition.build(default_gemfile, lockfile, unlock)
196
235
  end
197
236
  end
198
237
 
199
238
  def frozen_bundle?
200
- frozen = settings[:deployment]
201
- frozen ||= settings[:frozen]
202
- frozen
239
+ frozen = settings[:frozen]
240
+ return frozen unless frozen.nil?
241
+
242
+ settings[:deployment]
203
243
  end
204
244
 
205
245
  def locked_gems
@@ -316,20 +356,12 @@ module Bundler
316
356
 
317
357
  def rm_rf(path)
318
358
  FileUtils.remove_entry_secure(path) if path && File.exist?(path)
319
- rescue ArgumentError
320
- message = <<EOF
321
- It is a security vulnerability to allow your home directory to be world-writable, and bundler can not continue.
322
- You should probably consider fixing this issue by running `chmod o-w ~` on *nix.
323
- Please refer to https://ruby-doc.org/stdlib-2.1.2/libdoc/fileutils/rdoc/FileUtils.html#method-c-remove_entry_secure for details.
324
- EOF
325
- File.world_writable?(path) ? Bundler.ui.warn(message) : raise
326
- raise PathError, "Please fix the world-writable issue with your #{path} directory"
327
359
  end
328
360
 
329
361
  def settings
330
362
  @settings ||= Settings.new(app_config_path)
331
363
  rescue GemfileNotFound
332
- @settings = Settings.new(Pathname.new(".bundle").expand_path)
364
+ @settings = Settings.new
333
365
  end
334
366
 
335
367
  # @return [Hash] Environment present before Bundler was activated
@@ -339,13 +371,13 @@ EOF
339
371
 
340
372
  # @deprecated Use `unbundled_env` instead
341
373
  def clean_env
342
- Bundler::SharedHelpers.major_deprecation(
343
- 2,
374
+ message =
344
375
  "`Bundler.clean_env` has been deprecated in favor of `Bundler.unbundled_env`. " \
345
- "If you instead want the environment before bundler was originally loaded, use `Bundler.original_env`",
346
- :print_caller_location => true
347
- )
348
-
376
+ "If you instead want the environment before bundler was originally loaded, use `Bundler.original_env`"
377
+ removed_message =
378
+ "`Bundler.clean_env` has been removed in favor of `Bundler.unbundled_env`. " \
379
+ "If you instead want the environment before bundler was originally loaded, use `Bundler.original_env`"
380
+ Bundler::SharedHelpers.major_deprecation(2, message, removed_message: removed_message, print_caller_location: true)
349
381
  unbundled_env
350
382
  end
351
383
 
@@ -368,7 +400,7 @@ EOF
368
400
 
369
401
  if env.key?("RUBYLIB")
370
402
  rubylib = env["RUBYLIB"].split(File::PATH_SEPARATOR)
371
- rubylib.delete(File.expand_path("..", __FILE__))
403
+ rubylib.delete(__dir__)
372
404
  env["RUBYLIB"] = rubylib.join(File::PATH_SEPARATOR)
373
405
  end
374
406
 
@@ -382,13 +414,13 @@ EOF
382
414
 
383
415
  # @deprecated Use `with_unbundled_env` instead
384
416
  def with_clean_env
385
- Bundler::SharedHelpers.major_deprecation(
386
- 2,
417
+ message =
387
418
  "`Bundler.with_clean_env` has been deprecated in favor of `Bundler.with_unbundled_env`. " \
388
- "If you instead want the environment before bundler was originally loaded, use `Bundler.with_original_env`",
389
- :print_caller_location => true
390
- )
391
-
419
+ "If you instead want the environment before bundler was originally loaded, use `Bundler.with_original_env`"
420
+ removed_message =
421
+ "`Bundler.with_clean_env` has been removed in favor of `Bundler.with_unbundled_env`. " \
422
+ "If you instead want the environment before bundler was originally loaded, use `Bundler.with_original_env`"
423
+ Bundler::SharedHelpers.major_deprecation(2, message, removed_message: removed_message, print_caller_location: true)
392
424
  with_env(unbundled_env) { yield }
393
425
  end
394
426
 
@@ -404,13 +436,13 @@ EOF
404
436
 
405
437
  # @deprecated Use `unbundled_system` instead
406
438
  def clean_system(*args)
407
- Bundler::SharedHelpers.major_deprecation(
408
- 2,
439
+ message =
409
440
  "`Bundler.clean_system` has been deprecated in favor of `Bundler.unbundled_system`. " \
410
- "If you instead want to run the command in the environment before bundler was originally loaded, use `Bundler.original_system`",
411
- :print_caller_location => true
412
- )
413
-
441
+ "If you instead want to run the command in the environment before bundler was originally loaded, use `Bundler.original_system`"
442
+ removed_message =
443
+ "`Bundler.clean_system` has been removed in favor of `Bundler.unbundled_system`. " \
444
+ "If you instead want to run the command in the environment before bundler was originally loaded, use `Bundler.original_system`"
445
+ Bundler::SharedHelpers.major_deprecation(2, message, removed_message: removed_message, print_caller_location: true)
414
446
  with_env(unbundled_env) { Kernel.system(*args) }
415
447
  end
416
448
 
@@ -426,13 +458,13 @@ EOF
426
458
 
427
459
  # @deprecated Use `unbundled_exec` instead
428
460
  def clean_exec(*args)
429
- Bundler::SharedHelpers.major_deprecation(
430
- 2,
461
+ message =
431
462
  "`Bundler.clean_exec` has been deprecated in favor of `Bundler.unbundled_exec`. " \
432
- "If you instead want to exec to a command in the environment before bundler was originally loaded, use `Bundler.original_exec`",
433
- :print_caller_location => true
434
- )
435
-
463
+ "If you instead want to exec to a command in the environment before bundler was originally loaded, use `Bundler.original_exec`"
464
+ removed_message =
465
+ "`Bundler.clean_exec` has been removed in favor of `Bundler.unbundled_exec`. " \
466
+ "If you instead want to exec to a command in the environment before bundler was originally loaded, use `Bundler.original_exec`"
467
+ Bundler::SharedHelpers.major_deprecation(2, message, removed_message: removed_message, print_caller_location: true)
436
468
  with_env(unbundled_env) { Kernel.exec(*args) }
437
469
  end
438
470
 
@@ -442,7 +474,7 @@ EOF
442
474
  end
443
475
 
444
476
  def local_platform
445
- return Gem::Platform::RUBY if settings[:force_ruby_platform] || Gem.platforms == [Gem::Platform::RUBY]
477
+ return Gem::Platform::RUBY if settings[:force_ruby_platform]
446
478
  Gem::Platform.local
447
479
  end
448
480
 
@@ -475,41 +507,9 @@ EOF
475
507
  configured_bundle_path.use_system_gems?
476
508
  end
477
509
 
478
- def requires_sudo?
479
- return @requires_sudo if defined?(@requires_sudo_ran)
480
-
481
- sudo_present = which "sudo" if settings.allow_sudo?
482
-
483
- if sudo_present
484
- # the bundle path and subdirectories need to be writable for RubyGems
485
- # to be able to unpack and install gems without exploding
486
- path = bundle_path
487
- path = path.parent until path.exist?
488
-
489
- # bins are written to a different location on OS X
490
- bin_dir = Pathname.new(Bundler.system_bindir)
491
- bin_dir = bin_dir.parent until bin_dir.exist?
492
-
493
- # if any directory is not writable, we need sudo
494
- files = [path, bin_dir] | Dir[bundle_path.join("build_info/*").to_s] | Dir[bundle_path.join("*").to_s]
495
- unwritable_files = files.reject {|f| File.writable?(f) }
496
- sudo_needed = !unwritable_files.empty?
497
- if sudo_needed
498
- Bundler.ui.warn "Following files may not be writable, so sudo is needed:\n #{unwritable_files.map(&:to_s).sort.join("\n ")}"
499
- end
500
- end
501
-
502
- @requires_sudo_ran = true
503
- @requires_sudo = settings.allow_sudo? && sudo_present && sudo_needed
504
- end
505
-
506
- def mkdir_p(path, options = {})
507
- if requires_sudo? && !options[:no_sudo]
508
- sudo "mkdir -p '#{path}'" unless File.exist?(path)
509
- else
510
- SharedHelpers.filesystem_access(path, :write) do |p|
511
- FileUtils.mkdir_p(p)
512
- end
510
+ def mkdir_p(path)
511
+ SharedHelpers.filesystem_access(path, :write) do |p|
512
+ FileUtils.mkdir_p(p)
513
513
  end
514
514
  end
515
515
 
@@ -517,7 +517,7 @@ EOF
517
517
  if File.file?(executable) && File.executable?(executable)
518
518
  executable
519
519
  elsif paths = ENV["PATH"]
520
- quote = '"'.freeze
520
+ quote = '"'
521
521
  paths.split(File::PATH_SEPARATOR).find do |path|
522
522
  path = path[1..-2] if path.start_with?(quote) && path.end_with?(quote)
523
523
  executable_path = File.expand_path(executable, path)
@@ -526,41 +526,23 @@ EOF
526
526
  end
527
527
  end
528
528
 
529
- def sudo(str)
530
- SUDO_MUTEX.synchronize do
531
- prompt = "\n\n" + <<-PROMPT.gsub(/^ {6}/, "").strip + " "
532
- Your user account isn't allowed to install to the system RubyGems.
533
- You can cancel this installation and run:
534
-
535
- bundle config set --local path 'vendor/bundle'
536
- bundle install
537
-
538
- to install the gems into ./vendor/bundle/, or you can enter your password
539
- and install the bundled gems to RubyGems using sudo.
540
-
541
- Password:
542
- PROMPT
543
-
544
- unless @prompted_for_sudo ||= system(%(sudo -k -p "#{prompt}" true))
545
- raise SudoNotPermittedError,
546
- "Bundler requires sudo access to install at the moment. " \
547
- "Try installing again, granting Bundler sudo access when prompted, or installing into a different path."
548
- end
549
-
550
- `sudo -p "#{prompt}" #{str}`
551
- end
552
- end
553
-
554
529
  def read_file(file)
555
530
  SharedHelpers.filesystem_access(file, :read) do
556
531
  File.open(file, "r:UTF-8", &:read)
557
532
  end
558
533
  end
559
534
 
560
- def load_marshal(data)
561
- Marshal.load(data)
562
- rescue StandardError => e
563
- raise MarshalError, "#{e.class}: #{e.message}"
535
+ def safe_load_marshal(data)
536
+ if Gem.respond_to?(:load_safe_marshal)
537
+ Gem.load_safe_marshal
538
+ begin
539
+ Gem::SafeMarshal.safe_load(data)
540
+ rescue Gem::SafeMarshal::Reader::Error, Gem::SafeMarshal::Visitors::ToRuby::Error => e
541
+ raise MarshalError, "#{e.class}: #{e.message}"
542
+ end
543
+ else
544
+ load_marshal(data, marshal_proc: SafeMarshal.proc)
545
+ end
564
546
  end
565
547
 
566
548
  def load_gemspec(file, validate = false)
@@ -569,7 +551,7 @@ EOF
569
551
  @gemspec_cache[key] ||= load_gemspec_uncached(file, validate)
570
552
  # Protect against caching side-effected gemspecs by returning a
571
553
  # new instance each time.
572
- @gemspec_cache[key].dup if @gemspec_cache[key]
554
+ @gemspec_cache[key]&.dup
573
555
  end
574
556
 
575
557
  def load_gemspec_uncached(file, validate = false)
@@ -596,7 +578,7 @@ EOF
596
578
 
597
579
  def git_present?
598
580
  return @git_present if defined?(@git_present)
599
- @git_present = Bundler.which("git") || Bundler.which("git.exe")
581
+ @git_present = Bundler.which("git#{RbConfig::CONFIG["EXEEXT"]}")
600
582
  end
601
583
 
602
584
  def feature_flag
@@ -618,7 +600,7 @@ EOF
618
600
  @bin_path = nil
619
601
  @bundler_major_version = nil
620
602
  @bundle_path = nil
621
- @configured = nil
603
+ @configure = nil
622
604
  @configured_bundle_path = nil
623
605
  @definition = nil
624
606
  @load = nil
@@ -642,15 +624,26 @@ EOF
642
624
  Bundler.rubygems.clear_paths
643
625
  end
644
626
 
627
+ def self_manager
628
+ @self_manager ||= begin
629
+ require_relative "bundler/self_manager"
630
+ Bundler::SelfManager.new
631
+ end
632
+ end
633
+
645
634
  private
646
635
 
636
+ def load_marshal(data, marshal_proc: nil)
637
+ Marshal.load(data, marshal_proc)
638
+ rescue TypeError => e
639
+ raise MarshalError, "#{e.class}: #{e.message}"
640
+ end
641
+
647
642
  def eval_yaml_gemspec(path, contents)
648
- require_relative "bundler/psyched_yaml"
643
+ Kernel.require "psych"
649
644
 
650
- # If the YAML is invalid, Syck raises an ArgumentError, and Psych
651
- # raises a Psych::SyntaxError. See psyched_yaml.rb for more info.
652
645
  Gem::Specification.from_yaml(contents)
653
- rescue YamlLibrarySyntaxError, ArgumentError, Gem::EndOfYAMLException, Gem::Exception
646
+ rescue ::Psych::SyntaxError, ArgumentError, Gem::EndOfYAMLException, Gem::Exception
654
647
  eval_gemspec(path, contents)
655
648
  end
656
649