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
@@ -16,22 +16,30 @@ module Bundler
16
16
  spec.loaded_from = spec_file
17
17
 
18
18
  # Completely remove any previous gem files
19
- FileUtils.rm_rf gem_dir
20
- FileUtils.rm_rf spec.extension_dir
19
+ strict_rm_rf gem_dir
20
+ strict_rm_rf spec.extension_dir
21
21
 
22
- FileUtils.mkdir_p gem_dir, :mode => 0o755
22
+ SharedHelpers.filesystem_access(gem_dir, :create) do
23
+ FileUtils.mkdir_p gem_dir, mode: 0o755
24
+ end
23
25
 
24
26
  extract_files
25
27
 
26
- build_extensions
28
+ build_extensions if spec.extensions.any?
27
29
  write_build_info_file
28
30
  run_post_build_hooks
29
31
 
30
- generate_bin
32
+ SharedHelpers.filesystem_access(bin_dir, :write) do
33
+ generate_bin
34
+ end
35
+
31
36
  generate_plugins
32
37
 
33
38
  write_spec
34
- write_cache_file
39
+
40
+ SharedHelpers.filesystem_access("#{gem_home}/cache", :write) do
41
+ write_cache_file
42
+ end
35
43
 
36
44
  say spec.post_install_message unless spec.post_install_message.nil?
37
45
 
@@ -40,6 +48,24 @@ module Bundler
40
48
  spec
41
49
  end
42
50
 
51
+ if Bundler.rubygems.provides?("< 3.5")
52
+ def pre_install_checks
53
+ super
54
+ rescue Gem::FilePermissionError
55
+ # Ignore permission checks in RubyGems. Instead, go on, and try to write
56
+ # for real. We properly handle permission errors when they happen.
57
+ nil
58
+ end
59
+ end
60
+
61
+ def ensure_writable_dir(dir)
62
+ super
63
+ rescue Gem::FilePermissionError
64
+ # Ignore permission checks in RubyGems. Instead, go on, and try to write
65
+ # for real. We properly handle permission errors when they happen.
66
+ nil
67
+ end
68
+
43
69
  def generate_plugins
44
70
  return unless Gem::Installer.instance_methods(false).include?(:generate_plugins)
45
71
 
@@ -55,89 +81,89 @@ module Bundler
55
81
  end
56
82
  end
57
83
 
58
- def pre_install_checks
59
- super && validate_bundler_checksum(options[:bundler_expected_checksum])
84
+ if Bundler.rubygems.provides?("< 3.5.15")
85
+ def generate_bin_script(filename, bindir)
86
+ bin_script_path = File.join bindir, formatted_program_filename(filename)
87
+
88
+ Gem.open_file_with_flock("#{bin_script_path}.lock") do
89
+ require "fileutils"
90
+ FileUtils.rm_f bin_script_path # prior install may have been --no-wrappers
91
+
92
+ File.open(bin_script_path, "wb", 0o755) do |file|
93
+ file.write app_script_text(filename)
94
+ file.chmod(options[:prog_mode] || 0o755)
95
+ end
96
+ end
97
+
98
+ verbose bin_script_path
99
+
100
+ generate_windows_script filename, bindir
101
+ end
60
102
  end
61
103
 
62
104
  def build_extensions
63
105
  extension_cache_path = options[:bundler_extension_cache_path]
64
- unless extension_cache_path && extension_dir = spec.extension_dir
65
- require "shellwords" # compensate missing require in rubygems before version 3.2.25
106
+ extension_dir = spec.extension_dir
107
+ unless extension_cache_path && extension_dir
108
+ prepare_extension_build(extension_dir)
66
109
  return super
67
110
  end
68
111
 
69
- extension_dir = Pathname.new(extension_dir)
70
112
  build_complete = SharedHelpers.filesystem_access(extension_cache_path.join("gem.build_complete"), :read, &:file?)
71
113
  if build_complete && !options[:force]
72
- SharedHelpers.filesystem_access(extension_dir.parent, &:mkpath)
114
+ SharedHelpers.filesystem_access(File.dirname(extension_dir)) do |p|
115
+ FileUtils.mkpath p
116
+ end
73
117
  SharedHelpers.filesystem_access(extension_cache_path) do
74
- FileUtils.cp_r extension_cache_path, spec.extension_dir
118
+ FileUtils.cp_r extension_cache_path, extension_dir
75
119
  end
