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
@@ -13,16 +13,16 @@ module Bundler
13
13
  end
14
14
 
15
15
  def install_from_spec
16
- post_install_message = spec_settings ? install_with_settings : install
16
+ post_install_message = install
17
17
  Bundler.ui.debug "#{worker}: #{spec.name} (#{spec.version}) from #{spec.loaded_from}"
18
18
  generate_executable_stubs
19
- return true, post_install_message
20
- rescue Bundler::InstallHookError, Bundler::SecurityError, Bundler::APIResponseMismatchError
19
+ [true, post_install_message]
20
+ rescue Bundler::InstallHookError, Bundler::SecurityError, Bundler::APIResponseMismatchError, Bundler::InsecureInstallPathError
21
21
  raise
22
22
  rescue Errno::ENOSPC
23
- return false, out_of_space_message
24
- rescue Bundler::BundlerError, Gem::InstallError, Bundler::APIResponseInvalidDependenciesError => e
25
- return false, specific_failure_message(e)
23
+ [false, out_of_space_message]
24
+ rescue Bundler::BundlerError, Gem::InstallError => e
25
+ [false, specific_failure_message(e)]
26
26
  end
27
27
 
28
28
  private
@@ -51,12 +51,19 @@ module Bundler
51
51
  end
52
52
 
53
53
  def install
54
- spec.source.install(spec, :force => force, :ensure_builtin_gems_cached => standalone, :build_args => Array(spec_settings))
54
+ spec.source.install(
55
+ spec,
56
+ force: force,
57
+ build_args: Array(spec_settings),
58
+ previous_spec: previous_spec,
59
+ )
55
60
  end
56
61
 
57
- def install_with_settings
58
- # Build arguments are global, so this is mutexed
59
- Bundler.rubygems.install_with_build_args([spec_settings]) { install }
62
+ def previous_spec
63
+ locked_gems = installer.definition.locked_gems
64
+ return unless locked_gems
65
+
66
+ locked_gems.specs.find {|s| s.name == spec.name }
60
67
  end
61
68
 
62
69
  def out_of_space_message
@@ -69,7 +76,7 @@ module Bundler
69
76
  if Bundler.settings[:bin] && standalone
70
77
  installer.generate_standalone_bundler_executable_stubs(spec)
71
78
  elsif Bundler.settings[:bin]
72
- installer.generate_bundler_executable_stubs(spec, :force => true)
79
+ installer.generate_bundler_executable_stubs(spec, force: true)
73
80
  end
74
81
  end
75
82
  end
@@ -42,8 +42,7 @@ module Bundler
42
42
 
43
43
  # Checks installed dependencies against spec's dependencies to make
44
44
  # sure needed dependencies have been installed.
45
- def dependencies_installed?(all_specs)
46
- installed_specs = all_specs.select(&:installed?).map(&:name)
45
+ def dependencies_installed?(installed_specs)
47
46
  dependencies.all? {|d| installed_specs.include? d.name }
48
47
  end
49
48
 
@@ -53,10 +52,6 @@ module Bundler
53
52
  @dependencies ||= all_dependencies.reject {|dep| ignorable_dependency? dep }
54
53
  end
55
54
 
56
- def missing_lockfile_dependencies(all_spec_names)
57
- dependencies.reject {|dep| all_spec_names.include? dep.name }
58
- end
59
-
60
55
  # Represents all dependencies
61
56
  def all_dependencies
62
57
  @spec.dependencies
@@ -67,25 +62,26 @@ module Bundler
67
62
  end
68
63
  end
69
64
 
70
- def self.call(*args)
71
- new(*args).call
65
+ def self.call(*args, **kwargs)
66
+ new(*args, **kwargs).call
72
67
  end
73
68
 
74
69
  attr_reader :size
75
70
 
76
- def initialize(installer, all_specs, size, standalone, force)
71
+ def initialize(installer, all_specs, size, standalone, force, skip: nil)
77
72
  @installer = installer
78
73
  @size = size
79
74
  @standalone = standalone
80
75
  @force = force
81
76
  @specs = all_specs.map {|s| SpecInstallation.new(s) }
77
+ @specs.each do |spec_install|
78
+ spec_install.state = :installed if skip.include?(spec_install.name)
79
+ end if skip
82
80
  @spec_set = all_specs
