bundler 1.11.1 → 2.2.6

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of bundler might be problematic. Click here for more details.

Files changed (328) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +2125 -840
  3. data/LICENSE.md +18 -19
  4. data/README.md +33 -11
  5. data/bundler.gemspec +34 -21
  6. data/exe/bundle +36 -6
  7. data/exe/bundler +2 -18
  8. data/lib/bundler.rb +435 -160
  9. data/lib/bundler/build_metadata.rb +45 -0
  10. data/lib/bundler/capistrano.rb +9 -3
  11. data/lib/bundler/cli.rb +550 -130
  12. data/lib/bundler/cli/add.rb +47 -0
  13. data/lib/bundler/cli/binstubs.rb +26 -10
  14. data/lib/bundler/cli/cache.rb +25 -17
  15. data/lib/bundler/cli/check.rb +8 -7
  16. data/lib/bundler/cli/clean.rb +8 -8
  17. data/lib/bundler/cli/common.rb +69 -9
  18. data/lib/bundler/cli/config.rb +170 -76
  19. data/lib/bundler/cli/console.rb +6 -1
  20. data/lib/bundler/cli/doctor.rb +140 -0
  21. data/lib/bundler/cli/exec.rb +63 -21
  22. data/lib/bundler/cli/fund.rb +36 -0
  23. data/lib/bundler/cli/gem.rb +158 -42
  24. data/lib/bundler/cli/info.rb +73 -0
  25. data/lib/bundler/cli/init.rb +22 -7
  26. data/lib/bundler/cli/inject.rb +38 -10
  27. data/lib/bundler/cli/install.rb +139 -104
  28. data/lib/bundler/cli/issue.rb +40 -0
  29. data/lib/bundler/cli/list.rb +60 -0
  30. data/lib/bundler/cli/lock.rb +27 -5
  31. data/lib/bundler/cli/open.rb +13 -5
  32. data/lib/bundler/cli/outdated.rb +251 -46
  33. data/lib/bundler/cli/platform.rb +6 -2
  34. data/lib/bundler/cli/plugin.rb +41 -0
  35. data/lib/bundler/cli/pristine.rb +52 -0
  36. data/lib/bundler/cli/remove.rb +18 -0
  37. data/lib/bundler/cli/show.rb +5 -4
  38. data/lib/bundler/cli/update.rb +67 -26
  39. data/lib/bundler/cli/viz.rb +11 -6
  40. data/lib/bundler/compact_index_client.rb +125 -0
  41. data/lib/bundler/compact_index_client/cache.rb +110 -0
  42. data/lib/bundler/compact_index_client/gem_parser.rb +28 -0
  43. data/lib/bundler/compact_index_client/updater.rb +104 -0
  44. data/lib/bundler/constants.rb +2 -0
  45. data/lib/bundler/current_ruby.rb +51 -174
  46. data/lib/bundler/definition.rb +533 -216
  47. data/lib/bundler/dep_proxy.rb +18 -8
  48. data/lib/bundler/dependency.rb +39 -12
  49. data/lib/bundler/deployment.rb +7 -0
  50. data/lib/bundler/deprecate.rb +31 -2
  51. data/lib/bundler/dsl.rb +188 -91
  52. data/lib/bundler/endpoint_specification.rb +51 -10
  53. data/lib/bundler/env.rb +116 -48
  54. data/lib/bundler/environment_preserver.rb +82 -0
  55. data/lib/bundler/errors.rb +108 -31
  56. data/lib/bundler/feature_flag.rb +60 -0
  57. data/lib/bundler/fetcher.rb +81 -52
  58. data/lib/bundler/fetcher/base.rb +15 -3
  59. data/lib/bundler/fetcher/compact_index.rb +140 -0
  60. data/lib/bundler/fetcher/dependency.rb +36 -42
  61. data/lib/bundler/fetcher/downloader.rb +39 -12
  62. data/lib/bundler/fetcher/index.rb +34 -9
  63. data/lib/bundler/friendly_errors.rb +132 -88
  64. data/lib/bundler/gem_helper.rb +92 -50
  65. data/lib/bundler/gem_helpers.rb +90 -5
  66. data/lib/bundler/gem_tasks.rb +3 -1
  67. data/lib/bundler/gem_version_promoter.rb +190 -0
  68. data/lib/bundler/gemdeps.rb +29 -0
  69. data/lib/bundler/graph.rb +20 -41
  70. data/lib/bundler/index.rb +74 -57
  71. data/lib/bundler/injector.rb +242 -31
  72. data/lib/bundler/inline.rb +49 -23
  73. data/lib/bundler/installer.rb +190 -74
  74. data/lib/bundler/installer/gem_installer.rb +33 -20
  75. data/lib/bundler/installer/parallel_installer.rb +201 -97
  76. data/lib/bundler/installer/standalone.rb +10 -6
  77. data/lib/bundler/lazy_specification.rb +74 -10
  78. data/lib/bundler/lockfile_generator.rb +95 -0
  79. data/lib/bundler/lockfile_parser.rb +126 -74
  80. data/lib/bundler/{ssl_certs → man}/.document +0 -0
  81. data/lib/bundler/man/bundle-add.1 +66 -0
  82. data/lib/bundler/man/bundle-add.1.ronn +46 -0
  83. data/lib/bundler/man/bundle-binstubs.1 +42 -0
  84. data/lib/bundler/man/bundle-binstubs.1.ronn +41 -0
  85. data/lib/bundler/man/bundle-cache.1 +55 -0
  86. data/{man/bundle-package.ronn → lib/bundler/man/bundle-cache.1.ronn} +22 -16
  87. data/lib/bundler/man/bundle-check.1 +31 -0
  88. data/lib/bundler/man/bundle-check.1.ronn +26 -0
  89. data/lib/bundler/man/bundle-clean.1 +24 -0
  90. data/lib/bundler/man/bundle-clean.1.ronn +18 -0
  91. data/lib/bundler/man/bundle-config.1 +488 -0
  92. data/lib/bundler/man/bundle-config.1.ronn +388 -0
  93. data/lib/bundler/man/bundle-doctor.1 +44 -0
  94. data/lib/bundler/man/bundle-doctor.1.ronn +33 -0
  95. data/lib/bundler/man/bundle-exec.1 +165 -0
  96. data/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +20 -4
  97. data/lib/bundler/man/bundle-gem.1 +102 -0
  98. data/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +37 -13
  99. data/lib/bundler/man/bundle-info.1 +20 -0
  100. data/lib/bundler/man/bundle-info.1.ronn +17 -0
  101. data/lib/bundler/man/bundle-init.1 +25 -0
  102. data/lib/bundler/man/bundle-init.1.ronn +29 -0
  103. data/lib/bundler/man/bundle-inject.1 +33 -0
  104. data/lib/bundler/man/bundle-inject.1.ronn +22 -0
  105. data/lib/bundler/man/bundle-install.1 +338 -0
  106. data/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +82 -76
  107. data/lib/bundler/man/bundle-list.1 +50 -0
  108. data/lib/bundler/man/bundle-list.1.ronn +33 -0
  109. data/lib/bundler/man/bundle-lock.1 +84 -0
  110. data/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +47 -0
  111. data/lib/bundler/man/bundle-open.1 +32 -0
  112. data/lib/bundler/man/bundle-open.1.ronn +19 -0
  113. data/lib/bundler/man/bundle-outdated.1 +155 -0
  114. data/lib/bundler/man/bundle-outdated.1.ronn +111 -0
  115. data/lib/bundler/man/bundle-platform.1 +61 -0
  116. data/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +1 -1
  117. data/lib/bundler/man/bundle-pristine.1 +34 -0
  118. data/lib/bundler/man/bundle-pristine.1.ronn +34 -0
  119. data/lib/bundler/man/bundle-remove.1 +31 -0
  120. data/lib/bundler/man/bundle-remove.1.ronn +23 -0
  121. data/lib/bundler/man/bundle-show.1 +23 -0
  122. data/lib/bundler/man/bundle-show.1.ronn +21 -0
  123. data/lib/bundler/man/bundle-update.1 +394 -0
  124. data/lib/bundler/man/bundle-update.1.ronn +350 -0
  125. data/lib/bundler/man/bundle-viz.1 +39 -0
  126. data/lib/bundler/man/bundle-viz.1.ronn +30 -0
  127. data/lib/bundler/man/bundle.1 +136 -0
  128. data/lib/bundler/man/bundle.1.ronn +111 -0
  129. data/lib/bundler/man/gemfile.5 +686 -0
  130. data/{man → lib/bundler/man}/gemfile.5.ronn +117 -95
  131. data/lib/bundler/man/index.txt +25 -0
  132. data/lib/bundler/match_platform.rb +15 -4
  133. data/lib/bundler/mirror.rb +223 -0
  134. data/lib/bundler/plugin.rb +330 -0
  135. data/lib/bundler/plugin/api.rb +81 -0
  136. data/lib/bundler/plugin/api/source.rb +304 -0
  137. data/lib/bundler/plugin/dsl.rb +53 -0
  138. data/lib/bundler/plugin/events.rb +61 -0
  139. data/lib/bundler/plugin/index.rb +182 -0
  140. data/lib/bundler/plugin/installer.rb +109 -0
  141. data/lib/bundler/plugin/installer/git.rb +38 -0
  142. data/lib/bundler/plugin/installer/rubygems.rb +27 -0
  143. data/lib/bundler/plugin/source_list.rb +27 -0
  144. data/lib/bundler/process_lock.rb +24 -0
  145. data/lib/bundler/psyched_yaml.rb +2 -6
  146. data/lib/bundler/remote_specification.rb +42 -9
  147. data/lib/bundler/resolver.rb +312 -225
  148. data/lib/bundler/resolver/spec_group.rb +122 -0
  149. data/lib/bundler/retry.rb +11 -5
  150. data/lib/bundler/ruby_dsl.rb +9 -2
  151. data/lib/bundler/ruby_version.rb +84 -61
  152. data/lib/bundler/rubygems_ext.rb +92 -53
  153. data/lib/bundler/rubygems_gem_installer.rb +84 -0
  154. data/lib/bundler/rubygems_integration.rb +320 -395
  155. data/lib/bundler/runtime.rb +87 -75
  156. data/lib/bundler/settings.rb +297 -119
  157. data/lib/bundler/settings/validator.rb +102 -0
  158. data/lib/bundler/setup.rb +13 -12
  159. data/lib/bundler/shared_helpers.rb +234 -53
  160. data/lib/bundler/similarity_detector.rb +5 -3
  161. data/lib/bundler/source.rb +63 -4
  162. data/lib/bundler/source/gemspec.rb +18 -0
  163. data/lib/bundler/source/git.rb +97 -50
  164. data/lib/bundler/source/git/git_proxy.rb +138 -65
  165. data/lib/bundler/source/metadata.rb +67 -0
  166. data/lib/bundler/source/path.rb +83 -47
  167. data/lib/bundler/source/path/installer.rb +42 -11
  168. data/lib/bundler/source/rubygems.rb +231 -116
  169. data/lib/bundler/source/rubygems/remote.rb +30 -1
  170. data/lib/bundler/source_list.rb +103 -21
  171. data/lib/bundler/spec_set.rb +96 -51
  172. data/lib/bundler/stub_specification.rb +87 -4
  173. data/lib/bundler/templates/.document +1 -0
  174. data/lib/bundler/templates/Executable +14 -1
  175. data/lib/bundler/templates/Executable.bundler +114 -0
  176. data/lib/bundler/templates/Executable.standalone +6 -4
  177. data/lib/bundler/templates/Gemfile +4 -1
  178. data/lib/bundler/templates/gems.rb +8 -0
  179. data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +79 -44
  180. data/lib/bundler/templates/newgem/Gemfile.tt +18 -2
  181. data/lib/bundler/templates/newgem/LICENSE.txt.tt +1 -1
  182. data/lib/bundler/templates/newgem/README.md.tt +16 -10
  183. data/lib/bundler/templates/newgem/Rakefile.tt +22 -8
  184. data/lib/bundler/templates/newgem/bin/console.tt +2 -1
  185. data/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
  186. data/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
  187. data/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +4 -4
  188. data/lib/bundler/templates/newgem/ext/newgem/newgem.h.tt +3 -3
  189. data/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
  190. data/lib/bundler/templates/newgem/gitignore.tt +5 -1
  191. data/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
  192. data/lib/bundler/templates/newgem/lib/newgem.rb.tt +9 -6
  193. data/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +6 -4
  194. data/lib/bundler/templates/newgem/newgem.gemspec.tt +27 -28
  195. data/lib/bundler/templates/newgem/rspec.tt +1 -0
  196. data/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
  197. data/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +4 -4
  198. data/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +15 -2
  199. data/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +3 -1
  200. data/lib/bundler/templates/newgem/test/minitest/test_helper.rb.tt +6 -0
  201. data/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  202. data/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  203. data/lib/bundler/templates/newgem/{.travis.yml.tt → travis.yml.tt} +2 -0
  204. data/lib/bundler/ui.rb +5 -3
  205. data/lib/bundler/ui/rg_proxy.rb +3 -1
  206. data/lib/bundler/ui/shell.rb +54 -21
  207. data/lib/bundler/ui/silent.rb +26 -1
  208. data/lib/bundler/uri_credentials_filter.rb +43 -0
  209. data/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +161 -0
  210. data/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +66 -0
  211. data/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +176 -0
  212. data/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
  213. data/lib/bundler/vendor/fileutils/lib/fileutils.rb +1764 -0
  214. data/lib/bundler/vendor/molinillo/lib/molinillo.rb +11 -5
  215. data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +57 -0
  216. data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +81 -0
  217. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +113 -134
  218. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +36 -0
  219. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +66 -0
  220. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +62 -0
  221. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +63 -0
  222. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +61 -0
  223. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +126 -0
  224. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +46 -0
  225. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +36 -0
  226. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +158 -0
  227. data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +82 -8
  228. data/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +4 -1
  229. data/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +2 -0
  230. data/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +6 -2
  231. data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +555 -150
  232. data/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +6 -3
  233. data/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +19 -12
  234. data/lib/bundler/vendor/{net → net-http-persistent/lib/net}/http/persistent.rb +310 -467
  235. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +40 -0
  236. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +53 -0
  237. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
  238. data/lib/bundler/vendor/thor/lib/thor.rb +58 -25
  239. data/lib/bundler/vendor/thor/lib/thor/actions.rb +50 -33
  240. data/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +3 -2
  241. data/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +5 -3
  242. data/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +9 -19
  243. data/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb +16 -8
  244. data/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +79 -22
  245. data/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +33 -20
  246. data/lib/bundler/vendor/thor/lib/thor/base.rb +110 -67
  247. data/lib/bundler/vendor/thor/lib/thor/command.rb +33 -24
  248. data/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +21 -1
  249. data/lib/bundler/vendor/thor/lib/thor/error.rb +81 -3
  250. data/lib/bundler/vendor/thor/lib/thor/group.rb +16 -16
  251. data/lib/bundler/vendor/thor/lib/thor/invocation.rb +5 -5
  252. data/lib/bundler/vendor/thor/lib/thor/line_editor.rb +2 -2
  253. data/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +2 -0
  254. data/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +6 -6
  255. data/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
  256. data/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
  257. data/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +4 -7
  258. data/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +18 -18
  259. data/lib/bundler/vendor/thor/lib/thor/parser/option.rb +60 -26
  260. data/lib/bundler/vendor/thor/lib/thor/parser/options.rb +31 -13
  261. data/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +1 -0
  262. data/lib/bundler/vendor/thor/lib/thor/runner.rb +42 -39
  263. data/lib/bundler/vendor/thor/lib/thor/shell.rb +5 -5
  264. data/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +109 -39
  265. data/lib/bundler/vendor/thor/lib/thor/shell/color.rb +7 -3
  266. data/lib/bundler/vendor/thor/lib/thor/shell/html.rb +5 -5
  267. data/lib/bundler/vendor/thor/lib/thor/util.rb +26 -9
  268. data/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  269. data/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
  270. data/lib/bundler/vendor/uri/lib/uri.rb +104 -0
  271. data/lib/bundler/vendor/uri/lib/uri/common.rb +744 -0
  272. data/lib/bundler/vendor/uri/lib/uri/file.rb +94 -0
  273. data/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
  274. data/lib/bundler/vendor/uri/lib/uri/generic.rb +1568 -0
  275. data/lib/bundler/vendor/uri/lib/uri/http.rb +88 -0
  276. data/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
  277. data/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
  278. data/lib/bundler/vendor/uri/lib/uri/ldaps.rb +21 -0
  279. data/lib/bundler/vendor/uri/lib/uri/mailto.rb +294 -0
  280. data/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +546 -0
  281. data/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +125 -0
  282. data/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
  283. data/lib/bundler/vendored_fileutils.rb +4 -0
  284. data/lib/bundler/vendored_molinillo.rb +3 -1
  285. data/lib/bundler/vendored_persistent.rb +45 -9
  286. data/lib/bundler/vendored_thor.rb +8 -3
  287. data/lib/bundler/vendored_tmpdir.rb +4 -0
  288. data/lib/bundler/vendored_uri.rb +4 -0
  289. data/lib/bundler/version.rb +7 -4
  290. data/lib/bundler/version_ranges.rb +122 -0
  291. data/lib/bundler/vlad.rb +8 -2
  292. data/lib/bundler/worker.rb +38 -6
  293. data/lib/bundler/yaml_serializer.rb +89 -0
  294. metadata +164 -158
  295. data/.gitignore +0 -16
  296. data/.rspec +0 -3
  297. data/.rubocop.yml +0 -105
  298. data/.rubocop_todo.yml +0 -120
  299. data/.travis.yml +0 -97
  300. data/CODE_OF_CONDUCT.md +0 -42
  301. data/CONTRIBUTING.md +0 -32
  302. data/DEVELOPMENT.md +0 -118
  303. data/ISSUES.md +0 -96
  304. data/Rakefile +0 -309
  305. data/bin/rake +0 -14
  306. data/bin/rspec +0 -10
  307. data/bin/rubocop +0 -11
  308. data/exe/bundle_ruby +0 -60
  309. data/lib/bundler/cli/package.rb +0 -45
  310. data/lib/bundler/environment.rb +0 -41
  311. data/lib/bundler/gem_path_manipulation.rb +0 -8
  312. data/lib/bundler/gem_remote_fetcher.rb +0 -41
  313. data/lib/bundler/ssl_certs/AddTrustExternalCARoot-2048.pem +0 -25
  314. data/lib/bundler/ssl_certs/AddTrustExternalCARoot.pem +0 -32
  315. data/lib/bundler/ssl_certs/Class3PublicPrimaryCertificationAuthority.pem +0 -14
  316. data/lib/bundler/ssl_certs/DigiCertHighAssuranceEVRootCA.pem +0 -23
  317. data/lib/bundler/ssl_certs/EntrustnetSecureServerCertificationAuthority.pem +0 -28
  318. data/lib/bundler/ssl_certs/GeoTrustGlobalCA.pem +0 -20
  319. data/lib/bundler/ssl_certs/certificate_manager.rb +0 -64
  320. data/lib/bundler/templates/newgem/test/test_helper.rb.tt +0 -4
  321. data/lib/bundler/vendor/net/http/faster.rb +0 -26
  322. data/lib/bundler/vendor/net/http/persistent/ssl_reuse.rb +0 -128
  323. data/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb +0 -10
  324. data/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb +0 -98
  325. data/man/bundle-config.ronn +0 -187
  326. data/man/bundle-update.ronn +0 -188
  327. data/man/bundle.ronn +0 -98
  328. data/man/index.txt +0 -8
