bundler 2.2.29 → 2.5.16

Sign up to get free protection for your applications and to get access to all the features.
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/README.md CHANGED
@@ -1,5 +1,4 @@
1
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)
3
2
 
4
3
  # Bundler: a gem to bundle gems
5
4
 
@@ -32,26 +31,23 @@ See [bundler.io](https://bundler.io) for the full documentation.
32
31
 
33
32
  For help with common problems, see [TROUBLESHOOTING](doc/TROUBLESHOOTING.md).
34
33
 
35
- Still stuck? Try [filing an issue](doc/contributing/ISSUES.md).
34
+ Still stuck? Try [filing an issue](https://github.com/rubygems/rubygems/issues/new?labels=Bundler&template=bundler-related-issue.md).
36
35
 
37
36
  ### Other questions
38
37
 
39
38
  To see what has changed in recent versions of Bundler, see the [CHANGELOG](CHANGELOG.md).
40
39
 
41
- To get in touch with the Bundler core team and other Bundler users, please see [getting help](doc/contributing/GETTING_HELP.md).
40
+ To get in touch with the Bundler core team and other Bundler users, please join [the Bundler slack](https://join.slack.com/t/bundler/shared_invite/zt-1rrsuuv3m-OmXKWQf8K6iSla4~F1DBjQ).
42
41
 
43
42
  ### Contributing
44
43
 
45
44
  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.
46
45
 
47
- If you'd like to request a substantial change to Bundler or its documentation, refer to the [Bundler RFC process](https://github.com/bundler/rfcs) for more information.
48
-
49
- 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.
46
+ 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.
50
47
 
51
48
  ### Supporting
52
49
 
53
- <a href="https://rubytogether.org/"><img src="https://rubytogether.org/images/rubies.svg" width="150"></a><br>
54
- <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.
50
+ 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).
55
51
 
56
52
  ### Code of Conduct
57
53
 
data/bundler.gemspec CHANGED
@@ -22,17 +22,17 @@ 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/rubygems/rubygems/issues?q=is%3Aopen+is%3Aissue+label%3ABundler",
28
- "changelog_uri" => "https://github.com/rubygems/rubygems/blob/master/bundler/CHANGELOG.md",
29
- "homepage_uri" => "https://bundler.io/",
30
- "source_code_uri" => "https://github.com/rubygems/rubygems/",
31
- }
32
- end
33
-
34
- s.required_ruby_version = ">= 2.3.0"
35
- s.required_rubygems_version = ">= 2.5.2"
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
+ }
31
+
32
+ s.required_ruby_version = ">= 3.0.0"
33
+
34
+ # It should match the RubyGems version shipped with `required_ruby_version` above
35
+ s.required_rubygems_version = ">= 3.2.3"
36
36
 
37
37
  s.files = Dir.glob("lib/bundler{.rb,/**/*}", File::FNM_DOTMATCH).reject {|f| File.directory?(f) }
38
38
 
data/exe/bundle CHANGED
@@ -10,41 +10,20 @@ end
10
10
  base_path = File.expand_path("../lib", __dir__)
11
11
 
12
12
  if File.exist?(base_path)
13
- require_relative "../lib/bundler"
14
- else
15
- require "bundler"
13
+ $LOAD_PATH.unshift(base_path)
16
14
  end
17
15
 
18
- # Workaround for non-activated bundler spec due to missing https://github.com/rubygems/rubygems/commit/4e306d7bcdee924b8d80ca9db6125aa59ee4e5a3
19
- gem "bundler", Bundler::VERSION if Gem.rubygems_version < Gem::Version.new("2.6.2")
20
-
21
- # Check if an older version of bundler is installed
22
- $LOAD_PATH.each do |path|
23
- next unless path =~ %r{/bundler-0\.(\d+)} && $1.to_i < 9
24
- err = String.new
25
- err << "Looks like you have a version of bundler that's older than 0.9.\n"
26
- err << "Please remove your old versions.\n"
27
- err << "An easy way to do this is by running `gem cleanup bundler`."
28
- abort(err)
29
- end
16
+ require "bundler"
30
17
 
31
- if File.exist?(base_path)
32
- require_relative "../lib/bundler/friendly_errors"
33
- else
34
- require "bundler/friendly_errors"
35
- end
18
+ require "bundler/friendly_errors"
36
19
 
37
20
  Bundler.with_friendly_errors do