83
- @rake = @specs.find {|s| s.name == "rake" }
81
+ @rake = @specs.find {|s| s.name == "rake" unless s.installed? }
84
82
  end
85
83
 
86
84
  def call
87
- check_for_corrupt_lockfile
88
-
89
85
  if @rake
90
86
  do_install(@rake, 0)
91
87
  Gem::Specification.reset
@@ -97,60 +93,10 @@ module Bundler
97
93
  install_serially
98
94
  end
99
95
 
100
- check_for_unmet_dependencies
101
-
102
96
  handle_error if failed_specs.any?
103
97
  @specs
104
98
  ensure
105
- worker_pool && worker_pool.stop
106
- end
107
-
108
- def check_for_unmet_dependencies
109
- unmet_dependencies = @specs.map do |s|
110
- [
111
- s,
112
- s.dependencies.reject {|dep| @specs.any? {|spec| dep.matches_spec?(spec.spec) } },
113
- ]
114
- end.reject {|a| a.last.empty? }
115
- return if unmet_dependencies.empty?
116
-
117
- warning = []
118
- warning << "Your lockfile doesn't include a valid resolution."
119
- warning << "You can fix this by regenerating your lockfile or trying to manually editing the bad locked gems to a version that satisfies all dependencies."
120
- warning << "The unmet dependencies are:"
121
-
122
- unmet_dependencies.each do |spec, unmet_spec_dependencies|
123
- unmet_spec_dependencies.each do |unmet_spec_dependency|
124
- warning << "* #{unmet_spec_dependency}, depended upon #{spec.full_name}, unsatisfied by #{@specs.find {|s| s.name == unmet_spec_dependency.name && !unmet_spec_dependency.matches_spec?(s.spec) }.full_name}"
125
- end
126
- end
127
-
128
- Bundler.ui.warn(warning.join("\n"))
129
- end
130
-
131
- def check_for_corrupt_lockfile
132
- missing_dependencies = @specs.map do |s|
133
- [
134
- s,
135
- s.missing_lockfile_dependencies(@specs.map(&:name)),
136
- ]
137
- end.reject {|a| a.last.empty? }
138
- return if missing_dependencies.empty?
139
-
140
- warning = []
141
- warning << "Your lockfile was created by an old Bundler that left some things out."
142
- if @size != 1
143
- warning << "Because of the missing DEPENDENCIES, we can only install gems one at a time, instead of installing #{@size} at a time."
144
- @size = 1
145
- end
146
- warning << "You can fix this by adding the missing gems to your Gemfile, running bundle install, and then removing the gems from your Gemfile."
147
- warning << "The missing gems are:"
148
-
149
- missing_dependencies.each do |spec, missing|
150
- warning << "* #{missing.map(&:name).join(", ")} depended upon by #{spec.name}"
151
- end
152
-
153
- Bundler.ui.warn(warning.join("\n"))
99
+ worker_pool&.stop
154
100
  end
155
101
 
156
102
  private
@@ -239,8 +185,14 @@ module Bundler
239
185
  # previously installed specifications. We continue until all specs
240
186
  # are installed.
241
187
  def enqueue_specs
242
- @specs.select(&:ready_to_enqueue?).each do |spec|
243
- if spec.dependencies_installed? @specs
188
+ installed_specs = {}
189
+ @specs.each do |spec|
190
+ next unless spec.installed?
191
+ installed_specs[spec.name] = true
192
+ end
193
+
194
+ @specs.each do |spec|
195
+ if spec.ready_to_enqueue? && spec.dependencies_installed?(installed_specs)
244
196
  spec.state = :enqueued
245
197
  worker_pool.enq spec
246
198
  end
@@ -12,6 +12,8 @@ module Bundler
12
12
  end
13
13
  File.open File.join(bundler_path, "setup.rb"), "w" do |file|
14
14
  file.puts "require 'rbconfig'"
15
+ file.puts prevent_gem_activation
16
+ file.puts define_path_helpers
15
17
  file.puts reverse_rubygems_kernel_mixin
16
18
  paths.each do |path|
17
19
  if Pathname.new(path).absolute?
@@ -29,41 +31,80 @@ module Bundler
29
31
  @specs.map do |spec|
30
32
  next if spec.name == "bundler"
31
33
  Array(spec.require_paths).map do |path|