@@ -0,0 +1,95 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bundler
4
+ class LockfileGenerator
5
+ attr_reader :definition
6
+ attr_reader :out
7
+
8
+ # @private
9
+ def initialize(definition)
10
+ @definition = definition
11
+ @out = String.new
12
+ end
13
+
14
+ def self.generate(definition)
15
+ new(definition).generate!
16
+ end
17
+
18
+ def generate!
19
+ add_sources
20
+ add_platforms
21
+ add_dependencies
22
+ add_locked_ruby_version
23
+ add_bundled_with
24
+
25
+ out
26
+ end
27
+
28
+ private
29
+
30
+ def add_sources
31
+ definition.send(:sources).lock_sources.each_with_index do |source, idx|
32
+ out << "\n" unless idx.zero?
33
+
34
+ # Add the source header
35
+ out << source.to_lock
36
+
37
+ # Find all specs for this source
38
+ specs = definition.resolve.select {|s| source.can_lock?(s) }
39
+ add_specs(specs)
40
+ end
41
+ end
42
+
43
+ def add_specs(specs)
44
+ # This needs to be sorted by full name so that
45
+ # gems with the same name, but different platform
46
+ # are ordered consistently
47
+ specs.sort_by(&:full_name).each do |spec|
48
+ next if spec.name == "bundler".freeze
49
+ out << spec.to_lock
50
+ end
51
+ end
52
+
53
+ def add_platforms
54
+ add_section("PLATFORMS", definition.platforms)
55
+ end
56
+
57
+ def add_dependencies
58
+ out << "\nDEPENDENCIES\n"
59
+
60
+ handled = []
61
+ definition.dependencies.sort_by(&:to_s).each do |dep|
62
+ next if handled.include?(dep.name)
63
+ out << dep.to_lock
64
+ handled << dep.name
65
+ end
66
+ end
67
+
68
+ def add_locked_ruby_version
69
+ return unless locked_ruby_version = definition.locked_ruby_version
70
+ add_section("RUBY VERSION", locked_ruby_version.to_s)
71
+ end
72
+
73
+ def add_bundled_with
74
+ add_section("BUNDLED WITH", definition.locked_bundler_version.to_s)
75
+ end
76
+
77
+ def add_section(name, value)
78
+ out << "\n#{name}\n"
79
+ case value
80
+ when Array
81
+ value.map(&:to_s).sort.each do |val|
82
+ out << " #{val}\n"
83
+ end
84
+ when Hash
85
+ value.to_a.sort_by {|k, _| k.to_s }.each do |key, val|
86
+ out << " #{key}: #{val}\n"
87
+ end
88
+ when String
89
+ out << " #{value}\n"
90
+ else
91
+ raise ArgumentError, "#{value.inspect} can't be serialized in a lockfile"
92
+ end
93
+ end
94
+ end
95
+ end
@@ -1,5 +1,6 @@
1
- require "strscan"
1
+ # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # Some versions of the Bundler 1.1 RC series introduced corrupted
4
5
  # lockfiles. There were two major problems:
5
6
  #
@@ -12,22 +13,54 @@ require "strscan"
12
13
 
13
14
  module Bundler
14
15
  class LockfileParser
15
- attr_reader :sources, :dependencies, :specs, :platforms, :bundler_version
16
-
17
- BUNDLED = "BUNDLED WITH"
18
- DEPENDENCIES = "DEPENDENCIES"
19
- PLATFORMS = "PLATFORMS"
20
- GIT = "GIT"
21
- GEM = "GEM"
22
- PATH = "PATH"
23
- SPECS = " specs:"
24
- OPTIONS = /^ ([a-z]+): (.*)$/i
25
- SOURCE = [GIT, GEM, PATH]
16
+ attr_reader :sources, :dependencies, :specs, :platforms, :bundler_version, :ruby_version
17
+
18
+ BUNDLED = "BUNDLED WITH".freeze
19
+ DEPENDENCIES = "DEPENDENCIES".freeze
20
+ PLATFORMS = "PLATFORMS".freeze
21
+ RUBY = "RUBY VERSION".freeze
22
+ GIT = "GIT".freeze
23
+ GEM = "GEM".freeze
24
+ PATH = "PATH".freeze
25
+ PLUGIN = "PLUGIN SOURCE".freeze
26
+ SPECS = " specs:".freeze
27
+ OPTIONS = /^ ([a-z]+): (.*)$/i.freeze
28
+ SOURCE = [GIT, GEM, PATH, PLUGIN].freeze
29
+
30
+ SECTIONS_BY_VERSION_INTRODUCED = {
31
+ Gem::Version.create("1.0") => [DEPENDENCIES, PLATFORMS, GIT, GEM, PATH].freeze,
32
+ Gem::Version.create("1.10") => [BUNDLED].freeze,
33
+ Gem::Version.create("1.12") => [RUBY].freeze,
34
+ Gem::Version.create("1.13") => [PLUGIN].freeze,
35
+ }.freeze
36
+
37
+ KNOWN_SECTIONS = SECTIONS_BY_VERSION_INTRODUCED.values.flatten.freeze
38
+
39
+ ENVIRONMENT_VERSION_SECTIONS = [BUNDLED, RUBY].freeze
40
+
41
+ def self.sections_in_lockfile(lockfile_contents)
42
+ lockfile_contents.scan(/^\w[\w ]*$/).uniq
43
+ end
44
+
45
+ def self.unknown_sections_in_lockfile(lockfile_contents)
46
+ sections_in_lockfile(lockfile_contents) - KNOWN_SECTIONS
47
+ end
48
+
49
+ def self.sections_to_ignore(base_version = nil)
50
+ base_version &&= base_version.release
51
+ base_version ||= Gem::Version.create("1.0".dup)
52
+ attributes = []
53
+ SECTIONS_BY_VERSION_INTRODUCED.each do |version, introduced|
54
+ next if version <= base_version
55
+ attributes += introduced
56
+ end
57
+ attributes
58
+ end
26
59
 