38
- if File.exist?(base_path)
39
- require_relative "../lib/bundler/cli"
40
- else
41
- require "bundler/cli"
42
- end
21
+ require "bundler/cli"
43
22
 
44
23
  # Allow any command to use --help flag to show help for that command
45
24
  help_flags = %w[--help -h]
46
25
  help_flag_used = ARGV.any? {|a| help_flags.include? a }
47
26
  args = help_flag_used ? Bundler::CLI.reformatted_help_args(ARGV) : ARGV
48
27
 
49
- Bundler::CLI.start(args, :debug => true)
28
+ Bundler::CLI.start(args, debug: true)
50
29
  end
data/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,8 +4,8 @@ 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-10-08".freeze
8
- @git_commit_sha = "4440b035ef".freeze
7
+ @built_at = "2024-07-18".freeze
8
+ @git_commit_sha = "f49d3d48c9".freeze
9
9
  @release = true
10
10
  # end ivars
11
11
 
@@ -29,9 +29,9 @@ 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
- return @git_commit_sha = Dir.chdir(git_dir) { `git rev-parse --short HEAD`.strip.freeze }
34
+ return @git_commit_sha = IO.popen(%w[git rev-parse --short HEAD], { chdir: git_dir }, &:read).strip.freeze
35
35
  end
36
36
 
37
37
  @git_commit_sha ||= "unknown"
@@ -17,6 +17,6 @@ end
17
17
 
18
18
  Capistrano::Configuration.instance(:must_exist).load do
19
19
  before "deploy:finalize_update", "bundle:install"
20
- Bundler::Deployment.define_task(self, :task, :except => { :no_release => true })
20
+ Bundler::Deployment.define_task(self, :task, except: { no_release: true })
21
21
  set :rake, lambda { "#{fetch(:bundle_cmd, "bundle")} exec rake" }
22
22
  end