76
120
  else
77
- require "shellwords" # compensate missing require in rubygems before version 3.2.25
121
+ prepare_extension_build(extension_dir)
78
122
  super
79
- if extension_dir.directory? # not made for gems without extensions
80
- SharedHelpers.filesystem_access(extension_cache_path.parent, &:mkpath)
81
- SharedHelpers.filesystem_access(extension_cache_path) do
82
- FileUtils.cp_r extension_dir, extension_cache_path
83
- end
123
+ SharedHelpers.filesystem_access(extension_cache_path.parent, &:mkpath)
124
+ SharedHelpers.filesystem_access(extension_cache_path) do
125
+ FileUtils.cp_r extension_dir, extension_cache_path
84
126
  end
85
127
  end
86
128
  end
87
129
 
130
+ def spec
131
+ if Bundler.rubygems.provides?("< 3.3.12") # RubyGems implementation rescues and re-raises errors before 3.3.12 and we don't want that
132
+ @package.spec
133
+ else
134
+ super
135
+ end
136
+ end
137
+
138
+ def gem_checksum
139
+ Checksum.from_gem_package(@package)
140
+ end
141
+
88
142
  private
89
143
 
90
- def validate_bundler_checksum(checksum)
91
- return true if Bundler.settings[:disable_checksum_validation]
92
- return true unless checksum
93
- return true unless source = @package.instance_variable_get(:@gem)
94
- return true unless source.respond_to?(:with_read_io)
95
- digest = source.with_read_io do |io|
96
- digest = SharedHelpers.digest(:SHA256).new
97
- digest << io.read(16_384) until io.eof?
98
- io.rewind
99
- send(checksum_type(checksum), digest)
144
+ def prepare_extension_build(extension_dir)
145
+ SharedHelpers.filesystem_access(extension_dir, :create) do
146
+ FileUtils.mkdir_p extension_dir
100
147
  end