27
60
  def initialize(lockfile)
28
61
  @platforms = []
29
62
  @sources = []
30
- @dependencies = []
63
+ @dependencies = {}
31
64
  @state = nil
32
65
  @specs = {}
33
66
 
@@ -46,6 +79,8 @@ module Bundler
46
79
  @state = :dependency
47
80
  elsif line == PLATFORMS
48
81
  @state = :platform
82
+ elsif line == RUBY
83
+ @state = :ruby
49
84
  elsif line == BUNDLED
50
85
  @state = :bundled_with
51
86
  elsif line =~ /^[^\s]/
@@ -54,8 +89,8 @@ module Bundler
54
89
  send("parse_#{@state}", line)
55
90
  end
56
91
  end
57
- @sources << @rubygems_aggregate
58
- @specs = @specs.values
92
+ @sources << @rubygems_aggregate unless Bundler.feature_flag.disable_multisource?
93
+ @specs = @specs.values.sort_by(&:identifier)
59
94
  warn_for_outdated_bundler_version
60
95
  rescue ArgumentError => e
61
96
  Bundler.ui.debug(e)
@@ -67,33 +102,24 @@ module Bundler
67
102
  return unless bundler_version
68
103
  prerelease_text = bundler_version.prerelease? ? " --pre" : ""