@@ -0,0 +1,254 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bundler
4
+ class Checksum
5
+ ALGO_SEPARATOR = "="
6
+ DEFAULT_ALGORITHM = "sha256"
7
+ private_constant :DEFAULT_ALGORITHM
8
+ DEFAULT_BLOCK_SIZE = 16_384
9
+ private_constant :DEFAULT_BLOCK_SIZE
10
+
11
+ class << self
12
+ def from_gem_package(gem_package, algo = DEFAULT_ALGORITHM)
13
+ return if Bundler.settings[:disable_checksum_validation]
14
+ return unless source = gem_package.instance_variable_get(:@gem)
15
+ return unless source.respond_to?(:with_read_io)
16
+
17
+ source.with_read_io do |io|
18
+ from_gem(io, source.path)
19
+ ensure
20
+ io.rewind
21
+ end
22
+ end
23
+
24
+ def from_gem(io, pathname, algo = DEFAULT_ALGORITHM)
25
+ digest = Bundler::SharedHelpers.digest(algo.upcase).new
26
+ buf = String.new(capacity: DEFAULT_BLOCK_SIZE)
27
+ digest << io.readpartial(DEFAULT_BLOCK_SIZE, buf) until io.eof?
28
+ Checksum.new(algo, digest.hexdigest!, Source.new(:gem, pathname))
29
+ end
30
+
31
+ def from_api(digest, source_uri, algo = DEFAULT_ALGORITHM)
32
+ return if Bundler.settings[:disable_checksum_validation]
33
+
34
+ Checksum.new(algo, to_hexdigest(digest, algo), Source.new(:api, source_uri))
35
+ end
36
+
37
+ def from_lock(lock_checksum, lockfile_location)
38
+ algo, digest = lock_checksum.strip.split(ALGO_SEPARATOR, 2)
39
+ Checksum.new(algo, to_hexdigest(digest, algo), Source.new(:lock, lockfile_location))
40
+ end
41
+
42
+ def to_hexdigest(digest, algo = DEFAULT_ALGORITHM)
43
+ return digest unless algo == DEFAULT_ALGORITHM
44
+ return digest if digest.match?(/\A[0-9a-f]{64}\z/i)
45
+
46
+ if digest.match?(%r{\A[-0-9a-z_+/]{43}={0,2}\z}i)
47
+ digest = digest.tr("-_", "+/") # fix urlsafe base64
48
+ digest.unpack1("m0").unpack1("H*")
49
+ else
50
+ raise ArgumentError, "#{digest.inspect} is not a valid SHA256 hex or base64 digest"
51
+ end
52
+ end
53
+ end
54
+
55
+ attr_reader :algo, :digest, :sources
56
+
57
+ def initialize(algo, digest, source)
58
+ @algo = algo
59
+ @digest = digest
60
+ @sources = [source]
61
+ end
62
+
63
+ def ==(other)
64
+ match?(other) && other.sources == sources
65
+ end
66
+
67
+ alias_method :eql?, :==
68
+
69
+ def same_source?(other)
70
+ sources.include?(other.sources.first)
71
+ end
72
+
73
+ def match?(other)
74
+ other.is_a?(self.class) && other.digest == digest && other.algo == algo
75
+ end
76
+
77
+ def hash
78
+ digest.hash
79
+ end
80
+
81
+ def to_s
82
+ "#{to_lock} (from #{sources.first}#{", ..." if sources.size > 1})"
83
+ end
84
+
85
+ def to_lock
86
+ "#{algo}#{ALGO_SEPARATOR}#{digest}"
87
+ end
88
+
89
+ def merge!(other)
90
+ return nil unless match?(other)
91
+
92
+ @sources.concat(other.sources).uniq!
93
+ self
94
+ end
95
+
96
+ def formatted_sources
97
+ sources.join("\n and ").concat("\n")
98
+ end
99
+
100
+ def removable?
101
+ sources.all?(&:removable?)
102
+ end
103
+
104
+ def removal_instructions
105
+ msg = +""
106
+ i = 1
107
+ sources.each do |source|
108
+ msg << " #{i}. #{source.removal}\n"
109
+ i += 1
110
+ end
111
+ msg << " #{i}. run `bundle install`\n"
112
+ end
113
+
114
+ def inspect
115
+ abbr = "#{algo}#{ALGO_SEPARATOR}#{digest[0, 8]}"
116
+ from = "from #{sources.join(" and ")}"
117
+ "#<#{self.class}:#{object_id} #{abbr} #{from}>"
118
+ end
119
+
120
+ class Source
121
+ attr_reader :type, :location
122
+
123
+ def initialize(type, location)
124
+ @type = type
125
+ @location = location
126
+ end
127
+
128
+ def removable?
129
+ type == :lock || type == :gem
130
+ end
131
+
132
+ def ==(other)
133
+ other.is_a?(self.class) && other.type == type && other.location == location
134
+ end
135
+
136
+ # phrased so that the usual string format is grammatically correct
137
+ # rake (10.3.2) sha256=abc123 from #{to_s}
138
+ def to_s
139
+ case type
140
+ when :lock
141
+ "the lockfile CHECKSUMS at #{location}"
142
+ when :gem
143
+ "the gem at #{location}"
144
+ when :api
145
+ "the API at #{location}"
146
+ else
147
+ "#{location} (#{type})"
148
+ end
149
+ end
150
+
151
+ # A full sentence describing how to remove the checksum
152
+ def removal
153
+ case type
154
+ when :lock
155
+ "remove the matching checksum in #{location}"
156
+ when :gem
157
+ "remove the gem at #{location}"
158
+ when :api
159
+ "checksums from #{location} cannot be locally modified, you may need to update your sources"
160
+ else
161
+ "remove #{location} (#{type})"
162
+ end
163
+ end
164
+ end
165
+
166
+ class Store
167
+ attr_reader :store
168
+ protected :store
169
+
170
+ def initialize
171
+ @store = {}
172
+ @store_mutex = Mutex.new
173
+ end
174
+
175
+ def inspect
176
+ "#<#{self.class}:#{object_id} size=#{store.size}>"
177
+ end
178
+
179
+ # Replace when the new checksum is from the same source.
180
+ # The primary purpose is registering checksums from gems where there are
181
+ # duplicates of the same gem (according to full_name) in the index.
182
+ #
183
+ # In particular, this is when 2 gems have two similar platforms, e.g.
184
+ # "darwin20" and "darwin-20", both of which resolve to darwin-20.
185
+ # In the Index, the later gem replaces the former, so we do that here.
186
+ #
187
+ # However, if the new checksum is from a different source, we register like normal.
188
+ # This ensures a mismatch error where there are multiple top level sources
189
+ # that contain the same gem with different checksums.
190
+ def replace(spec, checksum)
191
+ return unless checksum
192
+
193
+ lock_name = spec.name_tuple.lock_name
194
+ @store_mutex.synchronize do
195
+ existing = fetch_checksum(lock_name, checksum.algo)
196
+ if !existing || existing.same_source?(checksum)
197
+ store_checksum(lock_name, checksum)
198
+ else
199
+ merge_checksum(lock_name, checksum, existing)
200
+ end
201
+ end
202
+ end
203
+
204
+ def register(spec, checksum)
205
+ return unless checksum
206
+
207
+ register_checksum(spec.name_tuple.lock_name, checksum)
208
+ end
209
+
210
+ def merge!(other)
211
+ other.store.each do |lock_name, checksums|
212
+ checksums.each do |_algo, checksum|
213
+ register_checksum(lock_name, checksum)
214
+ end
215
+ end
216
+ end
217
+
218
+ def to_lock(spec)
219
+ lock_name = spec.name_tuple.lock_name
220
+ checksums = @store[lock_name]
221
+ if checksums
222
+ "#{lock_name} #{checksums.values.map(&:to_lock).sort.join(",")}"
223
+ else
224
+ lock_name
225
+ end
226
+ end
227
+
228
+ private
229
+
230
+ def register_checksum(lock_name, checksum)
231
+ @store_mutex.synchronize do
232
+ existing = fetch_checksum(lock_name, checksum.algo)
233
+ if existing
234
+ merge_checksum(lock_name, checksum, existing)
235
+ else
236
+ store_checksum(lock_name, checksum)
237
+ end
238
+ end
239
+ end
240
+
241
+ def merge_checksum(lock_name, checksum, existing)
242
+ existing.merge!(checksum) || raise(ChecksumMismatchError.new(lock_name, existing, checksum))
243
+ end
244
+
245
+ def store_checksum(lock_name, checksum)
246
+ (@store[lock_name] ||= {})[checksum.algo] = checksum
247
+ end
248
+
249
+ def fetch_checksum(lock_name, algo)
250
+ @store[lock_name]&.fetch(algo, nil)
251
+ end
252
+ end
253
+ end
254
+ end
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bundler
4
+ module CIDetector
5
+ # NOTE: Any changes made here will need to be made to both lib/rubygems/ci_detector.rb and
6
+ # bundler/lib/bundler/ci_detector.rb (which are enforced duplicates).
7
+ # TODO: Drop that duplication once bundler drops support for RubyGems 3.4
8
+ #
9
+ # ## Recognized CI providers, their signifiers, and the relevant docs ##
10
+ #
11
+ # Travis CI - CI, TRAVIS https://docs.travis-ci.com/user/environment-variables/#default-environment-variables
12
+ # Cirrus CI - CI, CIRRUS_CI https://cirrus-ci.org/guide/writing-tasks/#environment-variables
13
+ # Circle CI - CI, CIRCLECI https://circleci.com/docs/variables/#built-in-environment-variables
14
+ # Gitlab CI - CI, GITLAB_CI https://docs.gitlab.com/ee/ci/variables/
15
+ # AppVeyor - CI, APPVEYOR https://www.appveyor.com/docs/environment-variables/
16
+ # CodeShip - CI_NAME https://docs.cloudbees.com/docs/cloudbees-codeship/latest/pro-builds-and-configuration/environment-variables#_default_environment_variables
17
+ # dsari - CI, DSARI https://github.com/rfinnie/dsari#running
18
+ # Jenkins - BUILD_NUMBER https://www.jenkins.io/doc/book/pipeline/jenkinsfile/#using-environment-variables
19
+ # TeamCity - TEAMCITY_VERSION https://www.jetbrains.com/help/teamcity/predefined-build-parameters.html#Predefined+Server+Build+Parameters
20
+ # Appflow - CI_BUILD_ID https://ionic.io/docs/appflow/automation/environments#predefined-environments
21
+ # TaskCluster - TASKCLUSTER_ROOT_URL https://docs.taskcluster.net/docs/manual/design/env-vars
22
+ # Semaphore - CI, SEMAPHORE https://docs.semaphoreci.com/ci-cd-environment/environment-variables/
23
+ # BuildKite - CI, BUILDKITE https://buildkite.com/docs/pipelines/environment-variables
24
+ # GoCD - GO_SERVER_URL https://docs.gocd.org/current/faq/dev_use_current_revision_in_build.html
25
+ # GH Actions - CI, GITHUB_ACTIONS https://docs.github.com/en/actions/learn-github-actions/variables#default-environment-variables
26
+ #
27
+ # ### Some "standard" ENVs that multiple providers may set ###
28
+ #
29
+ # * CI - this is set by _most_ (but not all) CI providers now; it's approaching a standard.
30
+ # * CI_NAME - Not as frequently used, but some providers set this to specify their own name
31
+
32
+ # Any of these being set is a reasonably reliable indicator that we are
33
+ # executing in a CI environment.
34
+ ENV_INDICATORS = [
35
+ "CI",
36
+ "CI_NAME",
37
+ "CONTINUOUS_INTEGRATION",
38
+ "BUILD_NUMBER",
39
+ "CI_APP_ID",
40
+ "CI_BUILD_ID",
41
+ "CI_BUILD_NUMBER",
42
+ "RUN_ID",
43
+ "TASKCLUSTER_ROOT_URL",
44
+ ].freeze
45
+
46
+ # For each CI, this env suffices to indicate that we're on _that_ CI's
47
+ # containers. (A few of them only supply a CI_NAME variable, which is also
48
+ # nice). And if they set "CI" but we can't tell which one they are, we also
49
+ # want to know that - a bare "ci" without another token tells us as much.
50
+ ENV_DESCRIPTORS = {
51
+ "TRAVIS" => "travis",
52
+ "CIRCLECI" => "circle",
53
+ "CIRRUS_CI" => "cirrus",
54
+ "DSARI" => "dsari",
55
+ "SEMAPHORE" => "semaphore",
56
+ "JENKINS_URL" => "jenkins",
57
+ "BUILDKITE" => "buildkite",
58
+ "GO_SERVER_URL" => "go",
59
+ "GITLAB_CI" => "gitlab",
60
+ "GITHUB_ACTIONS" => "github",
61
+ "TASKCLUSTER_ROOT_URL" => "taskcluster",
62
+ "CI" => "ci",
63
+ }.freeze
64
+
65
+ def self.ci?
66
+ ENV_INDICATORS.any? {|var| ENV.include?(var) }
67
+ end
68
+
69
+ def self.ci_strings
70
+ matching_names = ENV_DESCRIPTORS.select {|env, _| ENV[env] }.values
71
+ matching_names << ENV["CI_NAME"].downcase if ENV["CI_NAME"]
72
+ matching_names.reject(&:empty?).sort.uniq
73
+ end
74
+ end
75
+ end
@@ -28,9 +28,9 @@ module Bundler
28
28
  dependencies = gems.map {|g| Bundler::Dependency.new(g, version, options) }
