bundler-clone 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,451 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../vendored_fileutils"
4
+
5
+ module Bundler
6
+ class Source
7
+ class Git < Path
8
+ autoload :GitProxy, File.expand_path("git/git_proxy", __dir__)
9
+
10
+ attr_reader :uri, :ref, :branch, :options, :glob, :submodules
11
+
12
+ def initialize(options)
13
+ @options = options
14
+ @checksum_store = Checksum::Store.new
15
+ @glob = options["glob"] || DEFAULT_GLOB
16
+
17
+ @allow_cached = false
18
+ @allow_remote = false
19
+
20
+ # Stringify options that could be set as symbols
21
+ %w[ref branch tag revision].each {|k| options[k] = options[k].to_s if options[k] }
22
+
23
+ @uri = URINormalizer.normalize_suffix(options["uri"] || "", trailing_slash: false)
24
+ @safe_uri = URICredentialsFilter.credential_filtered_uri(@uri)
25
+ @branch = options["branch"]
26
+ @ref = options["ref"] || options["branch"] || options["tag"]
27
+ @submodules = options["submodules"]
28
+ @name = options["name"]
29
+ @version = options["version"].to_s.strip.gsub("-", ".pre.")
30
+
31
+ @copied = false
32
+ @local = false
33
+ end
34
+
35
+ def remote!
36
+ return if @allow_remote
37
+
38
+ @local_specs = nil
39
+ @allow_remote = true
40
+ end
41
+
42
+ def cached!
43
+ return if @allow_cached
44
+
45
+ @local_specs = nil
46
+ @allow_cached = true
47
+ end
48
+
49
+ def self.from_lock(options)
50
+ new(options.merge("uri" => options.delete("remote")))
51
+ end
52
+
53
+ def to_lock
54
+ out = String.new("GIT\n")
55
+ out << " remote: #{@uri}\n"
56
+ out << " revision: #{revision}\n"
57
+ %w[ref branch tag submodules].each do |opt|
58
+ out << " #{opt}: #{options[opt]}\n" if options[opt]
59
+ end
60
+ out << " glob: #{@glob}\n" unless default_glob?
61
+ out << " specs:\n"
62
+ end
63
+
64
+ def to_gemfile
65
+ specifiers = %w[ref branch tag submodules glob].map do |opt|
66
+ "#{opt}: #{options[opt]}" if options[opt]
67
+ end
68
+
69
+ uri_with_specifiers(specifiers)
70
+ end
71
+
72
+ def hash
73
+ [self.class, uri, ref, branch, name, glob, submodules].hash
74
+ end
75
+
76
+ def eql?(other)
77
+ other.is_a?(Git) && uri == other.uri && ref == other.ref &&
78
+ branch == other.branch && name == other.name &&
79
+ glob == other.glob &&
80
+ submodules == other.submodules
81
+ end
82
+
83
+ alias_method :==, :eql?
84
+
85
+ def include?(other)
86
+ other.is_a?(Git) && uri == other.uri &&
87
+ name == other.name &&
88
+ glob == other.glob &&
89
+ submodules == other.submodules
90
+ end
91
+
92
+ def to_s
93
+ begin
94
+ at = humanized_ref || current_branch
95
+
96
+ rev = "at #{at}@#{shortref_for_display(revision)}"
97
+ rescue GitError
98
+ ""
99
+ end
100
+
101
+ uri_with_specifiers([rev, glob_for_display])
102
+ end
103
+
104
+ def identifier
105
+ uri_with_specifiers([humanized_ref, locked_revision, glob_for_display])
106
+ end
107
+
108
+ def uri_with_specifiers(specifiers)
109
+ specifiers.compact!
110
+
111
+ suffix =
112
+ if specifiers.any?
113
+ " (#{specifiers.join(", ")})"
114
+ else
115
+ ""
116
+ end
117
+
118
+ "#{@safe_uri}#{suffix}"
119
+ end
120
+
121
+ def name
122
+ File.basename(@uri, ".git")
123
+ end
124
+
125
+ # This is the path which is going to contain a specific
126
+ # checkout of the git repository. When using local git
127
+ # repos, this is set to the local repo.
128
+ def install_path
129
+ @install_path ||= begin
130
+ git_scope = "#{base_name}-#{shortref_for_path(revision)}"
131
+
132
+ Bundler.install_path.join(git_scope)
133
+ end
134
+ end
135
+
136
+ alias_method :path, :install_path
137
+
138
+ def extension_dir_name
139
+ "#{base_name}-#{shortref_for_path(revision)}"
140
+ end
141
+
142
+ def unlock!
143
+ git_proxy.revision = nil
144
+ options["revision"] = nil
145
+
146
+ @unlocked = true
147
+ end
148
+
149
+ def local_override!(path)
150
+ return false if local?
151
+
152
+ original_path = path
153
+ path = Pathname.new(path)
154
+ path = path.expand_path(Bundler.root) unless path.relative?
155
+
156
+ unless branch || Bundler.settings[:disable_local_branch_check]
157
+ raise GitError, "Cannot use local override for #{name} at #{path} because " \
158
+ ":branch is not specified in Gemfile. Specify a branch or run " \
159
+ "`bundle config unset local.#{override_for(original_path)}` to remove the local override"
160
+ end
161
+
162
+ unless path.exist?
163
+ raise GitError, "Cannot use local override for #{name} because #{path} " \
164
+ "does not exist. Run `bundle config unset local.#{override_for(original_path)}` to remove the local override"
165
+ end
166
+
167
+ @local = true
168
+ set_paths!(path)
169
+
170
+ # Create a new git proxy without the cached revision
171
+ # so the Gemfile.lock always picks up the new revision.
172
+ @git_proxy = GitProxy.new(path, uri, options)
173
+
174
+ if current_branch != branch && !Bundler.settings[:disable_local_branch_check]
175
+ raise GitError, "Local override for #{name} at #{path} is using branch " \
176
+ "#{current_branch} but Gemfile specifies #{branch}"
177
+ end
178
+
179
+ changed = locked_revision && locked_revision != revision
180
+
181
+ if !Bundler.settings[:disable_local_revision_check] && changed && !@unlocked && !git_proxy.contains?(locked_revision)
182
+ raise GitError, "The Gemfile lock is pointing to revision #{shortref_for_display(locked_revision)} " \
183
+ "but the current branch in your local override for #{name} does not contain such commit. " \
184
+ "Please make sure your branch is up to date."
185
+ end
186
+
187
+ changed
188
+ end
189
+
190
+ def specs(*)
191
+ set_cache_path!(app_cache_path) if use_app_cache?
192
+
193
+ if requires_checkout? && !@copied
194
+ fetch unless use_app_cache?
195
+ checkout
196
+ end
197
+
198
+ local_specs
199
+ end
200
+
201
+ def install(spec, options = {})
202
+ return if Bundler.settings[:no_install]
203
+ force = options[:force]
204
+
205
+ print_using_message "Using #{version_message(spec, options[:previous_spec])} from #{self}"
206
+
207
+ if (requires_checkout? && !@copied) || force
208
+ checkout
209
+ end
210
+
211
+ generate_bin_options = { disable_extensions: !spec.missing_extensions?, build_args: options[:build_args] }
212
+ generate_bin(spec, generate_bin_options)
213
+
214
+ requires_checkout? ? spec.post_install_message : nil
215
+ end
216
+
217
+ def migrate_cache(custom_path = nil, local: false)
218
+ if local
219
+ cache_to(custom_path, try_migrate: false)
220
+ else
221
+ cache_to(custom_path, try_migrate: true)
222
+ end
223
+ end
224
+
225
+ def cache(spec, custom_path = nil)
226
+ cache_to(custom_path, try_migrate: false)
227
+ end
228
+
229
+ def load_spec_files
230
+ super
231
+ rescue PathError => e
232
+ Bundler.ui.trace e
233
+ raise GitError, "#{self} is not yet checked out. Run `bundle install` first."
234
+ end
235
+
236
+ # This is the path which is going to contain a cache
237
+ # of the git repository. When using the same git repository
238
+ # across different projects, this cache will be shared.
239
+ # When using local git repos, this is set to the local repo.
240
+ def cache_path
241
+ @cache_path ||= if Bundler.settings[:global_gem_cache]
242
+ Bundler.user_cache
243
+ else
244
+ Bundler.bundle_path.join("cache", "bundler")
245
+ end.join("git", git_scope)
246
+ end
247
+
248
+ def app_cache_dirname
249
+ "#{base_name}-#{shortref_for_path(locked_revision || revision)}"
250
+ end
251
+
252
+ def revision
253
+ git_proxy.revision
254
+ end
255
+
256
+ def current_branch
257
+ git_proxy.current_branch
258
+ end
259
+
260
+ def allow_git_ops?
261
+ @allow_remote || @allow_cached
262
+ end
263
+
264
+ def local?
265
+ @local
266
+ end
267
+
268
+ private
269
+
270
+ def cache_to(custom_path, try_migrate: false)
271
+ return unless Bundler.settings[:cache_all]
272
+
273
+ app_cache_path = app_cache_path(custom_path)
274
+
275
+ migrate = try_migrate ? bare_repo?(app_cache_path) : false
276
+
277
+ set_cache_path!(nil) if migrate
278
+
279
+ return if cache_path == app_cache_path
280
+
281
+ cached!
282
+ FileUtils.rm_rf(app_cache_path)
283
+ git_proxy.checkout if migrate || requires_checkout?
284
+ git_proxy.copy_to(app_cache_path, @submodules)
285
+ serialize_gemspecs_in(app_cache_path)
286
+ end
287
+
288
+ def checkout
289
+ Bundler.ui.debug " * Checking out revision: #{ref}"
290
+ if use_app_cache? && !bare_repo?(app_cache_path)
291
+ SharedHelpers.filesystem_access(install_path.dirname) do |p|
292
+ FileUtils.mkdir_p(p)
293
+ end
294
+ FileUtils.cp_r("#{app_cache_path}/.", install_path)
295
+ else
296
+ if use_app_cache? && bare_repo?(app_cache_path)
297
+ Bundler.ui.warn "Installing from cache in old \"bare repository\" format for compatibility. " \
298
+ "Please run `bundle cache` and commit the updated cache to migrate to the new format and get rid of this warning."
299
+ end
300
+
301
+ git_proxy.copy_to(install_path, submodules)
302
+ end
303
+ serialize_gemspecs_in(install_path)
304
+ @copied = true
305
+ end
306
+
307
+ def humanized_ref
308
+ if local?
309
+ path
310
+ elsif user_ref = options["ref"]
311
+ if /\A[a-z0-9]{4,}\z/i.match?(ref)
312
+ shortref_for_display(user_ref)
313
+ else
314
+ user_ref
315
+ end
316
+ elsif ref
317
+ ref
318
+ end
319
+ end
320
+
321
+ def serialize_gemspecs_in(destination)
322
+ destination = destination.expand_path(Bundler.root) if destination.relative?
323
+ Dir["#{destination}/#{@glob}"].each do |spec_path|
324
+ # Evaluate gemspecs and cache the result. Gemspecs
325
+ # in git might require git or other dependencies.
326
+ # The gemspecs we cache should already be evaluated.
327
+ spec = Bundler.load_gemspec(spec_path)
328
+ next unless spec
329
+ spec.installed_by_version = Gem::VERSION
330
+ Bundler.rubygems.validate(spec)
331
+ File.open(spec_path, "wb") {|file| file.write(spec.to_ruby) }
332
+ end
333
+ end
334
+
335
+ def set_paths!(path)
336
+ set_cache_path!(path)
337
+ set_install_path!(path)
338
+ end
339
+
340
+ def set_cache_path!(path)
341
+ @git_proxy = nil
342
+ @cache_path = path
343
+ end
344
+
345
+ def set_install_path!(path)
346
+ @local_specs = nil
347
+ @install_path = path
348
+ end
349
+
350
+ def has_app_cache?
351
+ locked_revision && super
352
+ end
353
+
354
+ def use_app_cache?
355
+ has_app_cache? && !local?
356
+ end
357
+
358
+ def requires_checkout?
359
+ allow_git_ops? && !local? && !locked_revision_checked_out?
360
+ end
361
+
362
+ def locked_revision_checked_out?
363
+ locked_revision && locked_revision == revision && installed?
364
+ end
365
+
366
+ def installed?
367
+ git_proxy.installed_to?(install_path)
368
+ end
369
+
370
+ def base_name
371
+ File.basename(uri.sub(%r{^(\w+://)?([^/:]+:)?(//\w*/)?(\w*/)*}, ""), ".git")
372
+ end
373
+
374
+ def shortref_for_display(ref)
375
+ ref[0..6]
376
+ end
377
+
378
+ def shortref_for_path(ref)
379
+ ref[0..11]
380
+ end
381
+
382
+ def glob_for_display
383
+ default_glob? ? nil : "glob: #{@glob}"
384
+ end
385
+
386
+ def default_glob?
387
+ @glob == DEFAULT_GLOB
388
+ end
389
+
390
+ def uri_hash
391
+ if %r{^\w+://(\w+@)?}.match?(uri)
392
+ # Downcase the domain component of the URI
393
+ # and strip off a trailing slash, if one is present
394
+ input = Gem::URI.parse(uri).normalize.to_s.sub(%r{/$}, "")
395
+ else
396
+ # If there is no URI scheme, assume it is an ssh/git URI
397
+ input = uri
398
+ end
399
+ # We use SHA1 here for historical reason and to preserve backward compatibility.
400
+ # But a transition to a simpler mangling algorithm would be welcome.
401
+ Bundler::Digest.sha1(input)
402
+ end
403
+
404
+ def locked_revision
405
+ options["revision"]
406
+ end
407
+
408
+ def cached?
409
+ cache_path.exist?
410
+ end
411
+
412
+ def git_proxy
413
+ @git_proxy ||= GitProxy.new(cache_path, uri, options, locked_revision, self)
414
+ end
415
+
416
+ def fetch
417
+ git_proxy.checkout
418
+ rescue GitError => e
419
+ Bundler.ui.warn "Using cached git data because of network errors:\n#{e}"
420
+ end
421
+
422
+ # no-op, since we validate when re-serializing the gemspec
423
+ def validate_spec(_spec); end
424
+
425
+ def load_gemspec(file)
426
+ dirname = Pathname.new(file).dirname
427
+ SharedHelpers.chdir(dirname.to_s) do
428
+ stub = Gem::StubSpecification.gemspec_stub(file, install_path.parent, install_path.parent)
429
+ stub.full_gem_path = dirname.expand_path(root).to_s
430
+ StubSpecification.from_stub(stub)
431
+ end
432
+ end
433
+
434
+ def git_scope
435
+ "#{base_name}-#{uri_hash}"
436
+ end
437
+
438
+ def extension_cache_slug(_)
439
+ extension_dir_name
440
+ end
441
+
442
+ def override_for(path)
443
+ Bundler.settings.local_overrides.key(path)
444
+ end
445
+
446
+ def bare_repo?(path)
447
+ File.exist?(path.join("objects")) && File.exist?(path.join("HEAD"))
448
+ end
449
+ end
450
+ end
451
+ end
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bundler
4
+ class Source
5
+ class Metadata < Source
6
+ def specs
7
+ @specs ||= Index.build do |idx|
8
+ idx << Gem::Specification.new("Ruby\0", Bundler::RubyVersion.system.gem_version)
9
+ idx << Gem::Specification.new("RubyGems\0", Gem::VERSION) do |s|
10
+ s.required_rubygems_version = Gem::Requirement.default
11
+ end
12
+
13
+ if local_spec = Gem.loaded_specs["bundler"]
14
+ raise CorruptBundlerInstallError.new(local_spec) if local_spec.version.to_s != Bundler::VERSION
15
+
16
+ idx << local_spec
17
+ else
18
+ idx << Gem::Specification.new do |s|
19
+ s.name = "bundler"
20
+ s.version = VERSION
21
+ s.license = "MIT"
22
+ s.platform = Gem::Platform::RUBY
23
+ s.authors = ["bundler team"]
24
+ s.bindir = "exe"
25
+ s.homepage = "https://bundler.io"
26
+ s.summary = "The best way to manage your application's dependencies"
27
+ s.executables = %w[bundle bundler]
28
+ s.loaded_from = SharedHelpers.gemspec_path
29
+ end
30
+ end
31
+
32
+ idx.each {|s| s.source = self }
33
+ end
34
+ end
35
+
36
+ def options
37
+ {}
38
+ end
39
+
40
+ def install(spec, _opts = {})
41
+ print_using_message "Using #{version_message(spec)}"
42
+ nil
43
+ end
44
+
45
+ def to_s
46
+ "the local ruby installation"
47
+ end
48
+
49
+ def ==(other)
50
+ self.class == other.class
51
+ end
52
+ alias_method :eql?, :==
53
+
54
+ def hash
55
+ self.class.hash
56
+ end
57
+
58
+ def version_message(spec)
59
+ "#{spec.name} #{spec.version}"
60
+ end
61
+
62
+ def checksum_store
63
+ @checksum_store ||= Checksum::Store.new
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../rubygems_gem_installer"
4
+
5
+ module Bundler
6
+ class Source
7
+ class Path
8
+ class Installer < Bundler::RubyGemsGemInstaller
9
+ attr_reader :spec
10
+
11
+ def initialize(spec, options = {})
12
+ @options = options
13
+ @spec = spec
14
+ @gem_dir = Bundler.rubygems.path(spec.full_gem_path)
15
+ @wrappers = true
16
+ @env_shebang = true
17
+ @format_executable = options[:format_executable] || false
18
+ @build_args = options[:build_args] || Bundler.rubygems.build_args
19
+ @gem_bin_dir = "#{Bundler.rubygems.gem_dir}/bin"
20
+ @disable_extensions = options[:disable_extensions]
21
+ @bin_dir = @gem_bin_dir
22
+ end
23
+
24
+ def post_install
25
+ run_hooks(:pre_install)
26
+
27
+ unless @disable_extensions
28
+ build_extensions
29
+ run_hooks(:post_build)
30
+ end
31
+
32
+ generate_bin unless spec.executables.empty?
33
+
34
+ run_hooks(:post_install)
35
+ end
36
+
37
+ private
38
+
39
+ def run_hooks(type)
40
+ hooks_meth = "#{type}_hooks"
41
+ return unless Gem.respond_to?(hooks_meth)
42
+ Gem.send(hooks_meth).each do |hook|
43
+ result = hook.call(self)
44
+ next unless result == false
45
+ location = " at #{$1}" if hook.inspect =~ /@(.*:\d+)/
46
+ message = "#{type} hook#{location} failed for #{spec.full_name}"
47
+ raise InstallHookError, message
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end