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,284 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bundler
4
+ class Injector
5
+ INJECTED_GEMS = "injected gems"
6
+
7
+ def self.inject(new_deps, options = {})
8
+ injector = new(new_deps, options)
9
+ injector.inject(Bundler.default_gemfile, Bundler.default_lockfile)
10
+ end
11
+
12
+ def self.remove(gems, options = {})
13
+ injector = new(gems, options)
14
+ injector.remove(Bundler.default_gemfile, Bundler.default_lockfile)
15
+ end
16
+
17
+ def initialize(deps, options = {})
18
+ @deps = deps
19
+ @options = options
20
+ end
21
+
22
+ # @param [Pathname] gemfile_path The Gemfile in which to inject the new dependency.
23
+ # @param [Pathname] lockfile_path The lockfile in which to inject the new dependency.
24
+ # @return [Array]
25
+ def inject(gemfile_path, lockfile_path)
26
+ Bundler.definition.ensure_equivalent_gemfile_and_lockfile(true)
27
+
28
+ # temporarily unfreeze
29
+ Bundler.settings.temporary(deployment: false, frozen: false) do
30
+ # evaluate the Gemfile we have now
31
+ builder = Dsl.new
32
+ builder.eval_gemfile(gemfile_path)
33
+
34
+ # don't inject any gems that are already in the Gemfile
35
+ @deps -= builder.dependencies
36
+
37
+ # add new deps to the end of the in-memory Gemfile
38
+ # Set conservative versioning to false because
39
+ # we want to let the resolver resolve the version first
40
+ builder.eval_gemfile(INJECTED_GEMS, build_gem_lines(false)) if @deps.any?
41
+
42
+ # resolve to see if the new deps broke anything
43
+ @definition = builder.to_definition(lockfile_path, {})
44
+ @definition.remotely!
45
+
46
+ # since nothing broke, we can add those gems to the gemfile
47
+ append_to(gemfile_path, build_gem_lines(@options[:conservative_versioning])) if @deps.any?
48
+
49
+ # since we resolved successfully, write out the lockfile
50
+ @definition.lock
51
+
52
+ # invalidate the cached Bundler.definition
53
+ Bundler.reset_paths!
54
+
55
+ # return an array of the deps that we added
56
+ @deps
57
+ end
58
+ end
59
+
60
+ # @param [Pathname] gemfile_path The Gemfile from which to remove dependencies.
61
+ # @param [Pathname] lockfile_path The lockfile from which to remove dependencies.
62
+ # @return [Array]
63
+ def remove(gemfile_path, lockfile_path)
64
+ # remove gems from each gemfiles we have
65
+ Bundler.definition.gemfiles.each do |path|
66
+ deps = remove_deps(path)
67
+
68
+ show_warning("No gems were removed from the gemfile.") if deps.empty?
69
+
70
+ deps.each {|dep| Bundler.ui.confirm "#{SharedHelpers.pretty_dependency(dep)} was removed." }
71
+ end
72
+
73
+ # Invalidate the cached Bundler.definition.
74
+ # This prevents e.g. `bundle remove ...` from using outdated information.
75
+ Bundler.reset_paths!
76
+ end
77
+
78
+ private
79
+
80
+ def conservative_version(spec)
81
+ version = spec.version
82
+ return ">= 0" if version.nil?
83
+ seg_end_index = version >= Gem::Version.new("1.0") ? 1 : 2
84
+
85
+ prerelease_suffix = version.to_s.delete_prefix(version.release.to_s) if version.prerelease?
86
+ "#{version_prefix}#{version.segments[0..seg_end_index].join(".")}#{prerelease_suffix}"
87
+ end
88
+
89
+ def version_prefix
90
+ if @options[:strict]
91
+ "= "
92
+ elsif @options[:optimistic]
93
+ ">= "
94
+ else
95
+ "~> "
96
+ end
97
+ end
98
+
99
+ def build_gem_lines(conservative_versioning)
100
+ @deps.map do |d|
101
+ name = d.name.dump
102
+
103
+ requirement = if conservative_versioning
104
+ ", \"#{conservative_version(@definition.specs[d.name][0])}\""
105
+ else
106
+ ", #{d.requirement.as_list.map(&:dump).join(", ")}"
107
+ end
108
+
109
+ if d.groups != Array(:default)
110
+ group = d.groups.size == 1 ? ", group: #{d.groups.first.inspect}" : ", groups: #{d.groups.inspect}"
111
+ end
112
+
113
+ source = ", source: \"#{d.source}\"" unless d.source.nil?
114
+ path = ", path: \"#{d.path}\"" unless d.path.nil?
115
+ git = ", git: \"#{d.git}\"" unless d.git.nil?
116
+ github = ", github: \"#{d.github}\"" unless d.github.nil?
117
+ branch = ", branch: \"#{d.branch}\"" unless d.branch.nil?
118
+ ref = ", ref: \"#{d.ref}\"" unless d.ref.nil?
119
+ glob = ", glob: \"#{d.glob}\"" unless d.glob.nil?
120
+ require_path = ", require: #{convert_autorequire(d.autorequire)}" unless d.autorequire.nil?
121
+
122
+ %(gem #{name}#{requirement}#{group}#{source}#{path}#{git}#{github}#{branch}#{ref}#{glob}#{require_path})
123
+ end.join("\n")
124
+ end
125
+
126
+ def append_to(gemfile_path, new_gem_lines)
127
+ gemfile_path.open("a") do |f|
128
+ f.puts
129
+ f.puts new_gem_lines
130
+ end
131
+ end
132
+
133
+ # evaluates a gemfile to remove the specified gem
134
+ # from it.
135
+ def remove_deps(gemfile_path)
136
+ initial_gemfile = File.readlines(gemfile_path)
137
+
138
+ Bundler.ui.info "Removing gems from #{gemfile_path}"
139
+
140
+ # evaluate the Gemfile we have
141
+ builder = Dsl.new
142
+ builder.eval_gemfile(gemfile_path)
143
+
144
+ removed_deps = remove_gems_from_dependencies(builder, @deps, gemfile_path)
145
+
146
+ # abort the operation if no gems were removed
147
+ # no need to operate on gemfile further
148
+ return [] if removed_deps.empty?
149
+
150
+ cleaned_gemfile = remove_gems_from_gemfile(@deps, gemfile_path)
151
+
152
+ SharedHelpers.write_to_gemfile(gemfile_path, cleaned_gemfile)
153
+
154
+ # check for errors
155
+ # including extra gems being removed
156
+ # or some gems not being removed
157
+ # and return the actual removed deps
158
+ cross_check_for_errors(gemfile_path, builder.dependencies, removed_deps, initial_gemfile)
159
+ end
160
+
161
+ # @param [Dsl] builder Dsl object of current Gemfile.
162
+ # @param [Array] gems Array of names of gems to be removed.
163
+ # @param [Pathname] gemfile_path Path of the Gemfile.
164
+ # @return [Array] Array of removed dependencies.
165
+ def remove_gems_from_dependencies(builder, gems, gemfile_path)
166
+ removed_deps = []
167
+
168
+ gems.each do |gem_name|
169
+ deleted_dep = builder.dependencies.find {|d| d.name == gem_name }
170
+
171
+ if deleted_dep.nil?
172
+ raise GemfileError, "`#{gem_name}` is not specified in #{gemfile_path} so it could not be removed."
173
+ end
174
+
175
+ builder.dependencies.delete(deleted_dep)
176
+
177
+ removed_deps << deleted_dep
178
+ end
179
+
180
+ removed_deps
181
+ end
182
+
183
+ # @param [Array] gems Array of names of gems to be removed.
184
+ # @param [Pathname] gemfile_path The Gemfile from which to remove dependencies.
185
+ def remove_gems_from_gemfile(gems, gemfile_path)
186
+ patterns = /gem\s+(['"])#{Regexp.union(gems)}\1|gem\s*\((['"])#{Regexp.union(gems)}\2.*\)/
187
+ new_gemfile = []
188
+ multiline_removal = false
189
+ File.readlines(gemfile_path).each do |line|
190
+ match_data = line.match(patterns)
191
+ if match_data && is_not_within_comment?(line, match_data)
192
+ multiline_removal = line.rstrip.end_with?(",")
193
+ # skip lines which match the regex
194
+ next
195
+ end
196
+
197
+ # skip followup lines until line does not end with ','
198
+ new_gemfile << line unless multiline_removal
199
+ multiline_removal = line.rstrip.end_with?(",") if multiline_removal
200
+ end
201
+
202
+ # remove line \n and append them with other strings
203
+ new_gemfile.each_with_index do |_line, index|
204
+ if new_gemfile[index + 1] == "\n"
205
+ new_gemfile[index] += new_gemfile[index + 1]
206
+ new_gemfile.delete_at(index + 1)
207
+ end
208
+ end
209
+
210
+ %w[group source env install_if].each {|block| remove_nested_blocks(new_gemfile, block) }
211
+
212
+ new_gemfile.join.chomp
213
+ end
214
+
215
+ # @param [String] line Individual line of gemfile content.
216
+ # @param [MatchData] match_data Data about Regex match.
217
+ def is_not_within_comment?(line, match_data)
218
+ match_start_index = match_data.offset(0).first
219
+ !line[0..match_start_index].include?("#")
220
+ end
221
+
222
+ # @param [Array] gemfile Array of gemfile contents.
223
+ # @param [String] block_name Name of block name to look for.
224
+ def remove_nested_blocks(gemfile, block_name)
225
+ nested_blocks = 0
226
+
227
+ # count number of nested blocks
228
+ gemfile.each_with_index {|line, index| nested_blocks += 1 if !gemfile[index + 1].nil? && gemfile[index + 1].include?(block_name) && line.include?(block_name) }
229
+
230
+ while nested_blocks >= 0
231
+ nested_blocks -= 1
232
+
233
+ gemfile.each_with_index do |line, index|
234
+ next unless !line.nil? && line.strip.start_with?(block_name)
235
+ if /^\s*end\s*$/.match?(gemfile[index + 1])
236
+ gemfile[index] = nil
237
+ gemfile[index + 1] = nil
238
+ end
239
+ end
240
+
241
+ gemfile.compact!
242
+ end
243
+ end
244
+
245
+ # @param [Pathname] gemfile_path The Gemfile from which to remove dependencies.
246
+ # @param [Array] original_deps Array of original dependencies.
247
+ # @param [Array] removed_deps Array of removed dependencies.
248
+ # @param [Array] initial_gemfile Contents of original Gemfile before any operation.
249
+ def cross_check_for_errors(gemfile_path, original_deps, removed_deps, initial_gemfile)
250
+ # evaluate the new gemfile to look for any failure cases
251
+ builder = Dsl.new
252
+ builder.eval_gemfile(gemfile_path)
253
+
254
+ # record gems which were removed but not requested
255
+ extra_removed_gems = original_deps - builder.dependencies
256
+
257
+ # if some extra gems were removed then raise error
258
+ # and revert Gemfile to original
259
+ unless extra_removed_gems.empty?
260
+ SharedHelpers.write_to_gemfile(gemfile_path, initial_gemfile.join)
261
+
262
+ raise InvalidOption, "Gems could not be removed. #{extra_removed_gems.join(", ")} would also have been removed. Bundler cannot continue."
263
+ end
264
+
265
+ # record gems which could not be removed due to some reasons
266
+ errored_deps = builder.dependencies.select {|d| d.gemfile == gemfile_path } & removed_deps.select {|d| d.gemfile == gemfile_path }
267
+
268
+ show_warning "#{errored_deps.map(&:name).join(", ")} could not be removed." unless errored_deps.empty?
269
+
270
+ # return actual removed dependencies
271
+ removed_deps - errored_deps
272
+ end
273
+
274
+ def show_warning(message)
275
+ Bundler.ui.info Bundler.ui.add_color(message, :yellow)
276
+ end
277
+
278
+ def convert_autorequire(autorequire)
279
+ autorequire = autorequire.first
280
+ return autorequire if autorequire == "false"
281
+ autorequire.inspect
282
+ end
283
+ end
284
+ end
@@ -0,0 +1,106 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Allows for declaring a Gemfile inline in a ruby script, installing any gems
4
+ # that aren't already installed on the user's system.
5
+ #
6
+ # @note Every gem that is specified in this 'Gemfile' will be `require`d, as if
7
+ # the user had manually called `Bundler.require`. To avoid a requested gem
8
+ # being automatically required, add the `:require => false` option to the
9
+ # `gem` dependency declaration.
10
+ #
11
+ # @param force_latest_compatible [Boolean] Force installing the *latest*
12
+ # compatible versions of the gems,
13
+ # even if compatible versions are
14
+ # already installed locally.
15
+ # This also logs output if the
16
+ # `:quiet` option is not set.
17
+ # Defaults to `false`.
18
+ #
19
+ # @param gemfile [Proc] a block that is evaluated as a `Gemfile`.
20
+ #
21
+ # @example Using an inline Gemfile
22
+ #
23
+ # #!/usr/bin/env ruby
24
+ #
25
+ # require 'bundler/inline'
26
+ #
27
+ # gemfile do
28
+ # source 'https://rubygems.org'
29
+ # gem 'json', require: false
30
+ # gem 'nap', require: 'rest'
31
+ # gem 'cocoapods', '~> 0.34.1'
32
+ # end
33
+ #
34
+ # puts Pod::VERSION # => "0.34.4"
35
+ #
36
+ def gemfile(force_latest_compatible = false, options = {}, &gemfile)
37
+ require_relative "../bundler"
38
+ Bundler.reset!
39
+
40
+ opts = options.dup
41
+ ui = opts.delete(:ui) { Bundler::UI::Shell.new }
42
+ ui.level = "silent" if opts.delete(:quiet) || !force_latest_compatible
43
+ Bundler.ui = ui
44
+ raise ArgumentError, "Unknown options: #{opts.keys.join(", ")}" unless opts.empty?
45
+
46
+ old_gemfile = ENV["BUNDLE_GEMFILE"]
47
+ old_lockfile = ENV["BUNDLE_LOCKFILE"]
48
+
49
+ Bundler.unbundle_env!
50
+
51
+ begin
52
+ Bundler.instance_variable_set(:@bundle_path, Pathname.new(Gem.dir))
53
+ Bundler::SharedHelpers.set_env "BUNDLE_GEMFILE", "Gemfile"
54
+ Bundler::SharedHelpers.set_env "BUNDLE_LOCKFILE", "Gemfile.lock"
55
+
56
+ Bundler::Plugin.gemfile_install(&gemfile) if Bundler.settings[:plugins]
57
+ builder = Bundler::Dsl.new
58
+ builder.instance_eval(&gemfile)
59
+
60
+ Bundler.settings.temporary(deployment: false, frozen: false) do
61
+ definition = builder.to_definition(nil, true)
62
+ definition.validate_runtime!
63
+
64
+ if force_latest_compatible || definition.missing_specs?
65
+ Bundler.settings.temporary(inline: true, no_install: false) do
66
+ installer = Bundler::Installer.install(Bundler.root, definition, system: true)
67
+ installer.post_install_messages.each do |name, message|
68
+ Bundler.ui.info "Post-install message from #{name}:\n#{message}"
69
+ end
70
+ end
71
+ end
72
+
73
+ begin
74
+ runtime = Bundler::Runtime.new(nil, definition).setup
75
+ rescue Gem::LoadError => e
76
+ name = e.name
77
+ version = e.requirement.requirements.first[1]
78
+ activated_version = Gem.loaded_specs[name].version
79
+
80
+ Bundler.ui.info \
81
+ "The #{name} gem was resolved to #{version}, but #{activated_version} was activated by Bundler while installing it, causing a conflict. " \
82
+ "Bundler will now retry resolving with #{activated_version} instead."
83
+
84
+ builder.dependencies.delete_if {|d| d.name == name }
85
+ builder.instance_eval { gem name, activated_version }
86
+ definition = builder.to_definition(nil, true)
87
+
88
+ retry
89
+ end
90
+
91
+ runtime.require
92
+ end
93
+ ensure
94
+ if old_gemfile
95
+ ENV["BUNDLE_GEMFILE"] = old_gemfile
96
+ else
97
+ ENV["BUNDLE_GEMFILE"] = ""
98
+ end
99
+
100
+ if old_lockfile
101
+ ENV["BUNDLE_LOCKFILE"] = old_lockfile
102
+ else
103
+ ENV["BUNDLE_LOCKFILE"] = ""
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,88 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bundler
4
+ class GemInstaller
5
+ attr_reader :spec, :standalone, :worker, :force, :local, :installer
6
+
7
+ def initialize(spec, installer, standalone = false, worker = 0, force = false, local = false)
8
+ @spec = spec
9
+ @installer = installer
10
+ @standalone = standalone
11
+ @worker = worker
12
+ @force = force
13
+ @local = local
14
+ end
15
+
16
+ def install_from_spec
17
+ post_install_message = install
18
+ Bundler.ui.debug "#{worker}: #{spec.name} (#{spec.version}) from #{spec.loaded_from}"
19
+ [true, post_install_message]
20
+ rescue Bundler::InstallHookError, Bundler::SecurityError, Bundler::APIResponseMismatchError, Bundler::InsecureInstallPathError
21
+ raise
22
+ rescue Errno::ENOSPC
23
+ [false, out_of_space_message]
24
+ rescue Bundler::BundlerError, Gem::InstallError => e
25
+ [false, specific_failure_message(e)]
26
+ end
27
+
28
+ def download
29
+ spec.source.download(
30
+ spec,
31
+ force: force,
32
+ local: local,
33
+ build_args: Array(spec_settings),
34
+ previous_spec: previous_spec,
35
+ )
36
+
37
+ [true, nil]
38
+ rescue Bundler::BundlerError => e
39
+ [false, specific_failure_message(e)]
40
+ end
41
+
42
+ private
43
+
44
+ def specific_failure_message(e)
45
+ message = "#{e.class}: #{e.message}\n"
46
+ message += " " + e.backtrace.join("\n ") + "\n\n"
47
+ message = message.lines.first + Bundler.ui.add_color(message.lines.drop(1).join, :clear)
48
+ message + Bundler.ui.add_color(failure_message, :red)
49
+ end
50
+
51
+ def failure_message
52
+ install_error_message
53
+ end
54
+
55
+ def install_error_message
56
+ "An error occurred while installing #{spec.name} (#{spec.version}), and Bundler cannot continue."
57
+ end
58
+
59
+ def spec_settings
60
+ # Fetch the build settings, if there are any
61
+ if settings = Bundler.settings["build.#{spec.name}"]
62
+ require "shellwords"
63
+ Shellwords.shellsplit(settings)
64
+ end
65
+ end
66
+
67
+ def install
68
+ spec.source.install(
69
+ spec,
70
+ force: force,
71
+ local: local,
72
+ build_args: Array(spec_settings),
73
+ previous_spec: previous_spec,
74
+ )
75
+ end
76
+
77
+ def previous_spec
78
+ locked_gems = installer.definition.locked_gems
79
+ return unless locked_gems
80
+
81
+ locked_gems.specs.find {|s| s.name == spec.name }
82
+ end
83
+
84
+ def out_of_space_message
85
+ "#{install_error_message}\nYour disk is out of space. Free some space to be able to install your bundle."
86
+ end
87
+ end
88
+ end