29
29
 
30
30
  Injector.inject(dependencies,
31
- :conservative_versioning => options[:version].nil?, # Perform conservative versioning only when version is not specified
32
- :optimistic => options[:optimistic],
33
- :strict => options[:strict])
31
+ conservative_versioning: options[:version].nil?, # Perform conservative versioning only when version is not specified
32
+ optimistic: options[:optimistic],
33
+ strict: options[:strict])
34
34
  end
35
35
 
36
36
  def validate_options!
@@ -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
@@ -11,15 +11,15 @@ module Bundler
11
11
  def run
12
12
  Bundler.definition.validate_runtime!
13
13
  path_option = options["path"]
14
- path_option = nil if path_option && path_option.empty?
14
+ path_option = nil if path_option&.empty?
15
15
  Bundler.settings.set_command_option :bin, path_option if options["path"]
16
16
  Bundler.settings.set_command_option_if_given :shebang, options["shebang"]
17
17
  installer = Installer.new(Bundler.root, Bundler.definition)
18
18
 
19
19
  installer_opts = {
20
- :force => options[:force],
21
- :binstubs_cmd => true,
22
- :all_platforms => options["all-platforms"],
20
+ force: options[:force],
21
+ binstubs_cmd: true,
22
+ all_platforms: options["all-platforms"],
23
23
  }