69
104
  current_version = Gem::Version.create(Bundler::VERSION)
70
- case current_version.segments.first <=> bundler_version.segments.first
71
- when -1
72
- raise LockfileError, "You must use Bundler #{bundler_version.segments.first} or greater with this lockfile."
73
- when 0
74
- if current_version < bundler_version
75
- Bundler.ui.warn "Warning: the running version of Bundler is older " \
76
- "than the version that created the lockfile. We suggest you " \
77
- "upgrade to the latest version of Bundler by running `gem " \
78
- "install bundler#{prerelease_text}`.\n"
79
- end
80
- end
105
+ return unless current_version < bundler_version
106
+ Bundler.ui.warn "Warning: the running version of Bundler (#{current_version}) is older " \
107
+ "than the version that created the lockfile (#{bundler_version}). We suggest you to " \
108
+ "upgrade to the version that created the lockfile by running `gem install " \
109
+ "bundler:#{bundler_version}#{prerelease_text}`.\n"
81
110
  end
82
111
 
83
- private
112
+ private
84
113
 
85
114
  TYPES = {
86
- GIT => Bundler::Source::Git,
87
- GEM => Bundler::Source::Rubygems,
88
- PATH => Bundler::Source::Path,
89
- }
115
+ GIT => Bundler::Source::Git,
116
+ GEM => Bundler::Source::Rubygems,
117
+ PATH => Bundler::Source::Path,
118
+ PLUGIN => Bundler::Plugin,
119
+ }.freeze
90
120
 