101
- unless digest == checksum
102
- raise SecurityError, <<-MESSAGE
103
- Bundler cannot continue installing #{spec.name} (#{spec.version}).
104
- The checksum for the downloaded `#{spec.full_name}.gem` does not match \
105
- the checksum given by the server. This means the contents of the downloaded \
106
- gem is different from what was uploaded to the server, and could be a potential security issue.
107
-
108
- To resolve this issue:
109
- 1. delete the downloaded gem located at: `#{spec.gem_dir}/#{spec.full_name}.gem`
110
- 2. run `bundle install`
111
-
112
- If you wish to continue installing the downloaded gem, and are certain it does not pose a \
113
- security issue despite the mismatching checksum, do the following:
114
- 1. run `bundle config set --local disable_checksum_validation true` to turn off checksum verification
115
- 2. run `bundle install`
116
-
117
- (More info: The expected SHA256 checksum was #{checksum.inspect}, but the \
118
- checksum for the downloaded gem was #{digest.inspect}.)
119
- MESSAGE
120
- end
121
- true
148
+ require "shellwords" unless Bundler.rubygems.provides?(">= 3.2.25")
122
149
  end
123
150
 
124
- def checksum_type(checksum)
125
- case checksum.length
126
- when 64 then :hexdigest!
127
- when 44 then :base64digest!
128
- else raise InstallError, "The given checksum for #{spec.full_name} (#{checksum.inspect}) is not a valid SHA256 hexdigest nor base64digest"
151
+ def strict_rm_rf(dir)
152
+ return unless File.exist?(dir)
153
+
154
+ parent = File.dirname(dir)
155
+ parent_st = File.stat(parent)
156
+
157
+ if parent_st.world_writable? && !parent_st.sticky?
158
+ raise InsecureInstallPathError.new(parent)
129
159
  end
130
- end
131
160
 
132
- def hexdigest!(digest)
133
- digest.hexdigest!
134
- end
161
+ begin
162
+ FileUtils.remove_entry_secure(dir)
163
+ rescue StandardError => e
164
+ raise unless File.exist?(dir)
135
165
 
136
- def base64digest!(digest)
137
- if digest.respond_to?(:base64digest!)
138
- digest.base64digest!
139
- else
140
- [digest.digest!].pack("m0")
166
+ raise DirectoryRemovalError.new(e, "Could not delete previous installation of `#{dir}`")
141
167
  end
142
168
  end
143
169
  end
@@ -4,33 +4,24 @@ require "rubygems" unless defined?(Gem)
4
4
 
5
5
  module Bundler
6
6
  class RubygemsIntegration
7
- if defined?(Gem::Ext::Builder::CHDIR_MONITOR)
8
- EXT_LOCK = Gem::Ext::Builder::CHDIR_MONITOR
9
- else
10
- require "monitor"
7
+ require "monitor"
11
8
 
12
- EXT_LOCK = Monitor.new
13
- end
14
-
15
- def self.version
16
- @version ||= Gem::Version.new(Gem::VERSION)
17
- end
18
-
19
- def self.provides?(req_str)
20
- Gem::Requirement.new(req_str).satisfied_by?(version)
21
- end
9
+ EXT_LOCK = Monitor.new
22
10
 
23
11
  def initialize
24
12
  @replaced_methods = {}
25
- backport_ext_builder_monitor
26
13
  end
27
14
 
28
15
  def version
29
- self.class.version
16
+ @version ||= Gem.rubygems_version
30
17
  end
31
18
 
32
19
  def provides?(req_str)
33
- self.class.provides?(req_str)
20
+ Gem::Requirement.new(req_str).satisfied_by?(version)
21
+ end
22
+
23
+ def supports_bundler_trampolining?
24
+ provides?(">= 3.3.0.a")
34
25
  end
35
26
 
36
27
  def build_args
@@ -47,18 +38,6 @@ module Bundler
47
38
  Gem.loaded_specs[name]
48
39
  end
49
40
 
50
- def add_to_load_path(paths)
51
- return Gem.add_to_load_path(*paths) if Gem.respond_to?(:add_to_load_path)
52
-
53
- if insert_index = Gem.load_path_insert_index
54
- # Gem directories must come after -I and ENV['RUBYLIB']
55
- $LOAD_PATH.insert(insert_index, *paths)
56
- else
57
- # We are probably testing in core, -I and RUBYLIB don't apply
58
- $LOAD_PATH.unshift(*paths)
59
- end
60
- end
61
-
62
41
  def mark_loaded(spec)
63
42
  if spec.respond_to?(:activated=)
64
43
  current = Gem.loaded_specs[spec.name]
@@ -69,7 +48,7 @@ module Bundler
69
48
  end
70
49
 
71
50
  def validate(spec)
72
- Bundler.ui.silence { spec.validate(false) }
51
+ Bundler.ui.silence { spec.validate_for_resolution }
73
52
  rescue Gem::InvalidSpecificationException => e
74
53
  error_message = "The gemspec at #{spec.loaded_from} is not valid. Please fix this gemspec.\n" \
75
54
  "The validation error was '#{e.message}'\n"
@@ -86,22 +65,18 @@ module Bundler
86
65
  def spec_missing_extensions?(spec, default = true)
87
66
  return spec.missing_extensions? if spec.respond_to?(:missing_extensions?)
88
67
 
89
- return false if spec_default_gem?(spec)
68
+ return false if spec.default_gem?
90
69
  return false if spec.extensions.empty?
91
70
 
92
71
  default
93
72
  end
94
73
 
95
- def spec_default_gem?(spec)
96
- spec.respond_to?(:default_gem?) && spec.default_gem?
97
- end
98
-
99
74
  def spec_matches_for_glob(spec, glob)
100
75
  return spec.matches_for_glob(glob) if spec.respond_to?(:matches_for_glob)
101
76
 
102
- spec.load_paths.map do |lp|
77
+ spec.load_paths.flat_map do |lp|
103
78
  Dir["#{lp}/#{glob}#{suffix_pattern}"]
104
- end.flatten(1)
79
+ end
105
80
  end
106
81
 
107
82
  def stub_set_spec(stub, spec)
@@ -112,18 +87,6 @@ module Bundler
112
87
  obj.to_s
113
88
  end
114
89
 
115
- def configuration
116
- require_relative "psyched_yaml"
117
- Gem.configuration
118
- rescue Gem::SystemExitException, LoadError => e
119
- Bundler.ui.error "#{e.class}: #{e.message}"
120
- Bundler.ui.trace e
121
- raise
122
- rescue YamlLibrarySyntaxError => e
123
- raise YamlSyntaxError.new(e, "Your RubyGems configuration, which is " \
124
- "usually located in ~/.gemrc, contains invalid YAML syntax.")
125
- end
126
-
127
90
  def ruby_engine
128
91
  Gem.ruby_engine
129
92
  end
@@ -136,29 +99,6 @@ module Bundler
136
99
  Gem::Util.inflate(obj)
137
100
  end
138
101
 
139
- def correct_for_windows_path(path)
140
- if Gem::Util.respond_to?(:correct_for_windows_path)
141
- Gem::Util.correct_for_windows_path(path)
142
- elsif path[0].chr == "/" && path[1].chr =~ /[a-z]/i && path[2].chr == ":"
143
- path[1..-1]
144
- else
145
- path
146
- end
147
- end
148
-
149
- def sources=(val)
150
- # Gem.configuration creates a new Gem::ConfigFile, which by default will read ~/.gemrc
151
- # If that file exists, its settings (including sources) will overwrite the values we
152
- # are about to set here. In order to avoid that, we force memoizing the config file now.
153
- configuration
154
-
155
- Gem.sources = val
156
- end
157
-
158
- def sources
159
- Gem.sources
160
- end
161
-
162
102
  def gem_dir
163
103
  Gem.dir
164
104
  end
@@ -194,7 +134,7 @@ module Bundler
194
134
  def spec_cache_dirs
195
135
  @spec_cache_dirs ||= begin
196
136
  dirs = gem_path.map {|dir| File.join(dir, "specifications") }
197
- dirs << Gem.spec_cache_dir if Gem.respond_to?(:spec_cache_dir) # Not in RubyGems 2.0.3 or earlier
137
+ dirs << Gem.spec_cache_dir
198
138
  dirs.uniq.select {|dir| File.directory? dir }
199
139
  end
200
140
  end
@@ -216,18 +156,6 @@ module Bundler
216
156
  loaded_gem_paths.flatten
217
157
  end
218
158
 
219
- def load_plugins
220
- Gem.load_plugins if Gem.respond_to?(:load_plugins)
221
- end
222
-
223
- def load_plugin_files(files)
224
- Gem.load_plugin_files(files) if Gem.respond_to?(:load_plugin_files)
225
- end
226
-
227
- def load_env_plugins
228
- Gem.load_env_plugins if Gem.respond_to?(:load_env_plugins)
229
- end
230
-
231
159
  def ui=(obj)
232
160
  Gem::DefaultUserInteraction.ui = obj
233
161
  end
@@ -236,32 +164,9 @@ module Bundler
236
164
  EXT_LOCK
237
165
  end
238
166
 
239
- def with_build_args(args)
240
- ext_lock.synchronize do
241
- old_args = build_args
242
- begin
243
- self.build_args = args
244
- yield
245
- ensure
246
- self.build_args = old_args
247
- end
248
- end
249
- end
250
-
251
- def spec_from_gem(path, policy = nil)
252
- require "rubygems/security"
253
- require_relative "psyched_yaml"
254
- gem_from_path(path, security_policies[policy]).spec
255
- rescue Exception, Gem::Exception, Gem::Security::Exception => e # rubocop:disable Lint/RescueException
256
- if e.is_a?(Gem::Security::Exception) ||
257
- e.message =~ /unknown trust policy|unsigned gem/i ||
258
- e.message =~ /couldn't verify (meta)?data signature/i
259
- raise SecurityError,
260
- "The gem #{File.basename(path, ".gem")} can't be installed because " \
261
- "the security policy didn't allow it, with the message: #{e.message}"
262
- else
263
- raise e
264
- end
167
+ def spec_from_gem(path)
168
+ require "rubygems/package"
169
+ Gem::Package.new(path).spec
265
170
  end
266
171
 
267
172
  def build_gem(gem_dir, spec)
@@ -283,23 +188,23 @@ module Bundler
283
188
 
284
189
  def reverse_rubygems_kernel_mixin
285
190
  # Disable rubygems' gem activation system
286
- kernel = (class << ::Kernel; self; end)
287
- [kernel, ::Kernel].each do |k|
288
- if k.private_method_defined?(:gem_original_require)
289
- redefine_method(k, :require, k.instance_method(:gem_original_require))
191
+ if Gem.respond_to?(:discover_gems_on_require=)
192
+ Gem.discover_gems_on_require = false
193
+ else
194
+ [::Kernel.singleton_class, ::Kernel].each do |k|
195
+ if k.private_method_defined?(:gem_original_require)
196
+ redefine_method(k, :require, k.instance_method(:gem_original_require))
197
+ end
290
198
  end
291
199
  end
292
200
  end
293
201
 
294
202
  def replace_gem(specs, specs_by_name)
295
- reverse_rubygems_kernel_mixin
296
-
297
203
  executables = nil
298
204
 
299
- kernel = (class << ::Kernel; self; end)
300
- [kernel, ::Kernel].each do |kernel_class|
205
+ [::Kernel.singleton_class, ::Kernel].each do |kernel_class|
301
206
  redefine_method(kernel_class, :gem) do |dep, *reqs|
302
- if executables && executables.include?(File.basename(caller.first.split(":").first))
207
+ if executables&.include?(File.basename(caller_locations(1, 1).first.path))
303
208
  break
304
209
  end
305
210
 
@@ -328,11 +233,7 @@ module Bundler
328
233
 
329
234
  e = Gem::LoadError.new(message)
330
235
  e.name = dep.name
331
- if e.respond_to?(:requirement=)
332
- e.requirement = dep.requirement
333
- elsif e.respond_to?(:version_requirement=)
334
- e.version_requirement = dep.requirement
335
- end
236
+ e.requirement = dep.requirement
336
237
  raise e
337
238
  end
338
239
 
@@ -414,6 +315,14 @@ module Bundler
414
315
  def replace_entrypoints(specs)
415
316
  specs_by_name = add_default_gems_to(specs)
416
317
 
318
+ reverse_rubygems_kernel_mixin
319
+ begin
320
+ # bundled_gems only provide with Ruby 3.3 or later
321
+ require "bundled_gems"
322
+ rescue LoadError
323
+ else
324
+ Gem::BUNDLED_GEMS.replace_require(specs) if Gem::BUNDLED_GEMS.respond_to?(:replace_require)
325
+ end
417
326
  replace_gem(specs, specs_by_name)
418
327
  stub_rubygems(specs)
419
328
  replace_bin_path(specs_by_name)
@@ -503,110 +412,92 @@ module Bundler
503
412
  Gem::Specification.all = specs
504
413
  end
505
414
 
506
- def fetch_specs(remote, name)
415
+ def fetch_specs(remote, name, fetcher)
416
+ require "rubygems/remote_fetcher"
507
417
  path = remote.uri.to_s + "#{name}.#{Gem.marshal_version}.gz"
508
- fetcher = gem_remote_fetcher
509
- fetcher.headers = { "X-Gemfile-Source" => remote.original_uri.to_s } if remote.original_uri
510
418
  string = fetcher.fetch_path(path)
511
- Bundler.load_marshal(string)
512
- rescue Gem::RemoteFetcher::FetchError => e
419
+ specs = Bundler.safe_load_marshal(string)
420
+ raise MarshalError, "Specs #{name} from #{remote} is expected to be an Array but was unexpected class #{specs.class}" unless specs.is_a?(Array)
421
+ specs
422
+ rescue Gem::RemoteFetcher::FetchError
513
423
  # it's okay for prerelease to fail
514
- raise e unless name == "prerelease_specs"
424
+ raise unless name == "prerelease_specs"
515
425
  end
516
426
 
517
- def fetch_all_remote_specs(remote)
518
- specs = fetch_specs(remote, "specs")
519
- pres = fetch_specs(remote, "prerelease_specs") || []
427
+ def fetch_all_remote_specs(remote, gem_remote_fetcher)
428
+ specs = fetch_specs(remote, "specs", gem_remote_fetcher)
429
+ pres = fetch_specs(remote, "prerelease_specs", gem_remote_fetcher) || []
520
430
 
521
431
  specs.concat(pres)
522
432
  end
523
433
 
524
- def download_gem(spec, uri, path)
434
+ def download_gem(spec, uri, cache_dir, fetcher)
435
+ require "rubygems/remote_fetcher"
525
436
  uri = Bundler.settings.mirror_for(uri)
526
- fetcher = gem_remote_fetcher
527
- fetcher.headers = { "X-Gemfile-Source" => spec.remote.original_uri.to_s } if spec.remote.original_uri
528
437
  Bundler::Retry.new("download gem from #{uri}").attempts do
529
- fetcher.download(spec, uri, path)
438
+ gem_file_name = spec.file_name
439
+ local_gem_path = File.join cache_dir, gem_file_name
440
+ return if File.exist? local_gem_path
441
+
442
+ begin
443
+ remote_gem_path = uri + "gems/#{gem_file_name}"
444
+
445
+ SharedHelpers.filesystem_access(local_gem_path) do
446
+ fetcher.cache_update_path remote_gem_path, local_gem_path
447
+ end
448
+ rescue Gem::RemoteFetcher::FetchError
449
+ raise if spec.original_platform == spec.platform
450
+
451
+ original_gem_file_name = "#{spec.original_name}.gem"
452
+ raise if gem_file_name == original_gem_file_name
453
+
454
+ gem_file_name = original_gem_file_name
455
+ retry
456
+ end
530
457
  end
531
458
  rescue Gem::RemoteFetcher::FetchError => e
532
459
  raise Bundler::HTTPError, "Could not download gem from #{uri} due to underlying error <#{e.message}>"
533
460
  end
534
461
 
535
- def gem_remote_fetcher
536
- require "rubygems/remote_fetcher"
537
- proxy = configuration[:http_proxy]
538
- Gem::RemoteFetcher.new(proxy)
539
- end
540
-
541
- def gem_from_path(path, policy = nil)
542
- require "rubygems/package"
543
- p = Gem::Package.new(path)
544
- p.security_policy = policy if policy
545
- p
546
- end
547
-
548
462
  def build(spec, skip_validation = false)
549
463
  require "rubygems/package"
550
464
  Gem::Package.build(spec, skip_validation)
551
465
  end
552
466
 
553
- def repository_subdirectories
554
- Gem::REPOSITORY_SUBDIRECTORIES
555
- end
556
-
557
- def install_with_build_args(args)
558
- yield
559
- end
560
-
561
467
  def path_separator
562
468
  Gem.path_separator
563
469
  end
564
470
 
565
471
  def all_specs
472
+ SharedHelpers.major_deprecation 2, "Bundler.rubygems.all_specs has been removed in favor of Bundler.rubygems.installed_specs"
473
+
566
474
  Gem::Specification.stubs.map do |stub|
567
475
  StubSpecification.from_stub(stub)
568
476
  end
569
477
  end
570
478
 
571
- def backport_ext_builder_monitor
572
- # So we can avoid requiring "rubygems/ext" in its entirety
573
- Gem.module_eval <<-RUBY, __FILE__, __LINE__ + 1
574
- module Ext
575
- end
576
- RUBY
577
-
578
- require "rubygems/ext/builder"
579
-
580
- Gem::Ext::Builder.class_eval do
581
- unless const_defined?(:CHDIR_MONITOR)
582
- const_set(:CHDIR_MONITOR, EXT_LOCK)
583
- end
479
+ def installed_specs
480
+ Gem::Specification.stubs.reject(&:default_gem?).map do |stub|
481
+ StubSpecification.from_stub(stub)
482
+ end
483
+ end
584
484
 
585
- remove_const(:CHDIR_MUTEX) if const_defined?(:CHDIR_MUTEX)
586
- const_set(:CHDIR_MUTEX, const_get(:CHDIR_MONITOR))
485
+ def default_specs
486
+ Gem::Specification.default_stubs.map do |stub|
487
+ StubSpecification.from_stub(stub)
587
488
  end
588
489
  end
589
490
 
590
- def find_name(name)
591
- Gem::Specification.stubs_for(name).map(&:to_spec)
491
+ def find_bundler(version)
492
+ find_name("bundler").find {|s| s.version.to_s == version }
592
493
  end
593
494
 
594
- if Gem::Specification.respond_to?(:default_stubs)
595
- def default_stubs
596
- Gem::Specification.default_stubs("*.gemspec")
597
- end
598
- else
599
- def default_stubs
600
- Gem::Specification.send(:default_stubs, "*.gemspec")
601
- end
495
+ def find_name(name)
496
+ Gem::Specification.stubs_for(name).map(&:to_spec)
602
497
  end
603
498
 
604
- def use_gemdeps(gemfile)
605
- ENV["BUNDLE_GEMFILE"] ||= File.expand_path(gemfile)
606
- require_relative "gemdeps"
607
- runtime = Bundler.setup
608
- activated_spec_names = runtime.requested_specs.map(&:to_spec).sort_by(&:name)
609
- [Gemdeps.new(runtime), activated_spec_names]
499
+ def default_stubs
500
+ Gem::Specification.default_stubs("*.gemspec")
610
501
  end
611
502
  end
612
503