24
24
 
25
25
  if options[:all]
@@ -40,8 +40,12 @@ module Bundler
40
40
  end
41
41
 
42
42
  if options[:standalone]
43
- next Bundler.ui.warn("Sorry, Bundler can only be run via RubyGems.") if gem_name == "bundler"
44
- Bundler.settings.temporary(:path => (Bundler.settings[:path] || Bundler.root)) do
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
+
48
+ Bundler.settings.temporary(path: Bundler.settings[:path] || Bundler.root) do
45
49
  installer.generate_standalone_bundler_executable_stubs(spec, installer_opts)
46
50
  end
47
51
  else
@@ -19,7 +19,7 @@ module Bundler
19
19
  # TODO: move cache contents here now that all bundles are locked
20
20
  custom_path = Bundler.settings[:path] if options[:path]
21
21
 
22
- Bundler.settings.temporary(:cache_all_platforms => options["all-platforms"]) do
22
+ Bundler.settings.temporary(cache_all_platforms: options["all-platforms"]) do
23
23
  Bundler.load.cache(custom_path)
24
24
  end
25
25
  end
@@ -17,7 +17,7 @@ module Bundler
17
17
  begin
18
18
  definition.resolve_only_locally!
19
19
  not_installed = definition.missing_specs
20
- rescue GemNotFound, VersionConflict
20
+ rescue GemNotFound, SolveFailure
21
21
  Bundler.ui.error "Bundler can't satisfy your Gemfile's dependencies."