91
121
  def parse_source(line)
92
122
  case line
93
- when GIT, GEM, PATH
94
- @current_source = nil
95
- @opts = {}
96
- @type = line
97
123
  when SPECS
98
124
  case @type
99
125
  when PATH
@@ -108,10 +134,19 @@ module Bundler
108
134
  @sources << @current_source
109
135
  end
110
136
  when GEM
111
- Array(@opts["remote"]).each do |url|
112
- @rubygems_aggregate.add_remote(url)
137
+ if Bundler.feature_flag.disable_multisource?
138
+ @opts["remotes"] = @opts.delete("remote")
139
+ @current_source = TYPES[@type].from_lock(@opts)
140
+ @sources << @current_source
141
+ else
142
+ Array(@opts["remote"]).each do |url|
143
+ @rubygems_aggregate.add_remote(url)
144
+ end
145
+ @current_source = @rubygems_aggregate
113
146
  end
114
- @current_source = @rubygems_aggregate
147
+ when PLUGIN
148
+ @current_source = Plugin.source_from_lock(@opts)
149
+ @sources << @current_source
115
150
  end
116
151
  when OPTIONS
117
152
  value = $2
@@ -126,57 +161,71 @@ module Bundler
126
161
  else
127
162
  @opts[key] = value
128
163
  end
