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,585 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bundler
4
+ class Settings
5
+ autoload :Mirror, File.expand_path("mirror", __dir__)
6
+ autoload :Mirrors, File.expand_path("mirror", __dir__)
7
+ autoload :Validator, File.expand_path("settings/validator", __dir__)
8
+
9
+ BOOL_KEYS = %w[
10
+ auto_install
11
+ cache_all
12
+ cache_all_platforms
13
+ clean
14
+ deployment
15
+ disable_checksum_validation
16
+ disable_exec_load
17
+ disable_local_branch_check
18
+ disable_local_revision_check
19
+ disable_shared_gems
20
+ disable_version_check
21
+ force_ruby_platform
22
+ frozen
23
+ gem.changelog
24
+ gem.coc
25
+ gem.mit
26
+ gem.bundle
27
+ git.allow_insecure
28
+ global_gem_cache
29
+ ignore_messages
30
+ init_gems_rb
31
+ inline
32
+ lockfile_checksums
33
+ no_install
34
+ no_prune
35
+ path.system
36
+ plugins
37
+ prefer_patch
38
+ silence_deprecations
39
+ silence_root_warning
40
+ update_requires_all_flag
41
+ verbose
42
+ ].freeze
43
+
44
+ NUMBER_KEYS = %w[
45
+ cooldown
46
+ jobs
47
+ redirect
48
+ retry
49
+ ssl_verify_mode
50
+ timeout
51
+ ].freeze
52
+
53
+ ARRAY_KEYS = %w[
54
+ only
55
+ with
56
+ without
57
+ ].freeze
58
+
59
+ STRING_KEYS = %w[
60
+ bin
61
+ cache_path
62
+ console
63
+ default_cli_command
64
+ gem.ci
65
+ gem.github_username
66
+ gem.linter
67
+ gem.rubocop
68
+ gem.test
69
+ gemfile
70
+ lockfile
71
+ path
72
+ shebang
73
+ simulate_version
74
+ system_bindir
75
+ trust-policy
76
+ version
77
+ ].freeze
78
+
79
+ DEFAULT_CONFIG = {
80
+ "BUNDLE_SILENCE_DEPRECATIONS" => false,
81
+ "BUNDLE_DISABLE_VERSION_CHECK" => true,
82
+ "BUNDLE_PREFER_PATCH" => false,
83
+ "BUNDLE_REDIRECT" => 5,
84
+ "BUNDLE_RETRY" => 3,
85
+ "BUNDLE_TIMEOUT" => 10,
86
+ "BUNDLE_VERSION" => "lockfile",
87
+ "BUNDLE_LOCKFILE_CHECKSUMS" => true,
88
+ "BUNDLE_CACHE_ALL" => true,
89
+ "BUNDLE_PLUGINS" => true,
90
+ "BUNDLE_GLOBAL_GEM_CACHE" => false,
91
+ "BUNDLE_UPDATE_REQUIRES_ALL_FLAG" => false,
92
+ }.freeze
93
+
94
+ def initialize(root = nil)
95
+ @root = root
96
+ @local_config = load_config(local_config_file)
97
+ @local_root = root || Pathname.new(".bundle").expand_path
98
+
99
+ @env_config = ENV.to_h
100
+ @env_config.select! {|key, _value| key.start_with?("BUNDLE_") }
101
+ @env_config.delete("BUNDLE_")
102
+
103
+ @global_config = load_config(global_config_file)
104
+ @temporary = {}
105
+
106
+ @key_cache = {}
107
+ end
108
+
109
+ def [](name)
110
+ key = key_for(name)
111
+
112
+ value = nil
113
+ configs.each do |_, config|
114
+ value = config[key]
115
+ next if value.nil?
116
+ break
117
+ end
118
+
119
+ converted_value(value, name)
120
+ end
121
+
122
+ def set_command_option(key, value)
123
+ temporary(key => value)
124
+ value
125
+ end
126
+
127
+ def set_command_option_if_given(key, value)
128
+ return if value.nil?
129
+ set_command_option(key, value)
130
+ end
131
+
132
+ def set_local(key, value)
133
+ local_config_file = @local_root.join("config")
134
+
135
+ set_key(key, value, @local_config, local_config_file)
136
+ end
137
+
138
+ def temporary(update)
139
+ existing = Hash[update.map {|k, _| [k, @temporary[key_for(k)]] }]
140
+ update.each do |k, v|
141
+ set_key(k, v, @temporary, nil)
142
+ end
143
+ return unless block_given?
144
+ begin
145
+ yield
146
+ ensure
147
+ existing.each {|k, v| set_key(k, v, @temporary, nil) }
148
+ end
149
+ end
150
+
151
+ def set_global(key, value)
152
+ set_key(key, value, @global_config, global_config_file)
153
+ end
154
+
155
+ def all
156
+ keys = @temporary.keys.union(@global_config.keys, @local_config.keys, @env_config.keys)
157
+
158
+ keys.map! do |key|
159
+ key = key.delete_prefix("BUNDLE_")
160
+ key.gsub!("___", "-")
161
+ key.gsub!("__", ".")
162
+ key.downcase!
163
+ key
164
+ end.sort!
165
+ keys
166
+ end
167
+
168
+ def local_overrides
169
+ repos = {}
170
+ all.each do |k|
171
+ repos[k.delete_prefix("local.")] = self[k] if k.start_with?("local.")
172
+ end
173
+ repos
174
+ end
175
+
176
+ def mirror_for(uri)
177
+ if uri.is_a?(String)
178
+ require_relative "vendored_uri"
179
+ uri = Gem::URI(uri)
180
+ end
181
+
182
+ gem_mirrors.for(uri.to_s).uri
183
+ end
184
+
185
+ def credentials_for(uri)
186
+ self[uri.to_s] || self[uri.host]
187
+ end
188
+
189
+ def gem_mirrors
190
+ all.inject(Mirrors.new) do |mirrors, k|
191
+ mirrors.parse(k, self[k]) if k.start_with?("mirror.")
192
+ mirrors
193
+ end
194
+ end
195
+
196
+ def locations(key)
197
+ key = key_for(key)
198
+ configs.keys.inject({}) do |partial_locations, level|
199
+ value_on_level = configs[level][key]
200
+ partial_locations[level] = value_on_level unless value_on_level.nil?
201
+ partial_locations
202
+ end
203
+ end
204
+
205
+ def pretty_values_for(exposed_key)
206
+ key = key_for(exposed_key)
207
+
208
+ locations = []
209
+
210
+ if value = @temporary[key]
211
+ locations << "Set for the current command: #{printable_value(value, exposed_key).inspect}"
212
+ end
213
+
214
+ if value = @local_config[key]
215
+ locations << "Set for your local app (#{local_config_file}): #{printable_value(value, exposed_key).inspect}"
216
+ end
217
+
218
+ if value = @env_config[key]
219
+ locations << "Set via #{key}: #{printable_value(value, exposed_key).inspect}"
220
+ end
221
+
222
+ if value = @global_config[key]
223
+ locations << "Set for the current user (#{global_config_file}): #{printable_value(value, exposed_key).inspect}"
224
+ end
225
+
226
+ return ["You have not configured a value for `#{exposed_key}`"] if locations.empty?
227
+ locations
228
+ end
229
+
230
+ def processor_count
231
+ require "etc"
232
+ Etc.nprocessors
233
+ rescue StandardError
234
+ 1
235
+ end
236
+
237
+ # for legacy reasons, in Bundler 2, we do not respect :disable_shared_gems
238
+ def path
239
+ configs.each do |_level, settings|
240
+ path = value_for("path", settings)
241
+ path_system = value_for("path.system", settings)
242
+ disabled_shared_gems = value_for("disable_shared_gems", settings)
243
+ next if path.nil? && path_system.nil? && disabled_shared_gems.nil?
244
+ system_path = path_system || (disabled_shared_gems == false)
245
+ return Path.new(path, system_path)
246
+ end
247
+
248
+ path = "vendor/bundle" if self[:deployment]
249
+
250
+ Path.new(path, false)
251
+ end
252
+
253
+ Path = Struct.new(:explicit_path, :system_path) do
254
+ def path
255
+ path = base_path
256
+ path = File.join(path, Bundler.ruby_scope) unless use_system_gems?
257
+ path
258
+ end
259
+
260
+ def use_system_gems?
261
+ return true if system_path
262
+ return false if explicit_path
263
+ !Bundler.feature_flag.bundler_5_mode?
264
+ end
265
+
266
+ def base_path
267
+ path = explicit_path
268
+ path ||= ".bundle" unless use_system_gems?
269
+ path ||= Bundler.rubygems.gem_dir
270
+ path
271
+ end
272
+
273
+ def base_path_relative_to_pwd
274
+ base_path = Pathname.new(self.base_path)
275
+ expanded_base_path = base_path.expand_path(Bundler.root)
276
+ relative_path = expanded_base_path.relative_path_from(Pathname.pwd)
277
+ if relative_path.to_s.start_with?("..")
278
+ relative_path = base_path if base_path.absolute?
279
+ else
280
+ relative_path = Pathname.new(File.join(".", relative_path))
281
+ end
282
+ relative_path
283
+ rescue ArgumentError
284
+ expanded_base_path
285
+ end
286
+
287
+ def validate!
288
+ return unless explicit_path && system_path
289
+ path = Bundler.settings.pretty_values_for(:path)
290
+ path.unshift(nil, "path:") unless path.empty?
291
+ system_path = Bundler.settings.pretty_values_for("path.system")
292
+ system_path.unshift(nil, "path.system:") unless system_path.empty?
293
+ disable_shared_gems = Bundler.settings.pretty_values_for(:disable_shared_gems)
294
+ disable_shared_gems.unshift(nil, "disable_shared_gems:") unless disable_shared_gems.empty?
295
+ raise InvalidOption,
296
+ "Using a custom path while using system gems is unsupported.\n#{path.join("\n")}\n#{system_path.join("\n")}\n#{disable_shared_gems.join("\n")}"
297
+ end
298
+ end
299
+
300
+ def ignore_config?
301
+ ENV["BUNDLE_IGNORE_CONFIG"]
302
+ end
303
+
304
+ def app_cache_path
305
+ @app_cache_path ||= self[:cache_path] || "vendor/cache"
306
+ end
307
+
308
+ def installation_parallelization
309
+ self[:jobs] || processor_count
310
+ end
311
+
312
+ def validate!
313
+ all.each do |raw_key|
314
+ [@local_config, @env_config, @global_config].each do |settings|
315
+ value = value_for(raw_key, settings)
316
+ Validator.validate!(raw_key, value, settings.dup)
317
+ end
318
+ end
319
+ end
320
+
321
+ def key_for(key)
322
+ @key_cache[key] ||= self.class.key_for(key)
323
+ end
324
+
325
+ private
326
+
327
+ def configs
328
+ @configs ||= {
329
+ temporary: @temporary,
330
+ local: @local_config,
331
+ env: @env_config,
332
+ global: @global_config,
333
+ default: DEFAULT_CONFIG,
334
+ }
335
+ end
336
+
337
+ def value_for(name, config)
338
+ converted_value(config[key_for(name)], name)
339
+ end
340
+
341
+ def parent_setting_for(name)
342
+ split_specific_setting_for(name)[0]
343
+ end
344
+
345
+ def specific_gem_for(name)
346
+ split_specific_setting_for(name)[1]
347
+ end
348
+
349
+ def split_specific_setting_for(name)
350
+ name.split(".")
351
+ end
352
+
353
+ def is_bool(name)
354
+ name = self.class.key_to_s(name)
355
+ BOOL_KEYS.include?(name) || BOOL_KEYS.include?(parent_setting_for(name))
356
+ end
357
+
358
+ def is_string(name)
359
+ name = self.class.key_to_s(name)
360
+ STRING_KEYS.include?(name) || name.start_with?("local.") || name.start_with?("mirror.") || name.start_with?("build.")
361
+ end
362
+
363
+ def to_bool(value)
364
+ case value
365
+ when String
366
+ value.match?(/\A(false|f|no|n|0|)\z/i) ? false : true
367
+ when nil, false
368
+ false
369
+ else
370
+ true
371
+ end
372
+ end
373
+
374
+ def is_num(key)
375
+ NUMBER_KEYS.include?(self.class.key_to_s(key))
376
+ end
377
+
378
+ def is_array(key)
379
+ ARRAY_KEYS.include?(self.class.key_to_s(key))
380
+ end
381
+
382
+ def is_credential(key)
383
+ key == "gem.push_key"
384
+ end
385
+
386
+ def is_userinfo(value)
387
+ value.include?(":")
388
+ end
389
+
390
+ def to_array(value)
391
+ return [] unless value
392
+ value.tr(" ", ":").split(":").map(&:to_sym)
393
+ end
394
+
395
+ def array_to_s(array)
396
+ array = Array(array)
397
+ return nil if array.empty?
398
+ array.join(":").tr(" ", ":")
399
+ end
400
+
401
+ def set_key(raw_key, value, hash, file)
402
+ raw_key = self.class.key_to_s(raw_key)
403
+ value = array_to_s(value) if is_array(raw_key)
404
+
405
+ key = key_for(raw_key)
406
+
407
+ return if hash[key] == value
408
+
409
+ hash[key] = value
410
+ hash.delete(key) if value.nil?
411
+
412
+ Validator.validate!(raw_key, converted_value(value, raw_key), hash)
413
+
414
+ return unless file
415
+
416
+ SharedHelpers.filesystem_access(file.dirname, :create) do |p|
417
+ FileUtils.mkdir_p(p)
418
+ end
419
+
420
+ SharedHelpers.filesystem_access(file) do |p|
421
+ p.open("w") {|f| f.write(serializer_class.dump(hash)) }
422
+ end
423
+ end
424
+
425
+ def converted_value(value, key)
426
+ key = self.class.key_to_s(key)
427
+
428
+ if is_array(key)
429
+ to_array(value)
430
+ elsif value.nil?
431
+ nil
432
+ elsif is_bool(key) || value == "false"
433
+ to_bool(value)
434
+ elsif is_num(key)
435
+ value.to_i
436
+ else
437
+ value.to_s
438
+ end
439
+ end
440
+
441
+ def printable_value(value, key)
442
+ converted = converted_value(value, key)
443
+ return converted unless converted.is_a?(String)
444
+
445
+ if is_string(key)
446
+ converted
447
+ elsif is_credential(key)
448
+ "[REDACTED]"
449
+ elsif is_userinfo(converted)
450
+ username, pass = converted.split(":", 2)
451
+
452
+ if pass == "x-oauth-basic"
453
+ username = "[REDACTED]"
454
+ else
455
+ pass = "[REDACTED]"
456
+ end
457
+
458
+ [username, pass].join(":")
459
+ else
460
+ converted
461
+ end
462
+ end
463
+
464
+ def global_config_file
465
+ if ENV["BUNDLE_CONFIG"] && !ENV["BUNDLE_CONFIG"].empty?
466
+ Pathname.new(ENV["BUNDLE_CONFIG"])
467
+ elsif ENV["BUNDLE_USER_CONFIG"] && !ENV["BUNDLE_USER_CONFIG"].empty?
468
+ Pathname.new(ENV["BUNDLE_USER_CONFIG"])
469
+ elsif ENV["BUNDLE_USER_HOME"] && !ENV["BUNDLE_USER_HOME"].empty?
470
+ Pathname.new(ENV["BUNDLE_USER_HOME"]).join("config")
471
+ elsif Bundler.rubygems.user_home && !Bundler.rubygems.user_home.empty?
472
+ Pathname.new(Bundler.rubygems.user_home).join(".bundle/config")
473
+ end
474
+ end
475
+
476
+ def local_config_file
477
+ Pathname.new(@root).join("config") if @root
478
+ end
479
+
480
+ def load_config(config_file)
481
+ return {} if !config_file || ignore_config?
482
+ SharedHelpers.filesystem_access(config_file, :read) do |file|
483
+ valid_file = file.exist? && !file.size.zero?
484
+ return {} unless valid_file
485
+ serializer_class.load(file.read).inject({}) do |config, (k, v)|
486
+ k = k.dup
487
+ k << "/" if /https?:/i.match?(k) && !k.end_with?("/", "__#{FALLBACK_TIMEOUT_URI_OPTION.upcase}")
488
+ k.gsub!(".", "__")
489
+
490
+ unless k.start_with?("#")
491
+ if k.include?("-")
492
+ Bundler.ui.warn "Your #{file} config includes `#{k}`, which contains the dash character (`-`).\n" \
493
+ "This is deprecated, because configuration through `ENV` should be possible, but `ENV` keys cannot include dashes.\n" \
494
+ "Please edit #{file} and replace any dashes in configuration keys with a triple underscore (`___`)."
495
+
496
+ # string hash keys are frozen
497
+ k = k.gsub("-", "___")
498
+ end
499
+
500
+ config[k] = v
501
+ end
502
+
503
+ config
504
+ end
505
+ end
506
+ end
507
+
508
+ def serializer_class
509
+ require "rubygems/yaml_serializer"
510
+ Gem::YAMLSerializer
511
+ rescue LoadError
512
+ # TODO: Remove this when RubyGems 3.4 is EOL
513
+ require_relative "yaml_serializer"
514
+ YAMLSerializer
515
+ end
516
+
517
+ FALLBACK_TIMEOUT_URI_OPTION = "fallback_timeout"
518
+
519
+ NORMALIZE_URI_OPTIONS_PATTERN =
520
+ /
521
+ \A
522
+ (\w+\.)? # optional prefix key
523
+ (https?.*?) # URI
524
+ (\.#{FALLBACK_TIMEOUT_URI_OPTION})? # optional suffix key
525
+ \z
526
+ /ix
527
+
528
+ def self.key_for(key)
529
+ key = key_to_s(key)
530
+ key = normalize_uri(key) if key.start_with?("http", "mirror.http")
531
+ key = key.gsub(".", "__")
532
+ key.gsub!("-", "___")
533
+ key.upcase!
534
+
535
+ key.gsub(/\A([ #]*)/, '\1BUNDLE_')
536
+ end
537
+
538
+ # TODO: duplicates Rubygems#normalize_uri
539
+ # TODO: is this the correct place to validate mirror URIs?
540
+ def self.normalize_uri(uri)
541
+ uri = uri.to_s
542
+ if uri =~ NORMALIZE_URI_OPTIONS_PATTERN
543
+ prefix = $1
544
+ uri = $2
545
+ suffix = $3
546
+ end
547
+ uri = URINormalizer.normalize_suffix(uri)
548
+ require_relative "vendored_uri"
549
+ uri = Gem::URI(uri)
550
+ unless uri.absolute?
551
+ raise ArgumentError, format("Gem sources must be absolute. You provided '%s'.", uri)
552
+ end
553
+ "#{prefix}#{uri}#{suffix}"
554
+ end
555
+
556
+ # This is a hot method, so avoid respond_to? checks on every invocation
557
+ if :read.respond_to?(:name)
558
+ def self.key_to_s(key)
559
+ case key
560
+ when String
561
+ key
562
+ when Symbol
563
+ key.name
564
+ when Gem::URI::HTTP
565
+ key.to_s
566
+ else
567
+ raise ArgumentError, "Invalid key: #{key.inspect}"
568
+ end
569
+ end
570
+ else
571
+ def self.key_to_s(key)
572
+ case key
573
+ when String
574
+ key
575
+ when Symbol
576
+ key.to_s
577
+ when Gem::URI::HTTP
578
+ key.to_s
579
+ else
580
+ raise ArgumentError, "Invalid key: #{key.inspect}"
581
+ end
582
+ end
583
+ end
584
+ end
585
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "shared_helpers"
4
+
5
+ if Bundler::SharedHelpers.in_bundle?
6
+ require_relative "../bundler"
7
+
8
+ # autoswitch to locked Bundler version if available
9
+ Bundler.auto_switch
10
+
11
+ # try to auto_install first before we get to the `Bundler.ui.silence`, so user knows what is happening
12
+ Bundler.auto_install
13
+
14
+ if STDOUT.tty? || ENV["BUNDLER_FORCE_TTY"]
15
+ begin
16
+ Bundler.ui.silence { Bundler.setup }
17
+ rescue Bundler::BundlerError => e
18
+ Bundler.ui.error e.message
19
+ Bundler.ui.warn e.backtrace.join("\n") if ENV["DEBUG"]
20
+ if e.is_a?(Bundler::GemNotFound)
21
+ default_bundle = Gem.bin_path("bundler", "bundle")
22
+ current_bundle = Bundler::SharedHelpers.bundle_bin_path
23
+ suggested_bundle = default_bundle == current_bundle ? "bundle" : current_bundle
24
+ suggested_cmd = "#{suggested_bundle} install"
25
+ original_gemfile = Bundler.original_env["BUNDLE_GEMFILE"]
26
+ suggested_cmd += " --gemfile #{original_gemfile}" if original_gemfile
27
+ Bundler.ui.warn "Run `#{suggested_cmd}` to install missing gems."
28
+ end
29
+ exit e.status_code
30
+ end
31
+ else
32
+ Bundler.ui.silence { Bundler.setup }
33
+ end
34
+
35
+ # We might be in the middle of shelling out to rubygems
36
+ # (RUBYOPT=-rbundler/setup), so we need to give rubygems the opportunity of
37
+ # not being silent.
38
+ Gem::DefaultUserInteraction.ui = nil
39
+ end