32
- gem_path(path, spec).sub(version_dir, '#{RUBY_ENGINE}/#{RbConfig::CONFIG["ruby_version"]}')
34
+ gem_path(path, spec).
35
+ sub(version_dir, '#{RUBY_ENGINE}/#{Gem.ruby_api_version}').
36
+ sub(extensions_dir, 'extensions/\k<platform>/#{Gem.extension_api_version}')
33
37
  # This is a static string intentionally. It's interpolated at a later time.
34
38
  end
35
39
  end.flatten.compact
36
40
  end
37
41
 
38
42
  def version_dir
39
- "#{RUBY_ENGINE}/#{RbConfig::CONFIG["ruby_version"]}"
43
+ "#{RUBY_ENGINE}/#{Gem.ruby_api_version}"
44
+ end
45
+
46
+ def extensions_dir
47
+ %r{extensions/(?<platform>[^/]+)/#{Regexp.escape(Gem.extension_api_version)}}
40
48
  end
41
49
 
42
50
  def bundler_path
43
- Bundler.root.join(Bundler.settings[:path], "bundler")
51
+ Bundler.root.join(Bundler.settings[:path].to_s, "bundler")
44
52
  end
45
53
 
46
54
  def gem_path(path, spec)
47
55
  full_path = Pathname.new(path).absolute? ? path : File.join(spec.full_gem_path, path)
48
- if spec.source.instance_of?(Source::Path)
56
+ if spec.source.instance_of?(Source::Path) && spec.source.path.absolute?
49
57
  full_path
50
58
  else
51
- Pathname.new(full_path).relative_path_from(Bundler.root.join(bundler_path)).to_s
59
+ SharedHelpers.relative_path_to(full_path, from: Bundler.root.join(bundler_path))
52
60
  end
53
- rescue TypeError
54
- error_message = "#{spec.name} #{spec.version} has an invalid gemspec"
55
- raise Gem::InvalidSpecificationException.new(error_message)
61
+ end
62
+
63
+ def prevent_gem_activation
64
+ <<~'END'
65
+ module Kernel
66
+ remove_method(:gem) if private_method_defined?(:gem)
67
+
68
+ def gem(*)
69
+ end
70
+
71
+ private :gem
72
+ end
73
+ END
74
+ end
75
+
76
+ def define_path_helpers
77
+ <<~'END'
78
+ unless defined?(Gem)
79
+ module Gem
80
+ def self.ruby_api_version
81
+ RbConfig::CONFIG["ruby_version"]
82
+ end
83
+
84
+ def self.extension_api_version
85
+ if 'no' == RbConfig::CONFIG['ENABLE_SHARED']
86
+ "#{ruby_api_version}-static"
87
+ else
88
+ ruby_api_version
89
+ end
90
+ end
91
+ end
92
+ end
93
+ END
56
94
  end
57
95
 
58
96
  def reverse_rubygems_kernel_mixin
59
97
  <<~END
60
- kernel = (class << ::Kernel; self; end)
61
- [kernel, ::Kernel].each do |k|
62
- if k.private_method_defined?(:gem_original_require)
63
- private_require = k.private_method_defined?(:require)
64
- k.send(:remove_method, :require)
65
- k.send(:define_method, :require, k.instance_method(:gem_original_require))
66
- k.send(:private, :require) if private_require
98
+ if Gem.respond_to?(:discover_gems_on_require=)
99
+ Gem.discover_gems_on_require = false
100
+ else
101
+ [::Kernel.singleton_class, ::Kernel].each do |k|
102
+ if k.private_method_defined?(:gem_original_require)
103
+ private_require = k.private_method_defined?(:require)
104
+ k.send(:remove_method, :require)
105
+ k.send(:define_method, :require, k.instance_method(:gem_original_require))
106
+ k.send(:private, :require) if private_require
107
+ end
67
108
  end
68
109
  end
69
110
  END
@@ -13,7 +13,7 @@ module Bundler
13
13
  Installer.ambiguous_gems = []
14
14
  end
15
15
 
16
- attr_reader :post_install_messages
16
+ attr_reader :post_install_messages, :definition
17
17
 
18
18
  # Begins the installation process for Bundler.
19
19
  # For more information see the #run method on this class.
@@ -66,12 +66,10 @@ module Bundler
66
66
  # require paths and save them in a `setup.rb` file. See `bundle standalone --help` for more
67
67
  # information.
68
68
  def run(options)
69
- create_bundle_path
69
+ Bundler.create_bundle_path
70
70
 
71
71
  ProcessLock.lock do
72
- if Bundler.frozen_bundle?
73
- @definition.ensure_equivalent_gemfile_and_lockfile(options[:deployment])
74
- end
72
+ @definition.ensure_equivalent_gemfile_and_lockfile(options[:deployment])
75
73
 
76
74
  if @definition.dependencies.empty?
77
75
  Bundler.ui.warn "The Gemfile specifies no dependencies"
@@ -90,7 +88,7 @@ module Bundler
90
88
 
91
89
  Gem::Specification.reset # invalidate gem specification cache so that installed gems are immediately available
92
90
 
93
- lock unless Bundler.frozen_bundle?
91
+ lock
94
92
  Standalone.new(options[:standalone], @definition).generate if options[:standalone]
95
93
  end
96
94
  end
@@ -119,7 +117,7 @@ module Bundler
119
117
  relative_gemfile_path = relative_gemfile_path
120
118
  ruby_command = Thor::Util.ruby_command
121
119
  ruby_command = ruby_command
122
- template_path = File.expand_path("../templates/Executable", __FILE__)
120
+ template_path = File.expand_path("templates/Executable", __dir__)
123
121
  if spec.name == "bundler"
124
122
  template_path += ".bundler"
125
123
  spec.executables = %(bundle)
@@ -136,16 +134,12 @@ module Bundler
136
134
 
137
135
  mode = Gem.win_platform? ? "wb:UTF-8" : "w"
138
136
  require "erb"
139
- content = if RUBY_VERSION >= "2.6"
140
- ERB.new(template, :trim_mode => "-").result(binding)
141
- else
142
- ERB.new(template, nil, "-").result(binding)
143
- end
137
+ content = ERB.new(template, trim_mode: "-").result(binding)
144
138
 
145
- File.write(binstub_path, content, :mode => mode, :perm => 0o777 & ~File.umask)
139
+ File.write(binstub_path, content, mode: mode, perm: 0o777 & ~File.umask)
146
140
  if Gem.win_platform? || options[:all_platforms]
147
141
  prefix = "@ruby -x \"%~f0\" %*\n@exit /b %ERRORLEVEL%\n\n"
148
- File.write("#{binstub_path}.cmd", prefix + content, :mode => mode)
142
+ File.write("#{binstub_path}.cmd", prefix + content, mode: mode)
149
143
  end
150
144
  end
151
145
 
@@ -172,7 +166,7 @@ module Bundler
172
166
  end
173
167
  standalone_path = Bundler.root.join(path).relative_path_from(bin_path)
174
168
  standalone_path = standalone_path
175
- template = File.read(File.expand_path("../templates/Executable.standalone", __FILE__))
169
+ template = File.read(File.expand_path("templates/Executable.standalone", __dir__))
176
170
  ruby_command = Thor::Util.ruby_command
177
171
  ruby_command = ruby_command
178
172
 
@@ -183,16 +177,12 @@ module Bundler
183
177
 
184
178
  mode = Gem.win_platform? ? "wb:UTF-8" : "w"
185
179
  require "erb"
186
- content = if RUBY_VERSION >= "2.6"
187
- ERB.new(template, :trim_mode => "-").result(binding)
188
- else
189
- ERB.new(template, nil, "-").result(binding)
190
- end
180
+ content = ERB.new(template, trim_mode: "-").result(binding)
191
181
 
192
- File.write("#{bin_path}/#{executable}", content, :mode => mode, :perm => 0o755)
182
+ File.write("#{bin_path}/#{executable}", content, mode: mode, perm: 0o755)
193
183
  if Gem.win_platform? || options[:all_platforms]
194
184
  prefix = "@ruby -x \"%~f0\" %*\n@exit /b %ERRORLEVEL%\n\n"
195
- File.write("#{bin_path}/#{executable}.cmd", prefix + content, :mode => mode)
185
+ File.write("#{bin_path}/#{executable}.cmd", prefix + content, mode: mode)
196
186
  end
197
187
  end
198
188
  end
@@ -218,42 +208,32 @@ module Bundler
218
208
  return jobs
219
209
  end
220
210
 
221
- # Parallelization has some issues on Windows, so it's not yet the default
222
- return 1 if Gem.win_platform?
223
-
224
211
  Bundler.settings.processor_count
225
212
  end
226
213
 
227
214
  def load_plugins
228
- Bundler.rubygems.load_plugins
215
+ Gem.load_plugins
229
216
 
230
217
  requested_path_gems = @definition.requested_specs.select {|s| s.source.is_a?(Source::Path) }
231
218
  path_plugin_files = requested_path_gems.map do |spec|
232
- begin
233
- Bundler.rubygems.spec_matches_for_glob(spec, "rubygems_plugin#{Bundler.rubygems.suffix_pattern}")
234
- rescue TypeError
235
- error_message = "#{spec.name} #{spec.version} has an invalid gemspec"
236
- raise Gem::InvalidSpecificationException, error_message
237
- end
219
+ Bundler.rubygems.spec_matches_for_glob(spec, "rubygems_plugin#{Bundler.rubygems.suffix_pattern}")
220
+ rescue TypeError
221
+ error_message = "#{spec.name} #{spec.version} has an invalid gemspec"
222
+ raise Gem::InvalidSpecificationException, error_message
238
223
  end.flatten
239
- Bundler.rubygems.load_plugin_files(path_plugin_files)
240
- Bundler.rubygems.load_env_plugins
224
+ Gem.load_plugin_files(path_plugin_files)
225
+ Gem.load_env_plugins
241
226
  end
242
227
 
243
228
  def ensure_specs_are_compatible!
244
- system_ruby = Bundler::RubyVersion.system
245
- rubygems_version = Gem::Version.create(Gem::VERSION)
246
229
  @definition.specs.each do |spec|
247
- if required_ruby_version = spec.required_ruby_version
248
- unless required_ruby_version.satisfied_by?(system_ruby.gem_version)
249
- raise InstallError, "#{spec.full_name} requires ruby version #{required_ruby_version}, " \
250
- "which is incompatible with the current version, #{system_ruby}"
251
- end
230
+ unless spec.matches_current_ruby?
231
+ raise InstallError, "#{spec.full_name} requires ruby version #{spec.required_ruby_version}, " \
232
+ "which is incompatible with the current version, #{Gem.ruby_version}"
252
233
  end
253
- next unless required_rubygems_version = spec.required_rubygems_version
254
- unless required_rubygems_version.satisfied_by?(rubygems_version)
255
- raise InstallError, "#{spec.full_name} requires rubygems version #{required_rubygems_version}, " \
256
- "which is incompatible with the current version, #{rubygems_version}"
234
+ unless spec.matches_current_rubygems?
235
+ raise InstallError, "#{spec.full_name} requires rubygems version #{spec.required_rubygems_version}, " \
236
+ "which is incompatible with the current version, #{Gem.rubygems_version}"
257
237
  end
258
238
  end
259
239
  end
@@ -265,27 +245,21 @@ module Bundler
265
245
  end
266
246
  end
267
247
 
268
- def create_bundle_path
269
- SharedHelpers.filesystem_access(Bundler.bundle_path.to_s) do |p|
270
- Bundler.mkdir_p(p)
271
- end unless Bundler.bundle_path.exist?
272
- rescue Errno::EEXIST
273
- raise PathError, "Could not install to path `#{Bundler.bundle_path}` " \
274
- "because a file already exists at that path. Either remove or rename the file so the directory can be created."
275
- end
276
-
277
248
  # returns whether or not a re-resolve was needed
278
249
  def resolve_if_needed(options)
279
- if !@definition.unlocking? && !options["force"] && !Bundler.settings[:inline] && Bundler.default_lockfile.file?
280
- return false if @definition.nothing_changed? && !@definition.missing_specs?
250
+ @definition.prefer_local! if options["prefer-local"]
251
+
252
+ if options["local"] || (@definition.no_resolve_needed? && !@definition.missing_specs?)
253
+ @definition.resolve_with_cache!
254
+ false
255
+ else
256
+ @definition.resolve_remotely!
257
+ true
281
258
  end
282
-
283
- options["local"] ? @definition.resolve_with_cache! : @definition.resolve_remotely!
284
- true
285
259
  end
286
260
 
287
- def lock(opts = {})
288
- @definition.lock(Bundler.default_lockfile, opts[:preserve_unknown_sections])
261
+ def lock
262
+ @definition.lock
289
263
  end
290
264
  end
291
265
  end