164
+ when *SOURCE
165
+ @current_source = nil
166
+ @opts = {}
167
+ @type = line
129
168
  else
130
169
  parse_spec(line)
131
170
  end
132
171
  end
133
172
 
134
- NAME_VERSION = '(?! )(.*?)(?: \(([^-]*)(?:-(.*))?\))?'
135
- NAME_VERSION_2 = /^ {2}#{NAME_VERSION}(!)?$/
136
- NAME_VERSION_4 = /^ {4}#{NAME_VERSION}$/
137
- NAME_VERSION_6 = /^ {6}#{NAME_VERSION}$/
173
+ space = / /
174
+ NAME_VERSION = /
175
+ ^(#{space}{2}|#{space}{4}|#{space}{6})(?!#{space}) # Exactly 2, 4, or 6 spaces at the start of the line
176
+ (.*?) # Name
177
+ (?:#{space}\(([^-]*) # Space, followed by version
178
+ (?:-(.*))?\))? # Optional platform
179
+ (!)? # Optional pinned marker
180
+ $ # Line end
181
+ /xo.freeze
138
182
 
139
183
  def parse_dependency(line)
140
- if line =~ NAME_VERSION_2
141
- name = $1
142
- version = $2
143
- pinned = $4
144
- version = version.split(",").map(&:strip) if version
145
-
146
- dep = Bundler::Dependency.new(name, version)
147
-
148
- if pinned && dep.name != "bundler"
149
- spec = @specs.find {|_, v| v.name == dep.name }
150
- dep.source = spec.last.source if spec
151
-
152
- # Path sources need to know what the default name / version
153
- # to use in the case that there are no gemspecs present. A fake
154
- # gemspec is created based on the version set on the dependency
155
- # TODO: Use the version from the spec instead of from the dependency
156
- if version && version.size == 1 && version.first =~ /^\s*= (.+)\s*$/ && dep.source.is_a?(Bundler::Source::Path)
157
- dep.source.name = name
158
- dep.source.version = $1
159
- end
184
+ return unless line =~ NAME_VERSION
185
+ spaces = $1
186
+ return unless spaces.size == 2
187
+ name = $2
188
+ version = $3
189
+ pinned = $5
190
+
191
+ version = version.split(",").map(&:strip) if version
192
+
193
+ dep = Bundler::Dependency.new(name, version)
194
+
195
+ if pinned && dep.name != "bundler"
196
+ spec = @specs.find {|_, v| v.name == dep.name }
197
+ dep.source = spec.last.source if spec
198
+
199
+ # Path sources need to know what the default name / version
200
+ # to use in the case that there are no gemspecs present. A fake
201
+ # gemspec is created based on the version set on the dependency
202
+ # TODO: Use the version from the spec instead of from the dependency
203
+ if version && version.size == 1 && version.first =~ /^\s*= (.+)\s*$/ && dep.source.is_a?(Bundler::Source::Path)
204
+ dep.source.name = name
205
+ dep.source.version = $1
160
206
  end
161
-
162
- @dependencies << dep
163
207
  end
208
+
209
+ @dependencies[dep.name] = dep
164
210
  end
165
211
 
166
212
  def parse_spec(line)
167
- if line =~ NAME_VERSION_4
168
- name = $1
169
- version = Gem::Version.new($2)
170
- platform = $3 ? Gem::Platform.new($3) : Gem::Platform::RUBY
213
+ return unless line =~ NAME_VERSION
214
+ spaces = $1
215
+ name = $2
216
+ version = $3
217
+ platform = $4
218
+
219
+ if spaces.size == 4
220
+ version = Gem::Version.new(version)
221
+ platform = platform ? Gem::Platform.new(platform) : Gem::Platform::RUBY
171
222
  @current_spec = LazySpecification.new(name, version, platform)
172
223
  @current_spec.source = @current_source
173
224
 
174
225
  # Avoid introducing multiple copies of the same spec (caused by
175
226
  # duplicate GIT sections)
176
227
  @specs[@current_spec.identifier] ||= @current_spec
177
- elsif line =~ NAME_VERSION_6
178
- name = $1
179
- version = $2
228
+ elsif spaces.size == 6
180
229
  version = version.split(",").map(&:strip) if version
181
230
  dep = Gem::Dependency.new(name, version)
182
231
  @current_spec.dependencies << dep
@@ -189,9 +238,12 @@ module Bundler
189
238
 
