bundler-plus 4.0.15

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 (350) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +5670 -0
  3. data/LICENSE.md +22 -0
  4. data/README.md +58 -0
  5. data/bundler.gemspec +46 -0
  6. data/exe/bundle +29 -0
  7. data/exe/bundler +4 -0
  8. data/lib/bundler/.document +1 -0
  9. data/lib/bundler/build_metadata.rb +44 -0
  10. data/lib/bundler/capistrano.rb +4 -0
  11. data/lib/bundler/checksum.rb +270 -0
  12. data/lib/bundler/ci_detector.rb +75 -0
  13. data/lib/bundler/cli/add.rb +62 -0
  14. data/lib/bundler/cli/binstubs.rb +57 -0
  15. data/lib/bundler/cli/cache.rb +32 -0
  16. data/lib/bundler/cli/check.rb +40 -0
  17. data/lib/bundler/cli/clean.rb +25 -0
  18. data/lib/bundler/cli/common.rb +161 -0
  19. data/lib/bundler/cli/config.rb +208 -0
  20. data/lib/bundler/cli/console.rb +47 -0
  21. data/lib/bundler/cli/doctor/diagnose.rb +167 -0
  22. data/lib/bundler/cli/doctor/ssl.rb +249 -0
  23. data/lib/bundler/cli/doctor.rb +33 -0
  24. data/lib/bundler/cli/exec.rb +114 -0
  25. data/lib/bundler/cli/fund.rb +36 -0
  26. data/lib/bundler/cli/gem.rb +493 -0
  27. data/lib/bundler/cli/info.rb +83 -0
  28. data/lib/bundler/cli/init.rb +51 -0
  29. data/lib/bundler/cli/install.rb +127 -0
  30. data/lib/bundler/cli/issue.rb +41 -0
  31. data/lib/bundler/cli/list.rb +97 -0
  32. data/lib/bundler/cli/lock.rb +94 -0
  33. data/lib/bundler/cli/open.rb +29 -0
  34. data/lib/bundler/cli/outdated.rb +337 -0
  35. data/lib/bundler/cli/platform.rb +48 -0
  36. data/lib/bundler/cli/plugin.rb +39 -0
  37. data/lib/bundler/cli/pristine.rb +64 -0
  38. data/lib/bundler/cli/remove.rb +17 -0
  39. data/lib/bundler/cli/show.rb +71 -0
  40. data/lib/bundler/cli/update.rb +125 -0
  41. data/lib/bundler/cli.rb +829 -0
  42. data/lib/bundler/compact_index_client/cache.rb +96 -0
  43. data/lib/bundler/compact_index_client/cache_file.rb +148 -0
  44. data/lib/bundler/compact_index_client/parser.rb +87 -0
  45. data/lib/bundler/compact_index_client/updater.rb +105 -0
  46. data/lib/bundler/compact_index_client.rb +92 -0
  47. data/lib/bundler/constants.rb +14 -0
  48. data/lib/bundler/current_ruby.rb +94 -0
  49. data/lib/bundler/definition.rb +1304 -0
  50. data/lib/bundler/dependency.rb +151 -0
  51. data/lib/bundler/deployment.rb +6 -0
  52. data/lib/bundler/deprecate.rb +44 -0
  53. data/lib/bundler/digest.rb +71 -0
  54. data/lib/bundler/dsl.rb +642 -0
  55. data/lib/bundler/endpoint_specification.rb +184 -0
  56. data/lib/bundler/env.rb +148 -0
  57. data/lib/bundler/environment_preserver.rb +69 -0
  58. data/lib/bundler/errors.rb +277 -0
  59. data/lib/bundler/feature_flag.rb +20 -0
  60. data/lib/bundler/fetcher/base.rb +55 -0
  61. data/lib/bundler/fetcher/compact_index.rb +133 -0
  62. data/lib/bundler/fetcher/dependency.rb +85 -0
  63. data/lib/bundler/fetcher/downloader.rb +116 -0
  64. data/lib/bundler/fetcher/gem_remote_fetcher.rb +24 -0
  65. data/lib/bundler/fetcher/index.rb +25 -0
  66. data/lib/bundler/fetcher.rb +365 -0
  67. data/lib/bundler/force_platform.rb +16 -0
  68. data/lib/bundler/friendly_errors.rb +127 -0
  69. data/lib/bundler/gem_helper.rb +237 -0
  70. data/lib/bundler/gem_tasks.rb +7 -0
  71. data/lib/bundler/gem_version_promoter.rb +147 -0
  72. data/lib/bundler/index.rb +203 -0
  73. data/lib/bundler/injector.rb +284 -0
  74. data/lib/bundler/inline.rb +106 -0
  75. data/lib/bundler/installer/gem_installer.rb +88 -0
  76. data/lib/bundler/installer/parallel_installer.rb +280 -0
  77. data/lib/bundler/installer/standalone.rb +113 -0
  78. data/lib/bundler/installer.rb +241 -0
  79. data/lib/bundler/lazy_specification.rb +270 -0
  80. data/lib/bundler/lockfile_generator.rb +119 -0
  81. data/lib/bundler/lockfile_parser.rb +328 -0
  82. data/lib/bundler/man/.document +1 -0
  83. data/lib/bundler/man/bundle-add.1 +79 -0
  84. data/lib/bundler/man/bundle-add.1.ronn +92 -0
  85. data/lib/bundler/man/bundle-binstubs.1 +30 -0
  86. data/lib/bundler/man/bundle-binstubs.1.ronn +42 -0
  87. data/lib/bundler/man/bundle-cache.1 +56 -0
  88. data/lib/bundler/man/bundle-cache.1.ronn +95 -0
  89. data/lib/bundler/man/bundle-check.1 +21 -0
  90. data/lib/bundler/man/bundle-check.1.ronn +26 -0
  91. data/lib/bundler/man/bundle-clean.1 +17 -0
  92. data/lib/bundler/man/bundle-clean.1.ronn +18 -0
  93. data/lib/bundler/man/bundle-config.1 +339 -0
  94. data/lib/bundler/man/bundle-config.1.ronn +455 -0
  95. data/lib/bundler/man/bundle-console.1 +33 -0
  96. data/lib/bundler/man/bundle-console.1.ronn +39 -0
  97. data/lib/bundler/man/bundle-doctor.1 +69 -0
  98. data/lib/bundler/man/bundle-doctor.1.ronn +77 -0
  99. data/lib/bundler/man/bundle-env.1 +9 -0
  100. data/lib/bundler/man/bundle-env.1.ronn +10 -0
  101. data/lib/bundler/man/bundle-exec.1 +104 -0
  102. data/lib/bundler/man/bundle-exec.1.ronn +150 -0
  103. data/lib/bundler/man/bundle-fund.1 +22 -0
  104. data/lib/bundler/man/bundle-fund.1.ronn +25 -0
  105. data/lib/bundler/man/bundle-gem.1 +107 -0
  106. data/lib/bundler/man/bundle-gem.1.ronn +150 -0
  107. data/lib/bundler/man/bundle-help.1 +9 -0
  108. data/lib/bundler/man/bundle-help.1.ronn +12 -0
  109. data/lib/bundler/man/bundle-info.1 +17 -0
  110. data/lib/bundler/man/bundle-info.1.ronn +21 -0
  111. data/lib/bundler/man/bundle-init.1 +20 -0
  112. data/lib/bundler/man/bundle-init.1.ronn +32 -0
  113. data/lib/bundler/man/bundle-install.1 +178 -0
  114. data/lib/bundler/man/bundle-install.1.ronn +314 -0
  115. data/lib/bundler/man/bundle-issue.1 +45 -0
  116. data/lib/bundler/man/bundle-issue.1.ronn +37 -0
  117. data/lib/bundler/man/bundle-licenses.1 +9 -0
  118. data/lib/bundler/man/bundle-licenses.1.ronn +10 -0
  119. data/lib/bundler/man/bundle-list.1 +40 -0
  120. data/lib/bundler/man/bundle-list.1.ronn +41 -0
  121. data/lib/bundler/man/bundle-lock.1 +75 -0
  122. data/lib/bundler/man/bundle-lock.1.ronn +115 -0
  123. data/lib/bundler/man/bundle-open.1 +32 -0
  124. data/lib/bundler/man/bundle-open.1.ronn +28 -0
  125. data/lib/bundler/man/bundle-outdated.1 +106 -0
  126. data/lib/bundler/man/bundle-outdated.1.ronn +117 -0
  127. data/lib/bundler/man/bundle-platform.1 +49 -0
  128. data/lib/bundler/man/bundle-platform.1.ronn +49 -0
  129. data/lib/bundler/man/bundle-plugin.1 +76 -0
  130. data/lib/bundler/man/bundle-plugin.1.ronn +84 -0
  131. data/lib/bundler/man/bundle-pristine.1 +23 -0
  132. data/lib/bundler/man/bundle-pristine.1.ronn +34 -0
  133. data/lib/bundler/man/bundle-remove.1 +15 -0
  134. data/lib/bundler/man/bundle-remove.1.ronn +16 -0
  135. data/lib/bundler/man/bundle-show.1 +16 -0
  136. data/lib/bundler/man/bundle-show.1.ronn +21 -0
  137. data/lib/bundler/man/bundle-update.1 +284 -0
  138. data/lib/bundler/man/bundle-update.1.ronn +367 -0
  139. data/lib/bundler/man/bundle-version.1 +22 -0
  140. data/lib/bundler/man/bundle-version.1.ronn +24 -0
  141. data/lib/bundler/man/bundle.1 +93 -0
  142. data/lib/bundler/man/bundle.1.ronn +107 -0
  143. data/lib/bundler/man/gemfile.5 +503 -0
  144. data/lib/bundler/man/gemfile.5.ronn +586 -0
  145. data/lib/bundler/man/index.txt +31 -0
  146. data/lib/bundler/match_metadata.rb +30 -0
  147. data/lib/bundler/match_platform.rb +42 -0
  148. data/lib/bundler/match_remote_metadata.rb +29 -0
  149. data/lib/bundler/materialization.rb +59 -0
  150. data/lib/bundler/mirror.rb +221 -0
  151. data/lib/bundler/plugin/api/source.rb +330 -0
  152. data/lib/bundler/plugin/api.rb +81 -0
  153. data/lib/bundler/plugin/dsl.rb +53 -0
  154. data/lib/bundler/plugin/events.rb +85 -0
  155. data/lib/bundler/plugin/index.rb +203 -0
  156. data/lib/bundler/plugin/installer/git.rb +34 -0
  157. data/lib/bundler/plugin/installer/path.rb +26 -0
  158. data/lib/bundler/plugin/installer/rubygems.rb +19 -0
  159. data/lib/bundler/plugin/installer.rb +123 -0
  160. data/lib/bundler/plugin/source_list.rb +31 -0
  161. data/lib/bundler/plugin/unloaded_source.rb +25 -0
  162. data/lib/bundler/plugin.rb +387 -0
  163. data/lib/bundler/process_lock.rb +20 -0
  164. data/lib/bundler/remote_specification.rb +126 -0
  165. data/lib/bundler/resolver/base.rb +127 -0
  166. data/lib/bundler/resolver/candidate.rb +85 -0
  167. data/lib/bundler/resolver/incompatibility.rb +15 -0
  168. data/lib/bundler/resolver/package.rb +95 -0
  169. data/lib/bundler/resolver/root.rb +25 -0
  170. data/lib/bundler/resolver/spec_group.rb +74 -0
  171. data/lib/bundler/resolver/strategy.rb +43 -0
  172. data/lib/bundler/resolver.rb +603 -0
  173. data/lib/bundler/retry.rb +92 -0
  174. data/lib/bundler/ruby_dsl.rb +67 -0
  175. data/lib/bundler/ruby_version.rb +135 -0
  176. data/lib/bundler/rubygems_ext.rb +503 -0
  177. data/lib/bundler/rubygems_gem_installer.rb +206 -0
  178. data/lib/bundler/rubygems_integration.rb +456 -0
  179. data/lib/bundler/runtime.rb +331 -0
  180. data/lib/bundler/safe_marshal.rb +31 -0
  181. data/lib/bundler/self_manager.rb +197 -0
  182. data/lib/bundler/settings/validator.rb +86 -0
  183. data/lib/bundler/settings.rb +585 -0
  184. data/lib/bundler/setup.rb +39 -0
  185. data/lib/bundler/shared_helpers.rb +392 -0
  186. data/lib/bundler/source/gemspec.rb +19 -0
  187. data/lib/bundler/source/git/git_proxy.rb +509 -0
  188. data/lib/bundler/source/git.rb +451 -0
  189. data/lib/bundler/source/metadata.rb +67 -0
  190. data/lib/bundler/source/path/installer.rb +53 -0
  191. data/lib/bundler/source/path.rb +256 -0
  192. data/lib/bundler/source/rubygems/remote.rb +86 -0
  193. data/lib/bundler/source/rubygems.rb +606 -0
  194. data/lib/bundler/source/rubygems_aggregate.rb +71 -0
  195. data/lib/bundler/source.rb +120 -0
  196. data/lib/bundler/source_list.rb +240 -0
  197. data/lib/bundler/source_map.rb +72 -0
  198. data/lib/bundler/spec_set.rb +390 -0
  199. data/lib/bundler/stub_specification.rb +147 -0
  200. data/lib/bundler/templates/.document +1 -0
  201. data/lib/bundler/templates/Executable +16 -0
  202. data/lib/bundler/templates/Executable.standalone +14 -0
  203. data/lib/bundler/templates/Gemfile +5 -0
  204. data/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
  205. data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +10 -0
  206. data/lib/bundler/templates/newgem/Cargo.toml.tt +13 -0
  207. data/lib/bundler/templates/newgem/Gemfile.tt +24 -0
  208. data/lib/bundler/templates/newgem/LICENSE.txt.tt +21 -0
  209. data/lib/bundler/templates/newgem/README.md.tt +49 -0
  210. data/lib/bundler/templates/newgem/Rakefile.tt +72 -0
  211. data/lib/bundler/templates/newgem/bin/console.tt +11 -0
  212. data/lib/bundler/templates/newgem/bin/setup.tt +8 -0
  213. data/lib/bundler/templates/newgem/circleci/config.yml.tt +37 -0
  214. data/lib/bundler/templates/newgem/exe/newgem.tt +3 -0
  215. data/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +22 -0
  216. data/lib/bundler/templates/newgem/ext/newgem/build.rs.tt +5 -0
  217. data/lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt +10 -0
  218. data/lib/bundler/templates/newgem/ext/newgem/extconf-go.rb.tt +11 -0
  219. data/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
  220. data/lib/bundler/templates/newgem/ext/newgem/go.mod.tt +5 -0
  221. data/lib/bundler/templates/newgem/ext/newgem/newgem-go.c.tt +2 -0
  222. data/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +9 -0
  223. data/lib/bundler/templates/newgem/ext/newgem/newgem.go.tt +31 -0
  224. data/lib/bundler/templates/newgem/ext/newgem/newgem.h.tt +6 -0
  225. data/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +23 -0
  226. data/lib/bundler/templates/newgem/github/workflows/build-gems.yml.tt +69 -0
  227. data/lib/bundler/templates/newgem/github/workflows/main.yml.tt +48 -0
  228. data/lib/bundler/templates/newgem/gitignore.tt +23 -0
  229. data/lib/bundler/templates/newgem/gitlab-ci.yml.tt +27 -0
  230. data/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +9 -0
  231. data/lib/bundler/templates/newgem/lib/newgem.rb.tt +15 -0
  232. data/lib/bundler/templates/newgem/newgem.gemspec.tt +58 -0
  233. data/lib/bundler/templates/newgem/rspec.tt +3 -0
  234. data/lib/bundler/templates/newgem/rubocop.yml.tt +8 -0
  235. data/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
  236. data/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +19 -0
  237. data/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +15 -0
  238. data/lib/bundler/templates/newgem/standard.yml.tt +3 -0
  239. data/lib/bundler/templates/newgem/test/minitest/test_helper.rb.tt +6 -0
  240. data/lib/bundler/templates/newgem/test/minitest/test_newgem.rb.tt +19 -0
  241. data/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  242. data/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  243. data/lib/bundler/ui/rg_proxy.rb +19 -0
  244. data/lib/bundler/ui/shell.rb +191 -0
  245. data/lib/bundler/ui/silent.rb +96 -0
  246. data/lib/bundler/ui.rb +9 -0
  247. data/lib/bundler/uri_credentials_filter.rb +43 -0
  248. data/lib/bundler/uri_normalizer.rb +23 -0
  249. data/lib/bundler/vendor/.document +1 -0
  250. data/lib/bundler/vendor/connection_pool/LICENSE +20 -0
  251. data/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +227 -0
  252. data/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
  253. data/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +56 -0
  254. data/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +230 -0
  255. data/lib/bundler/vendor/fileutils/COPYING +56 -0
  256. data/lib/bundler/vendor/fileutils/lib/fileutils.rb +2701 -0
  257. data/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
  258. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +41 -0
  259. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +65 -0
  260. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +80 -0
  261. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1153 -0
  262. data/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  263. data/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  264. data/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +169 -0
  265. data/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  266. data/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
  267. data/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  268. data/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  269. data/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  270. data/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  271. data/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +61 -0
  272. data/lib/bundler/vendor/pub_grub/lib/pub_grub/strategy.rb +42 -0
  273. data/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  274. data/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  275. data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
  276. data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +423 -0
  277. data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +236 -0
  278. data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  279. data/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  280. data/lib/bundler/vendor/securerandom/COPYING +56 -0
  281. data/lib/bundler/vendor/securerandom/lib/securerandom.rb +102 -0
  282. data/lib/bundler/vendor/thor/LICENSE.md +20 -0
  283. data/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +105 -0
  284. data/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +61 -0
  285. data/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +108 -0
  286. data/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb +143 -0
  287. data/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +407 -0
  288. data/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +130 -0
  289. data/lib/bundler/vendor/thor/lib/thor/actions.rb +340 -0
  290. data/lib/bundler/vendor/thor/lib/thor/base.rb +825 -0
  291. data/lib/bundler/vendor/thor/lib/thor/command.rb +151 -0
  292. data/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +107 -0
  293. data/lib/bundler/vendor/thor/lib/thor/error.rb +106 -0
  294. data/lib/bundler/vendor/thor/lib/thor/group.rb +292 -0
  295. data/lib/bundler/vendor/thor/lib/thor/invocation.rb +178 -0
  296. data/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +37 -0
  297. data/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +88 -0
  298. data/lib/bundler/vendor/thor/lib/thor/line_editor.rb +17 -0
  299. data/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
  300. data/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +86 -0
  301. data/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +195 -0
  302. data/lib/bundler/vendor/thor/lib/thor/parser/option.rb +178 -0
  303. data/lib/bundler/vendor/thor/lib/thor/parser/options.rb +294 -0
  304. data/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -0
  305. data/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +72 -0
  306. data/lib/bundler/vendor/thor/lib/thor/runner.rb +335 -0
  307. data/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +384 -0
  308. data/lib/bundler/vendor/thor/lib/thor/shell/color.rb +112 -0
  309. data/lib/bundler/vendor/thor/lib/thor/shell/column_printer.rb +29 -0
  310. data/lib/bundler/vendor/thor/lib/thor/shell/html.rb +81 -0
  311. data/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +118 -0
  312. data/lib/bundler/vendor/thor/lib/thor/shell/terminal.rb +42 -0
  313. data/lib/bundler/vendor/thor/lib/thor/shell/wrapped_printer.rb +38 -0
  314. data/lib/bundler/vendor/thor/lib/thor/shell.rb +81 -0
  315. data/lib/bundler/vendor/thor/lib/thor/util.rb +285 -0
  316. data/lib/bundler/vendor/thor/lib/thor/version.rb +3 -0
  317. data/lib/bundler/vendor/thor/lib/thor.rb +674 -0
  318. data/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
  319. data/lib/bundler/vendor/tsort/lib/tsort.rb +455 -0
  320. data/lib/bundler/vendor/uri/COPYING +56 -0
  321. data/lib/bundler/vendor/uri/lib/uri/common.rb +922 -0
  322. data/lib/bundler/vendor/uri/lib/uri/file.rb +100 -0
  323. data/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
  324. data/lib/bundler/vendor/uri/lib/uri/generic.rb +1592 -0
  325. data/lib/bundler/vendor/uri/lib/uri/http.rb +137 -0
  326. data/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
  327. data/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
  328. data/lib/bundler/vendor/uri/lib/uri/ldaps.rb +22 -0
  329. data/lib/bundler/vendor/uri/lib/uri/mailto.rb +293 -0
  330. data/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +547 -0
  331. data/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +206 -0
  332. data/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
  333. data/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
  334. data/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
  335. data/lib/bundler/vendor/uri/lib/uri.rb +104 -0
  336. data/lib/bundler/vendored_fileutils.rb +4 -0
  337. data/lib/bundler/vendored_net_http.rb +23 -0
  338. data/lib/bundler/vendored_persistent.rb +11 -0
  339. data/lib/bundler/vendored_pub_grub.rb +4 -0
  340. data/lib/bundler/vendored_securerandom.rb +12 -0
  341. data/lib/bundler/vendored_thor.rb +8 -0
  342. data/lib/bundler/vendored_timeout.rb +12 -0
  343. data/lib/bundler/vendored_tsort.rb +4 -0
  344. data/lib/bundler/vendored_uri.rb +21 -0
  345. data/lib/bundler/version.rb +21 -0
  346. data/lib/bundler/vlad.rb +4 -0
  347. data/lib/bundler/worker.rb +125 -0
  348. data/lib/bundler/yaml_serializer.rb +98 -0
  349. data/lib/bundler.rb +691 -0
  350. metadata +409 -0