22
22
  Bundler.ui.warn "Install missing gems with `bundle install`."
23
23
  exit 1
@@ -29,10 +29,10 @@ module Bundler
29
29
  Bundler.ui.warn "Install missing gems with `bundle install`"
30
30
  exit 1
31
31
  elsif !Bundler.default_lockfile.file? && Bundler.frozen_bundle?
32
- Bundler.ui.error "This bundle has been frozen, but there is no #{Bundler.default_lockfile.relative_path_from(SharedHelpers.pwd)} present"
32
+ Bundler.ui.error "This bundle has been frozen, but there is no #{SharedHelpers.relative_lockfile_path} present"
33
33
  exit 1
34
34
  else
35
- Bundler.load.lock(:preserve_unknown_sections => true) unless options[:"dry-run"]
35
+ Bundler.load.lock(preserve_unknown_sections: true) unless options[:"dry-run"]
36
36
  Bundler.ui.info "The Gemfile's dependencies are satisfied"
37
37
  end
38
38
  end
@@ -15,6 +15,7 @@ module Bundler
15
15
  end
16
16
 
17
17
  def self.output_fund_metadata_summary
18
+ return if Bundler.settings["ignore_funding_requests"]
18
19
  definition = Bundler.definition
19
20
  current_dependencies = definition.requested_dependencies
20
21
  current_specs = definition.specs
@@ -40,7 +41,7 @@ module Bundler
40
41
  end
41
42
 
42
43
  def self.verbalize_groups(groups)
43
- groups.map!{|g| "'#{g}'" }
44
+ groups.map! {|g| "'#{g}'" }
44
45
  group_list = [groups[0...-1].join(", "), groups[-1..-1]].
45
46
  reject {|s| s.to_s.empty? }.join(" and ")
46
47
  group_str = groups.size == 1 ? "group" : "groups"
@@ -53,9 +54,12 @@ module Bundler
53
54
 
54
55
  Bundler.definition.specs.each do |spec|
55
56
  return spec if spec.name == name
56
- specs << spec if regexp && spec.name =~ regexp
57
+ specs << spec if regexp && spec.name.match?(regexp)
57
58
  end
58
59
 
60
+ default_spec = default_gem_spec(name)
61
+ specs << default_spec if default_spec
62
+
59
63
  case specs.count
60
64
  when 0
61
65
  dep_in_other_group = Bundler.definition.current_dependencies.find {|dep|dep.name == name }
@@ -74,6 +78,11 @@ module Bundler
74
78
  raise GemNotFound, gem_not_found_message(name, Bundler.definition.dependencies)
75
79
  end
76
80
 
81
+ def self.default_gem_spec(name)
82
+ gem_spec = Gem::Specification.find_all_by_name(name).last
83
+ gem_spec if gem_spec&.default_gem?
84
+ end
85
+
77
86
  def self.ask_for_spec_from(specs)
78
87
  specs.each_with_index do |spec, index|
79
88
  Bundler.ui.info "#{index.succ} : #{spec.name}", true
@@ -109,7 +118,8 @@ module Bundler
109
118
 
110
119
  definition.gem_version_promoter.tap do |gvp|
111
120
  gvp.level = patch_level.first || :major
112
- gvp.strict = options[:strict] || options["update-strict"] || options["filter-strict"]
121
+ gvp.strict = options[:strict] || options["filter-strict"]
122
+ gvp.pre = options[:pre]
113
123
  end
114
124
  end
115
125