190
239
  def parse_bundled_with(line)
191
240
  line = line.strip
192
- if Gem::Version.correct?(line)
193
- @bundler_version = Gem::Version.create(line)
194
- end
241
+ return unless Gem::Version.correct?(line)
242
+ @bundler_version = Gem::Version.create(line)
243
+ end
244
+
245
+ def parse_ruby(line)
246
+ @ruby_version = line.strip
195
247
  end
196
248
  end
197
249
  end
File without changes
@@ -0,0 +1,66 @@
1
+ .\" generated with Ronn/v0.7.3
2
+ .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
+ .
4
+ .TH "BUNDLE\-ADD" "1" "November 2020" "" ""
5
+ .
6
+ .SH "NAME"
7
+ \fBbundle\-add\fR \- Add gem to the Gemfile and run bundle install
8
+ .
9
+ .SH "SYNOPSIS"
10
+ \fBbundle add\fR \fIGEM_NAME\fR [\-\-group=GROUP] [\-\-version=VERSION] [\-\-source=SOURCE] [\-\-git=GIT] [\-\-branch=BRANCH] [\-\-skip\-install] [\-\-strict] [\-\-optimistic]
11
+ .
12
+ .SH "DESCRIPTION"
13
+ Adds the named gem to the Gemfile and run \fBbundle install\fR\. \fBbundle install\fR can be avoided by using the flag \fB\-\-skip\-install\fR\.
14
+ .
15
+ .P
16
+ Example:
17
+ .
18
+ .P
19
+ bundle add rails
20
+ .
21
+ .P
22
+ bundle add rails \-\-version "< 3\.0, > 1\.1"
23
+ .
24
+ .P
25
+ bundle add rails \-\-version "~> 5\.0\.0" \-\-source "https://gems\.example\.com" \-\-group "development"
26
+ .
27
+ .P
28
+ bundle add rails \-\-skip\-install
29
+ .
30
+ .P
31
+ bundle add rails \-\-group "development, test"
32
+ .
33
+ .SH "OPTIONS"
34
+ .
35
+ .TP
36
+ \fB\-\-version\fR, \fB\-v\fR
37
+ Specify version requirements(s) for the added gem\.
38
+ .
39
+ .TP
40
+ \fB\-\-group\fR, \fB\-g\fR
41
+ Specify the group(s) for the added gem\. Multiple groups should be separated by commas\.
42
+ .
43
+ .TP
44
+ \fB\-\-source\fR, , \fB\-s\fR
45
+ Specify the source for the added gem\.
46
+ .
47
+ .TP
48
+ \fB\-\-git\fR
49
+ Specify the git source for the added gem\.
50
+ .
51
+ .TP
52
+ \fB\-\-branch\fR
53
+ Specify the git branch for the added gem\.
54
+ .
55
+ .TP
56
+ \fB\-\-skip\-install\fR
57
+ Adds the gem to the Gemfile but does not install it\.
58
+ .
59
+ .TP
60
+ \fB\-\-optimistic\fR
61
+ Adds optimistic declaration of version
62
+ .
63
+ .TP
64
+ \fB\-\-strict\fR
65
+ Adds strict declaration of version
66
+
@@ -0,0 +1,46 @@
1
+ bundle-add(1) -- Add gem to the Gemfile and run bundle install
2
+ ================================================================
3
+
4
+ ## SYNOPSIS
5
+
6
+ `bundle add` <GEM_NAME> [--group=GROUP] [--version=VERSION] [--source=SOURCE] [--git=GIT] [--branch=BRANCH] [--skip-install] [--strict] [--optimistic]
7
+
8
+ ## DESCRIPTION
9
+ Adds the named gem to the Gemfile and run `bundle install`. `bundle install` can be avoided by using the flag `--skip-install`.
10
+
11
+ Example:
12
+
13
+ bundle add rails
14
+
15
+ bundle add rails --version "< 3.0, > 1.1"
16
+
17
+ bundle add rails --version "~> 5.0.0" --source "https://gems.example.com" --group "development"
18
+
19
+ bundle add rails --skip-install
20
+
21
+ bundle add rails --group "development, test"
22
+
23
+ ## OPTIONS
24
+ * `--version`, `-v`:
25
+ Specify version requirements(s) for the added gem.
26
+
27
+ * `--group`, `-g`:
28
+ Specify the group(s) for the added gem. Multiple groups should be separated by commas.
29
+
30
+ * `--source`, , `-s`:
31
+ Specify the source for the added gem.
32
+
33
+ * `--git`:
34
+ Specify the git source for the added gem.
35
+
36
+ * `--branch`:
37
+ Specify the git branch for the added gem.
38
+
39
+ * `--skip-install`:
40
+ Adds the gem to the Gemfile but does not install it.
41
+
42
+ * `--optimistic`:
43
+ Adds optimistic declaration of version
44
+
45
+ * `--strict`:
46
+ Adds strict declaration of version