@@ -0,0 +1,392 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "version"
4
+ require_relative "rubygems_integration"
5
+ require_relative "current_ruby"
6
+
7
+ module Bundler
8
+ autoload :WINDOWS, File.expand_path("constants", __dir__)
9
+ autoload :FREEBSD, File.expand_path("constants", __dir__)
10
+ autoload :NULL, File.expand_path("constants", __dir__)
11
+
12
+ module SharedHelpers
13
+ def root
14
+ gemfile = find_gemfile
15
+ raise GemfileNotFound, "Could not locate Gemfile" unless gemfile
16
+ Pathname.new(gemfile).expand_path.parent
17
+ end
18
+
19
+ def default_gemfile
20
+ gemfile = find_gemfile
21
+ raise GemfileNotFound, "Could not locate Gemfile" unless gemfile
22
+ Pathname.new(gemfile).expand_path
23
+ end
24
+
25
+ def default_lockfile
26
+ given = ENV["BUNDLE_LOCKFILE"]
27
+ return Pathname.new(given) if given && !given.empty?
28
+
29
+ gemfile = default_gemfile
30
+
31
+ case gemfile.basename.to_s
32
+ when "gems.rb" then Pathname.new(gemfile.sub(/.rb$/, ".locked"))
33
+ else Pathname.new("#{gemfile}.lock")
34
+ end
35
+ end
36
+
37
+ def default_bundle_dir
38
+ bundle_dir = find_directory(".bundle")
39
+ return nil unless bundle_dir
40
+
41
+ bundle_dir = Pathname.new(bundle_dir)
42
+
43
+ global_bundle_dir = Bundler.user_home.join(".bundle")
44
+ return nil if bundle_dir == global_bundle_dir
45
+
46
+ bundle_dir
47
+ end
48
+
49
+ def in_bundle?
50
+ find_gemfile
51
+ end
52
+
53
+ def chdir(dir, &blk)
54
+ Bundler.rubygems.ext_lock.synchronize do
55
+ Dir.chdir dir, &blk
56
+ end
57
+ end
58
+
59
+ def pwd
60
+ Bundler.rubygems.ext_lock.synchronize do
61
+ Dir.pwd
62
+ end
63
+ end
64
+
65
+ def with_clean_git_env(&block)
66
+ keys = %w[GIT_DIR GIT_WORK_TREE]
67
+ old_env = keys.inject({}) do |h, k|
68
+ h.update(k => ENV[k])
69
+ end
70
+
71
+ keys.each {|key| ENV.delete(key) }
72
+
73
+ block.call
74
+ ensure
75
+ keys.each {|key| ENV[key] = old_env[key] }
76
+ end
77
+
78
+ def set_bundle_environment
79
+ set_bundle_variables
80
+ set_path
81
+ set_rubyopt
82
+ set_rubylib
83
+ end
84
+
85
+ # Rescues permissions errors raised by file system operations
86
+ # (ie. Errno:EACCESS, Errno::EAGAIN) and raises more friendly errors instead.
87
+ #
88
+ # @param path [String] the path that the action will be attempted to
89
+ # @param action [Symbol, #to_s] the type of operation that will be
90
+ # performed. For example: :write, :read, :exec
91
+ #
92
+ # @yield path
93
+ #
94
+ # @raise [Bundler::PermissionError] if Errno:EACCES is raised in the
95
+ # given block
96
+ # @raise [Bundler::TemporaryResourceError] if Errno:EAGAIN is raised in the
97
+ # given block
98
+ #
99
+ # @example
100
+ # filesystem_access("vendor/cache", :create) do
101
+ # FileUtils.mkdir_p("vendor/cache")
102
+ # end
103
+ #
104
+ # @see {Bundler::PermissionError}
105
+ def filesystem_access(path, action = :write, &block)
106
+ yield(path.dup)
107
+ rescue Errno::EACCES => e
108
+ raise unless e.message.include?(path.to_s) || action == :create
109
+
110
+ raise PermissionError.new(path, action)
111
+ rescue Errno::EAGAIN
112
+ raise TemporaryResourceError.new(path, action)
113
+ rescue Errno::EPROTO
114
+ raise VirtualProtocolError.new
115
+ rescue Errno::ENOSPC
116
+ raise NoSpaceOnDeviceError.new(path, action)
117
+ rescue Errno::ENOTSUP
118
+ raise OperationNotSupportedError.new(path, action)
119
+ rescue Errno::EPERM
120
+ raise OperationNotPermittedError.new(path, action)
121
+ rescue Errno::EROFS
122
+ raise ReadOnlyFileSystemError.new(path, action)
123
+ rescue Errno::EEXIST, Errno::ENOENT
124
+ raise
125
+ rescue SystemCallError => e
126
+ raise GenericSystemCallError.new(e, "There was an error #{[:create, :write].include?(action) ? "creating" : "accessing"} `#{path}`.")
127
+ end
128
+
129
+ def feature_deprecated!(message)
130
+ return unless prints_major_deprecations?
131
+
132
+ Bundler.ui.warn("[DEPRECATED] #{message}")
133
+ end
134
+
135
+ def feature_removed!(message)
136
+ require_relative "errors"
137
+ raise RemovedError, "[REMOVED] #{message}"
138
+ end
139
+
140
+ def print_major_deprecations!
141
+ multiple_gemfiles = search_up(".") do |dir|
142
+ gemfiles = gemfile_names.select {|gf| File.file? File.expand_path(gf, dir) }
143
+ next if gemfiles.empty?
144
+ break gemfiles.size != 1
145
+ end
146
+ return unless multiple_gemfiles
147
+ message = "Multiple gemfiles (gems.rb and Gemfile) detected. " \
148
+ "Make sure you remove Gemfile and Gemfile.lock since bundler is ignoring them in favor of gems.rb and gems.locked."
149
+ Bundler.ui.warn message
150
+ end
151
+
152
+ def ensure_same_dependencies(spec, old_deps, new_deps)
153
+ new_deps = new_deps.reject {|d| d.type == :development }
154
+ old_deps = old_deps.reject {|d| d.type == :development }
155
+
156
+ without_type = proc {|d| Gem::Dependency.new(d.name, d.requirements_list.sort) }
157
+ new_deps.map!(&without_type)
158
+ old_deps.map!(&without_type)
159
+
160
+ extra_deps = new_deps - old_deps
161
+ return if extra_deps.empty?
162
+
163
+ Bundler.ui.debug "#{spec.full_name} from #{spec.remote} has corrupted API dependencies" \
164
+ " (was expecting #{old_deps.map(&:to_s)}, but the real spec has #{new_deps.map(&:to_s)})"
165
+ raise APIResponseMismatchError,
166
+ "Downloading #{spec.full_name} revealed dependencies not in the API (#{extra_deps.join(", ")})." \
167
+ "\nRunning `bundle update #{spec.name}` should fix the problem."
168
+ end
169
+
170
+ def pretty_dependency(dep)
171
+ msg = String.new(dep.name)
172
+ msg << " (#{dep.requirement})" unless dep.requirement == Gem::Requirement.default
173
+
174
+ if dep.is_a?(Bundler::Dependency)
175
+ platform_string = dep.platforms.join(", ")
176
+ msg << " " << platform_string if !platform_string.empty? && platform_string != Gem::Platform::RUBY
177
+ end
178
+
179
+ msg
180
+ end
181
+
182
+ def md5_available?
183
+ return @md5_available if defined?(@md5_available)
184
+ @md5_available = begin
185
+ require "openssl"
186
+ ::OpenSSL::Digest.digest("MD5", "")
187
+ true
188
+ rescue LoadError
189
+ true
190
+ rescue ::OpenSSL::Digest::DigestError
191
+ false
192
+ end
193
+ end
194
+
195
+ def digest(name)
196
+ require "digest"
197
+ Digest(name)
198
+ end
199
+
200
+ def checksum_for_file(path, digest)
201
+ return unless path.file?
202
+ # This must use File.read instead of Digest.file().hexdigest
203
+ # because we need to preserve \n line endings on windows when calculating
204
+ # the checksum
205
+ SharedHelpers.filesystem_access(path, :read) do
206
+ File.open(path, "rb") do |f|
207
+ digest = SharedHelpers.digest(digest).new
208
+ buf = String.new(capacity: 16_384, encoding: Encoding::BINARY)
209
+ digest << buf while f.read(16_384, buf)
210
+ digest.hexdigest
211
+ end
212
+ end
213
+ end
214
+
215
+ def write_to_gemfile(gemfile_path, contents)
216
+ filesystem_access(gemfile_path) {|g| File.open(g, "w") {|file| file.puts contents } }
217
+ end
218
+
219
+ def relative_gemfile_path
220
+ relative_path_to(Bundler.default_gemfile)
221
+ end
222
+
223
+ def relative_lockfile_path
224
+ relative_path_to(Bundler.default_lockfile)
225
+ end
226
+
227
+ def relative_path_to(destination, from: pwd)
228
+ Pathname.new(destination).relative_path_from(from).to_s
229
+ rescue ArgumentError
230
+ # on Windows, if source and destination are on different drivers, there's no relative path from one to the other
231
+ destination
232
+ end
233
+
234
+ private
235
+
236
+ def validate_bundle_path
237
+ path_separator = Bundler.rubygems.path_separator
238
+ return unless Bundler.bundle_path.to_s.split(path_separator).size > 1
239
+ message = "Your bundle path contains text matching #{path_separator.inspect}, " \
240
+ "which is the path separator for your system. Bundler cannot " \
241
+ "function correctly when the Bundle path contains the " \
242
+ "system's PATH separator. Please change your " \
243
+ "bundle path to not match #{path_separator.inspect}." \
244
+ "\nYour current bundle path is '#{Bundler.bundle_path}'."
245
+ raise Bundler::PathError, message
246
+ end
247
+
248
+ def find_gemfile
249
+ given = ENV["BUNDLE_GEMFILE"]
250
+ return given if given && !given.empty?
251
+ find_file(*gemfile_names)
252
+ end
253
+
254
+ def gemfile_names
255
+ ["gems.rb", "Gemfile"]
256
+ end
257
+
258
+ def find_file(*names)
259
+ search_up(*names) do |filename|
260
+ return filename if File.file?(filename)
261
+ end
262
+ end
263
+
264
+ def find_directory(*names)
265
+ search_up(*names) do |dirname|
266
+ return dirname if File.directory?(dirname)
267
+ end
268
+ end
269
+
270
+ def search_up(*names)
271
+ previous = nil
272
+ current = File.expand_path(SharedHelpers.pwd)
273
+
274
+ until !File.directory?(current) || current == previous
275
+ if ENV["BUNDLER_SPEC_RUN"]
276
+ # avoid stepping above the tmp directory when testing
277
+ return nil if File.directory?(File.join(current, "tmp"))
278
+ end
279
+
280
+ names.each do |name|
281
+ filename = File.join(current, name)
282
+ yield filename
283
+ end
284
+ previous = current
285
+ current = File.expand_path("..", current)
286
+ end
287
+ end
288
+
289
+ def set_env(key, value)
290
+ raise ArgumentError, "new key #{key}" unless EnvironmentPreserver::BUNDLER_KEYS.include?(key)
291
+ orig_key = "#{EnvironmentPreserver::BUNDLER_PREFIX}#{key}"
292
+ orig = ENV[key]
293
+ orig ||= EnvironmentPreserver::INTENTIONALLY_NIL
294
+ ENV[orig_key] ||= orig
295
+
296
+ ENV[key] = value
297
+ end
298
+ public :set_env
299
+
300
+ def set_bundle_variables
301
+ Bundler::SharedHelpers.set_env "BUNDLE_BIN_PATH", bundle_bin_path
302
+ Bundler::SharedHelpers.set_env "BUNDLE_GEMFILE", find_gemfile.to_s
303
+ Bundler::SharedHelpers.set_env "BUNDLE_LOCKFILE", default_lockfile.to_s
304
+ Bundler::SharedHelpers.set_env "BUNDLER_VERSION", Bundler::VERSION
305
+ Bundler::SharedHelpers.set_env "BUNDLER_SETUP", File.expand_path("setup", __dir__)
306
+ end
307
+
308
+ def bundle_bin_path
309
+ # bundler exe & lib folders have same root folder, typical gem installation
310
+ exe_file = File.join(source_root, "exe/bundle")
311
+
312
+ # for Ruby core repository testing
313
+ exe_file = File.join(source_root, "libexec/bundle") unless File.exist?(exe_file)
314
+
315
+ # bundler is a default gem, exe path is separate
316
+ exe_file = Gem.bin_path("bundler", "bundle", VERSION) unless File.exist?(exe_file)
317
+
318
+ exe_file
319
+ end
320
+ public :bundle_bin_path
321
+
322
+ def gemspec_path
323
+ # inside a gem repository, typical gem installation
324
+ gemspec_file = File.join(source_root, "../../specifications/bundler-#{VERSION}.gemspec")
325
+
326
+ # for Ruby core repository testing
327
+ gemspec_file = File.expand_path("bundler.gemspec", __dir__) unless File.exist?(gemspec_file)
328
+
329
+ # bundler is a default gem
330
+ gemspec_file = File.join(Gem.default_specifications_dir, "bundler-#{VERSION}.gemspec") unless File.exist?(gemspec_file)
331
+
332
+ gemspec_file
333
+ end
334
+ public :gemspec_path
335
+
336
+ def source_root
337
+ File.expand_path("../..", __dir__)
338
+ end
339
+
340
+ def set_path
341
+ validate_bundle_path
342
+ paths = (ENV["PATH"] || "").split(File::PATH_SEPARATOR)
343
+ paths.unshift "#{Bundler.bundle_path}/bin"
344
+ Bundler::SharedHelpers.set_env "PATH", paths.uniq.join(File::PATH_SEPARATOR)
345
+ end
346
+
347
+ def set_rubyopt
348
+ rubyopt = [ENV["RUBYOPT"]].compact
349
+ setup_require = "-r#{File.expand_path("setup", __dir__)}"
350
+ return if !rubyopt.empty? && rubyopt.first.include?(setup_require)
351
+ rubyopt.unshift setup_require
352
+ Bundler::SharedHelpers.set_env "RUBYOPT", rubyopt.join(" ")
353
+ end
354
+
355
+ def set_rubylib
356
+ rubylib = (ENV["RUBYLIB"] || "").split(File::PATH_SEPARATOR)
357
+ rubylib.unshift bundler_ruby_lib unless RbConfig::CONFIG["rubylibdir"] == bundler_ruby_lib
358
+ Bundler::SharedHelpers.set_env "RUBYLIB", rubylib.uniq.join(File::PATH_SEPARATOR)
359
+ end
360
+
361
+ def bundler_ruby_lib
362
+ File.expand_path("..", __dir__)
363
+ end
364
+
365
+ def clean_load_path
366
+ loaded_gem_paths = Bundler.rubygems.loaded_gem_paths
367
+
368
+ $LOAD_PATH.reject! do |p|
369
+ resolved_path = resolve_path(p)
370
+ next if $LOADED_FEATURES.any? {|lf| lf.start_with?(resolved_path) }
371
+ loaded_gem_paths.delete(p)
372
+ end
373
+ $LOAD_PATH.uniq!
374
+ end
375
+
376
+ def resolve_path(path)
377
+ expanded = File.expand_path(path)
378
+ return expanded unless File.exist?(expanded)
379
+
380
+ File.realpath(expanded)
381
+ end
382
+
383
+ def prints_major_deprecations?
384
+ return false if Bundler.settings[:silence_deprecations]
385
+ require_relative "deprecate"
386
+ return false if Bundler::Deprecate.skip
387
+ true
388
+ end
389
+
390
+ extend self
391
+ end
392
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bundler
4
+ class Source
5
+ class Gemspec < Path
6
+ attr_reader :gemspec
7
+ attr_writer :checksum_store
8
+
9
+ def initialize(options)
10
+ super
11
+ @gemspec = options["gemspec"]
12
+ end
13
+
14
+ def to_s
15
+ "gemspec at `#{@path}`"
16
+ end
17
+ end
18
+ end
19
+ end