bundler 2.2.29 → 2.5.16

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 (330) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1129 -4
  3. data/README.md +4 -8
  4. data/bundler.gemspec +11 -11
  5. data/exe/bundle +5 -26
  6. data/exe/bundler +1 -1
  7. data/lib/bundler/.document +1 -0
  8. data/lib/bundler/build_metadata.rb +4 -4
  9. data/lib/bundler/capistrano.rb +1 -1
  10. data/lib/bundler/checksum.rb +254 -0
  11. data/lib/bundler/ci_detector.rb +75 -0
  12. data/lib/bundler/cli/add.rb +4 -4
  13. data/lib/bundler/cli/binstubs.rb +10 -6
  14. data/lib/bundler/cli/cache.rb +1 -1
  15. data/lib/bundler/cli/check.rb +3 -3
  16. data/lib/bundler/cli/common.rb +13 -3
  17. data/lib/bundler/cli/config.rb +18 -8
  18. data/lib/bundler/cli/console.rb +5 -4
  19. data/lib/bundler/cli/doctor.rb +12 -5
  20. data/lib/bundler/cli/exec.rb +1 -1
  21. data/lib/bundler/cli/fund.rb +1 -1
  22. data/lib/bundler/cli/gem.rb +141 -48
  23. data/lib/bundler/cli/info.rb +27 -17
  24. data/lib/bundler/cli/init.rb +6 -2
  25. data/lib/bundler/cli/install.rb +22 -39
  26. data/lib/bundler/cli/issue.rb +5 -4
  27. data/lib/bundler/cli/lock.rb +36 -29
  28. data/lib/bundler/cli/open.rb +9 -9
  29. data/lib/bundler/cli/outdated.rb +19 -12
  30. data/lib/bundler/cli/platform.rb +8 -6
  31. data/lib/bundler/cli/plugin.rb +9 -15
  32. data/lib/bundler/cli/pristine.rb +38 -30
  33. data/lib/bundler/cli/show.rb +3 -3
  34. data/lib/bundler/cli/update.rb +12 -7
  35. data/lib/bundler/cli/viz.rb +1 -1
  36. data/lib/bundler/cli.rb +266 -285
  37. data/lib/bundler/compact_index_client/cache.rb +53 -67
  38. data/lib/bundler/compact_index_client/cache_file.rb +153 -0
  39. data/lib/bundler/compact_index_client/gem_parser.rb +7 -3
  40. data/lib/bundler/compact_index_client/parser.rb +84 -0
  41. data/lib/bundler/compact_index_client/updater.rb +83 -76
  42. data/lib/bundler/compact_index_client.rb +59 -87
  43. data/lib/bundler/constants.rb +9 -2
  44. data/lib/bundler/current_ruby.rb +12 -16
  45. data/lib/bundler/definition.rb +509 -319
  46. data/lib/bundler/dependency.rb +33 -71
  47. data/lib/bundler/digest.rb +71 -0
  48. data/lib/bundler/dsl.rb +88 -69
  49. data/lib/bundler/endpoint_specification.rb +32 -15
  50. data/lib/bundler/env.rb +5 -7
  51. data/lib/bundler/environment_preserver.rb +8 -22
  52. data/lib/bundler/errors.rb +101 -13
  53. data/lib/bundler/feature_flag.rb +0 -2
  54. data/lib/bundler/fetcher/base.rb +11 -11
  55. data/lib/bundler/fetcher/compact_index.rb +32 -52
  56. data/lib/bundler/fetcher/dependency.rb +3 -7
  57. data/lib/bundler/fetcher/downloader.rb +17 -16
  58. data/lib/bundler/fetcher/gem_remote_fetcher.rb +16 -0
  59. data/lib/bundler/fetcher/index.rb +2 -29
  60. data/lib/bundler/fetcher.rb +87 -79
  61. data/lib/bundler/force_platform.rb +18 -0
  62. data/lib/bundler/friendly_errors.rb +29 -40
  63. data/lib/bundler/gem_helper.rb +11 -23
  64. data/lib/bundler/gem_helpers.rb +30 -6
  65. data/lib/bundler/gem_version_promoter.rb +68 -109
  66. data/lib/bundler/graph.rb +9 -9
  67. data/lib/bundler/index.rb +71 -79
  68. data/lib/bundler/injector.rb +23 -11
  69. data/lib/bundler/inline.rb +11 -23
  70. data/lib/bundler/installer/gem_installer.rb +18 -11
  71. data/lib/bundler/installer/parallel_installer.rb +17 -65
  72. data/lib/bundler/installer/standalone.rb +56 -15
  73. data/lib/bundler/installer.rb +35 -61
  74. data/lib/bundler/lazy_specification.rb +92 -61
  75. data/lib/bundler/lockfile_generator.rb +12 -3
  76. data/lib/bundler/lockfile_parser.rb +137 -70
  77. data/lib/bundler/man/bundle-add.1 +19 -26
  78. data/lib/bundler/man/bundle-add.1.ronn +16 -4
  79. data/lib/bundler/man/bundle-binstubs.1 +4 -16
  80. data/lib/bundler/man/bundle-cache.1 +9 -24
  81. data/lib/bundler/man/bundle-cache.1.ronn +9 -2
  82. data/lib/bundler/man/bundle-check.1 +5 -12
  83. data/lib/bundler/man/bundle-check.1.ronn +3 -0
  84. data/lib/bundler/man/bundle-clean.1 +4 -11
  85. data/lib/bundler/man/bundle-clean.1.ronn +1 -1
  86. data/lib/bundler/man/bundle-config.1 +47 -224
  87. data/lib/bundler/man/bundle-config.1.ronn +40 -28
  88. data/lib/bundler/man/bundle-console.1 +35 -0
  89. data/lib/bundler/man/bundle-console.1.ronn +44 -0
  90. data/lib/bundler/man/bundle-doctor.1 +4 -18
  91. data/lib/bundler/man/bundle-exec.1 +16 -77
  92. data/lib/bundler/man/bundle-exec.1.ronn +8 -9
  93. data/lib/bundler/man/bundle-gem.1 +45 -72
  94. data/lib/bundler/man/bundle-gem.1.ronn +32 -5
  95. data/lib/bundler/man/bundle-help.1 +9 -0
  96. data/lib/bundler/man/bundle-help.1.ronn +12 -0
  97. data/lib/bundler/man/bundle-info.1 +5 -11
  98. data/lib/bundler/man/bundle-info.1.ronn +3 -3
  99. data/lib/bundler/man/bundle-init.1 +6 -11
  100. data/lib/bundler/man/bundle-init.1.ronn +2 -0
  101. data/lib/bundler/man/bundle-inject.1 +8 -18
  102. data/lib/bundler/man/bundle-inject.1.ronn +3 -1
  103. data/lib/bundler/man/bundle-install.1 +32 -155
  104. data/lib/bundler/man/bundle-install.1.ronn +11 -33
  105. data/lib/bundler/man/bundle-list.1 +4 -19
  106. data/lib/bundler/man/bundle-lock.1 +5 -29
  107. data/lib/bundler/man/bundle-open.1 +18 -18
  108. data/lib/bundler/man/bundle-open.1.ronn +9 -1
  109. data/lib/bundler/man/bundle-outdated.1 +17 -72
  110. data/lib/bundler/man/bundle-outdated.1.ronn +13 -18
  111. data/lib/bundler/man/bundle-platform.1 +16 -28
  112. data/lib/bundler/man/bundle-platform.1.ronn +14 -7
  113. data/lib/bundler/man/bundle-plugin.1 +58 -0
  114. data/lib/bundler/man/bundle-plugin.1.ronn +63 -0
  115. data/lib/bundler/man/bundle-pristine.1 +5 -16
  116. data/lib/bundler/man/bundle-remove.1 +4 -14
  117. data/lib/bundler/man/bundle-show.1 +3 -10
  118. data/lib/bundler/man/bundle-update.1 +19 -138
  119. data/lib/bundler/man/bundle-update.1.ronn +2 -1
  120. data/lib/bundler/man/bundle-version.1 +22 -0
  121. data/lib/bundler/man/bundle-version.1.ronn +24 -0
  122. data/lib/bundler/man/bundle-viz.1 +6 -15
  123. data/lib/bundler/man/bundle-viz.1.ronn +2 -0
  124. data/lib/bundler/man/bundle.1 +17 -51
  125. data/lib/bundler/man/bundle.1.ronn +12 -7
  126. data/lib/bundler/man/gemfile.5 +130 -346
  127. data/lib/bundler/man/gemfile.5.ronn +121 -86
  128. data/lib/bundler/man/index.txt +4 -0
  129. data/lib/bundler/match_metadata.rb +17 -0
  130. data/lib/bundler/match_platform.rb +1 -2
  131. data/lib/bundler/match_remote_metadata.rb +29 -0
  132. data/lib/bundler/mirror.rb +8 -10
  133. data/lib/bundler/plugin/api/source.rb +9 -13
  134. data/lib/bundler/plugin/index.rb +13 -5
  135. data/lib/bundler/plugin/installer/git.rb +0 -4
  136. data/lib/bundler/plugin/installer/path.rb +18 -0
  137. data/lib/bundler/plugin/installer/rubygems.rb +0 -8
  138. data/lib/bundler/plugin/installer.rb +42 -19
  139. data/lib/bundler/plugin/source_list.rb +4 -4
  140. data/lib/bundler/plugin.rb +16 -7
  141. data/lib/bundler/process_lock.rb +1 -1
  142. data/lib/bundler/remote_specification.rb +11 -5
  143. data/lib/bundler/resolver/base.rb +111 -0
  144. data/lib/bundler/resolver/candidate.rb +82 -0
  145. data/lib/bundler/resolver/incompatibility.rb +15 -0
  146. data/lib/bundler/resolver/package.rb +81 -0
  147. data/lib/bundler/resolver/root.rb +25 -0
  148. data/lib/bundler/resolver/spec_group.rb +53 -66
  149. data/lib/bundler/resolver.rb +419 -307
  150. data/lib/bundler/retry.rb +1 -1
  151. data/lib/bundler/ruby_dsl.rb +42 -7
  152. data/lib/bundler/ruby_version.rb +16 -22
  153. data/lib/bundler/rubygems_ext.rb +250 -64
  154. data/lib/bundler/rubygems_gem_installer.rb +90 -64
  155. data/lib/bundler/rubygems_integration.rb +81 -190
  156. data/lib/bundler/runtime.rb +8 -13
  157. data/lib/bundler/safe_marshal.rb +31 -0
  158. data/lib/bundler/self_manager.rb +206 -0
  159. data/lib/bundler/settings.rb +139 -57
  160. data/lib/bundler/setup.rb +13 -1
  161. data/lib/bundler/shared_helpers.rb +67 -36
  162. data/lib/bundler/source/git/git_proxy.rb +285 -82
  163. data/lib/bundler/source/git.rb +81 -41
  164. data/lib/bundler/source/metadata.rb +17 -16
  165. data/lib/bundler/source/path/installer.rb +1 -22
  166. data/lib/bundler/source/path.rb +13 -25
  167. data/lib/bundler/source/rubygems/remote.rb +1 -1
  168. data/lib/bundler/source/rubygems.rb +164 -234
  169. data/lib/bundler/source/rubygems_aggregate.rb +1 -1
  170. data/lib/bundler/source.rb +7 -6
  171. data/lib/bundler/source_list.rb +40 -32
  172. data/lib/bundler/source_map.rb +15 -2
  173. data/lib/bundler/spec_set.rb +156 -46
  174. data/lib/bundler/stub_specification.rb +18 -5
  175. data/lib/bundler/templates/Executable +3 -5
  176. data/lib/bundler/templates/Executable.bundler +7 -12
  177. data/lib/bundler/templates/Executable.standalone +4 -4
  178. data/lib/bundler/templates/Gemfile +0 -2
  179. data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +77 -29
  180. data/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
  181. data/lib/bundler/templates/newgem/Gemfile.tt +8 -2
  182. data/lib/bundler/templates/newgem/README.md.tt +7 -11
  183. data/lib/bundler/templates/newgem/Rakefile.tt +28 -4
  184. data/lib/bundler/templates/newgem/bin/console.tt +0 -4
  185. data/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
  186. data/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
  187. data/lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt +10 -0
  188. data/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
  189. data/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +1 -1
  190. data/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
  191. data/lib/bundler/templates/newgem/github/workflows/main.yml.tt +13 -3
  192. data/lib/bundler/templates/newgem/gitignore.tt +3 -0
  193. data/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
  194. data/lib/bundler/templates/newgem/newgem.gemspec.tt +25 -17
  195. data/lib/bundler/templates/newgem/rubocop.yml.tt +0 -5
  196. data/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
  197. data/lib/bundler/templates/newgem/standard.yml.tt +3 -0
  198. data/lib/bundler/templates/newgem/test/minitest/{newgem_test.rb.tt → test_newgem.rb.tt} +1 -1
  199. data/lib/bundler/ui/rg_proxy.rb +1 -1
  200. data/lib/bundler/ui/shell.rb +38 -15
  201. data/lib/bundler/ui/silent.rb +21 -5
  202. data/lib/bundler/uri_credentials_filter.rb +2 -2
  203. data/lib/bundler/uri_normalizer.rb +23 -0
  204. data/lib/bundler/vendor/.document +1 -0
  205. data/lib/bundler/vendor/connection_pool/.document +1 -0
  206. data/lib/bundler/vendor/connection_pool/LICENSE +20 -0
  207. data/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +19 -21
  208. data/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  209. data/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +56 -0
  210. data/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +92 -78
  211. data/lib/bundler/vendor/fileutils/.document +1 -0
  212. data/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
  213. data/lib/bundler/vendor/fileutils/lib/fileutils.rb +1340 -410
  214. data/lib/bundler/vendor/net-http-persistent/.document +1 -0
  215. data/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
  216. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +4 -3
  217. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +23 -11
  218. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +1 -1
  219. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +57 -57
  220. data/lib/bundler/vendor/pub_grub/.document +1 -0
  221. data/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  222. data/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  223. data/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
  224. data/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  225. data/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
  226. data/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  227. data/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  228. data/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  229. data/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  230. data/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +61 -0
  231. data/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  232. data/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  233. data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
  234. data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
  235. data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +248 -0
  236. data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  237. data/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  238. data/lib/bundler/vendor/thor/.document +1 -0
  239. data/lib/bundler/vendor/thor/LICENSE.md +20 -0
  240. data/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +3 -2
  241. data/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +1 -1
  242. data/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb +1 -1
  243. data/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +12 -14
  244. data/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +16 -6
  245. data/lib/bundler/vendor/thor/lib/thor/actions.rb +21 -17
  246. data/lib/bundler/vendor/thor/lib/thor/base.rb +140 -14
  247. data/lib/bundler/vendor/thor/lib/thor/command.rb +13 -4
  248. data/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +10 -0
  249. data/lib/bundler/vendor/thor/lib/thor/error.rb +16 -20
  250. data/lib/bundler/vendor/thor/lib/thor/group.rb +1 -1
  251. data/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -1
  252. data/lib/bundler/vendor/thor/lib/thor/nested_context.rb +2 -2
  253. data/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +20 -1
  254. data/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +33 -17
  255. data/lib/bundler/vendor/thor/lib/thor/parser/option.rb +27 -8
  256. data/lib/bundler/vendor/thor/lib/thor/parser/options.rb +63 -7
  257. data/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +2 -2
  258. data/lib/bundler/vendor/thor/lib/thor/runner.rb +40 -30
  259. data/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +48 -154
  260. data/lib/bundler/vendor/thor/lib/thor/shell/color.rb +1 -46
  261. data/lib/bundler/vendor/thor/lib/thor/shell/column_printer.rb +29 -0
  262. data/lib/bundler/vendor/thor/lib/thor/shell/html.rb +0 -45
  263. data/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +134 -0
  264. data/lib/bundler/vendor/thor/lib/thor/shell/terminal.rb +42 -0
  265. data/lib/bundler/vendor/thor/lib/thor/shell/wrapped_printer.rb +38 -0
  266. data/lib/bundler/vendor/thor/lib/thor/shell.rb +2 -2
  267. data/lib/bundler/vendor/thor/lib/thor/util.rb +9 -8
  268. data/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  269. data/lib/bundler/vendor/thor/lib/thor.rb +155 -8
  270. data/lib/bundler/vendor/tsort/.document +1 -0
  271. data/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
  272. data/lib/bundler/vendor/tsort/lib/tsort.rb +455 -0
  273. data/lib/bundler/vendor/uri/.document +1 -0
  274. data/lib/bundler/vendor/uri/LICENSE.txt +22 -0
  275. data/lib/bundler/vendor/uri/lib/uri/common.rb +316 -207
  276. data/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
  277. data/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -2
  278. data/lib/bundler/vendor/uri/lib/uri/generic.rb +33 -13
  279. data/lib/bundler/vendor/uri/lib/uri/http.rb +40 -3
  280. data/lib/bundler/vendor/uri/lib/uri/https.rb +2 -2
  281. data/lib/bundler/vendor/uri/lib/uri/ldap.rb +2 -2
  282. data/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
  283. data/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -3
  284. data/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +16 -23
  285. data/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +105 -47
  286. data/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  287. data/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
  288. data/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
  289. data/lib/bundler/vendor/uri/lib/uri.rb +3 -3
  290. data/lib/bundler/vendored_net_http.rb +23 -0
  291. data/lib/bundler/vendored_persistent.rb +0 -36
  292. data/lib/bundler/{vendored_molinillo.rb → vendored_pub_grub.rb} +1 -1
  293. data/lib/bundler/vendored_timeout.rb +12 -0
  294. data/lib/bundler/{vendored_tmpdir.rb → vendored_tsort.rb} +1 -1
  295. data/lib/bundler/vendored_uri.rb +18 -1
  296. data/lib/bundler/version.rb +5 -1
  297. data/lib/bundler/vlad.rb +1 -1
  298. data/lib/bundler/worker.rb +7 -9
  299. data/lib/bundler/yaml_serializer.rb +21 -12
  300. data/lib/bundler.rb +114 -121
  301. metadata +87 -41
  302. data/lib/bundler/dep_proxy.rb +0 -55
  303. data/lib/bundler/gemdeps.rb +0 -29
  304. data/lib/bundler/psyched_yaml.rb +0 -22
  305. data/lib/bundler/templates/gems.rb +0 -8
  306. data/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +0 -5
  307. data/lib/bundler/templates/newgem/travis.yml.tt +0 -6
  308. data/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +0 -66
  309. data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
  310. data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
  311. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
  312. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
  313. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
  314. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
  315. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
  316. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
  317. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
  318. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
  319. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
  320. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
  321. data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -143
  322. data/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
  323. data/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
  324. data/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
  325. data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
  326. data/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
  327. data/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
  328. data/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
  329. data/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
  330. data/lib/bundler/version_ranges.rb +0 -122
@@ -1,55 +1,88 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "match_platform"
3
+ require_relative "force_platform"
4
4
 
5
5
  module Bundler
6
6
  class LazySpecification
7
+ include MatchMetadata
7
8
  include MatchPlatform
9
+ include ForcePlatform
8
10
 
9
- attr_reader :name, :version, :dependencies, :platform
10
- attr_accessor :source, :remote
11
+ attr_reader :name, :version, :platform
12
+ attr_accessor :source, :remote, :force_ruby_platform, :dependencies, :required_ruby_version, :required_rubygems_version
13
+
14
+ alias_method :runtime_dependencies, :dependencies
15
+
16
+ def self.from_spec(s)
17
+ lazy_spec = new(s.name, s.version, s.platform, s.source)
18
+ lazy_spec.dependencies = s.dependencies
19
+ lazy_spec.required_ruby_version = s.required_ruby_version
20
+ lazy_spec.required_rubygems_version = s.required_rubygems_version
21
+ lazy_spec
22
+ end
11
23
 
12
24
  def initialize(name, version, platform, source = nil)
13
25
  @name = name
14
26
  @version = version
15
27
  @dependencies = []
28
+ @required_ruby_version = Gem::Requirement.default
29
+ @required_rubygems_version = Gem::Requirement.default
16
30
  @platform = platform || Gem::Platform::RUBY
17
31
  @source = source
18
- @specification = nil
32
+ @force_ruby_platform = default_force_ruby_platform
19
33
  end
20
34
 
21
35
  def full_name
22
- if platform == Gem::Platform::RUBY || platform.nil?
36
+ @full_name ||= if platform == Gem::Platform::RUBY
23
37
  "#{@name}-#{@version}"
24
38
  else
25
39
  "#{@name}-#{@version}-#{platform}"
26
40
  end
27
41
  end
28
42
 
43
+ def lock_name
44
+ @lock_name ||= name_tuple.lock_name
45
+ end
46
+
47
+ def name_tuple
48
+ Gem::NameTuple.new(@name, @version, @platform)
49
+ end
50
+
29
51
  def ==(other)
30
- identifier == other.identifier
52
+ full_name == other.full_name
31
53
  end
32
54
 
33
55
  def eql?(other)
34
- identifier.eql?(other.identifier)
56
+ full_name.eql?(other.full_name)
35
57
  end
36
58
 
37
59
  def hash
38
- identifier.hash
60
+ full_name.hash
39
61
  end
40
62
 
63
+ ##
64
+ # Does this locked specification satisfy +dependency+?
65
+ #
66
+ # NOTE: Rubygems default requirement is ">= 0", which doesn't match
67
+ # prereleases of 0 versions, like "0.0.0.dev" or "0.0.0.SNAPSHOT". However,
68
+ # bundler users expect those to work. We need to make sure that Gemfile
69
+ # dependencies without explicit requirements (which use ">= 0" under the
70
+ # hood by default) are still valid for locked specs using this kind of
71
+ # versions. The method implements an ad-hoc fix for that. A better solution
72
+ # might be to change default rubygems requirement of dependencies to be ">=
73
+ # 0.A" but that's a major refactoring likely to break things. Hopefully we
74
+ # can attempt it in the future.
75
+ #
76
+
41
77
  def satisfies?(dependency)
42
- @name == dependency.name && dependency.requirement.satisfied_by?(Gem::Version.new(@version))
78
+ effective_requirement = dependency.requirement == Gem::Requirement.default ? Gem::Requirement.new(">= 0.A") : dependency.requirement
79
+
80
+ @name == dependency.name && effective_requirement.satisfied_by?(Gem::Version.new(@version))
43
81
  end
44
82
 
45
83
  def to_lock
46
84
  out = String.new
47
-
48
- if platform == Gem::Platform::RUBY || platform.nil?
49
- out << " #{name} (#{version})\n"
50
- else
51
- out << " #{name} (#{version}-#{platform})\n"
52
- end
85
+ out << " #{lock_name}\n"
53
86
 
54
87
  dependencies.sort_by(&:to_s).uniq.each do |dep|
55
88
  next if dep.type == :development
@@ -59,45 +92,51 @@ module Bundler
59
92
  out
60
93
  end
61
94
 
62
- def __materialize__
63
- @specification = if source.is_a?(Source::Gemspec) && source.gemspec.name == name
64
- source.gemspec.tap {|s| s.source = source }
95
+ def materialize_for_installation
96
+ source.local!
97
+
98
+ matching_specs = source.specs.search(use_exact_resolved_specifications? ? self : [name, version])
99
+ return self if matching_specs.empty?
100
+
101
+ candidates = if use_exact_resolved_specifications?
102
+ matching_specs
65
103
  else
66
- search_object = if source.is_a?(Source::Path)
67
- Dependency.new(name, version)
68
- else
69
- ruby_platform_materializes_to_ruby_platform? ? self : Dependency.new(name, version)
70
- end
71
- platform_object = Gem::Platform.new(platform)
72
- candidates = source.specs.search(search_object)
73
- same_platform_candidates = candidates.select do |spec|
74
- MatchPlatform.platforms_match?(spec.platform, platform_object)
75
- end
76
- installable_candidates = same_platform_candidates.select do |spec|
77
- !spec.is_a?(EndpointSpecification) ||
78
- (spec.required_ruby_version.satisfied_by?(Gem.ruby_version) &&
79
- spec.required_rubygems_version.satisfied_by?(Gem.rubygems_version))
104
+ target_platform = ruby_platform_materializes_to_ruby_platform? ? platform : local_platform
105
+
106
+ installable_candidates = GemHelpers.select_best_platform_match(matching_specs, target_platform)
107
+
108
+ specification = __materialize__(installable_candidates, fallback_to_non_installable: false)
109
+ return specification unless specification.nil?
110
+
111
+ if target_platform != platform
112
+ installable_candidates = GemHelpers.select_best_platform_match(matching_specs, platform)
80
113
  end
81
- search = installable_candidates.last || same_platform_candidates.last
82
- search.dependencies = dependencies if search && (search.is_a?(RemoteSpecification) || search.is_a?(EndpointSpecification))
83
- search
114
+
115
+ installable_candidates
84
116
  end
85
- end
86
117
 
87
- def respond_to?(*args)
88
- super || @specification ? @specification.respond_to?(*args) : nil
118
+ __materialize__(candidates)
89
119
  end
90
120
 
91
- def to_s
92
- @__to_s ||= if platform == Gem::Platform::RUBY || platform.nil?
93
- "#{name} (#{version})"
121
+ # If in frozen mode, we fallback to a non-installable candidate because by
122
+ # doing this we avoid re-resolving and potentially end up changing the
123
+ # lock file, which is not allowed. In that case, we will give a proper error
124
+ # about the mismatch higher up the stack, right before trying to install the
125
+ # bad gem.
126
+ def __materialize__(candidates, fallback_to_non_installable: Bundler.frozen_bundle?)
127
+ search = candidates.reverse.find do |spec|
128
+ spec.is_a?(StubSpecification) || spec.matches_current_metadata?
129
+ end
130
+ if search.nil? && fallback_to_non_installable
131
+ search = candidates.last
94
132
  else
95
- "#{name} (#{version}-#{platform})"
133
+ search.dependencies = dependencies if search && search.full_name == full_name && (search.is_a?(RemoteSpecification) || search.is_a?(EndpointSpecification))
96
134
  end
135
+ search
97
136
  end
98
137
 
99
- def identifier
100
- @__identifier ||= [name, version, platform_string]
138
+ def to_s
139
+ lock_name
101
140
  end
102
141
 
103
142
  def git_version
@@ -105,30 +144,20 @@ module Bundler
105
144
  " #{source.revision[0..6]}"
106
145
  end
107
146
 
108
- protected
109
-
110
- def platform_string
111
- platform_string = platform.to_s
112
- platform_string == Index::RUBY ? Index::NULL : platform_string
147
+ def force_ruby_platform!
148
+ @force_ruby_platform = true
113
149
  end
114
150
 
115
151
  private
116
152
 
117
- def to_ary
118
- nil
119
- end
120
-
121
- def method_missing(method, *args, &blk)
122
- raise "LazySpecification has not been materialized yet (calling :#{method} #{args.inspect})" unless @specification
123
-
124
- return super unless respond_to?(method)
125
-
126
- @specification.send(method, *args, &blk)
153
+ def use_exact_resolved_specifications?
154
+ @use_exact_resolved_specifications ||= !source.is_a?(Source::Path) && ruby_platform_materializes_to_ruby_platform?
127
155
  end
128
156
 
129
157
  #
130
158
  # For backwards compatibility with existing lockfiles, if the most specific
131
- # locked platform is RUBY, we keep the previous behaviour of resolving the
159
+ # locked platform is not a specific platform like x86_64-linux or
160
+ # universal-java-11, then we keep the previous behaviour of resolving the
132
161
  # best platform variant at materiliazation time. For previous bundler
133
162
  # versions (before 2.2.0) this was always the case (except when the lockfile
134
163
  # only included non-ruby platforms), but we're also keeping this behaviour
@@ -136,7 +165,9 @@ module Bundler
136
165
  # explicitly add a more specific platform.
137
166
  #
138
167
  def ruby_platform_materializes_to_ruby_platform?
139
- !Bundler.most_specific_locked_platform?(Gem::Platform::RUBY) || Bundler.settings[:force_ruby_platform]
168
+ generic_platform = generic_local_platform == Gem::Platform::JAVA ? Gem::Platform::JAVA : Gem::Platform::RUBY
169
+
170
+ !Bundler.most_specific_locked_platform?(generic_platform) || force_ruby_platform || Bundler.settings[:force_ruby_platform]
140
171
  end
141
172
  end
142
173
  end
@@ -19,6 +19,7 @@ module Bundler
19
19
  add_sources
20
20
  add_platforms
21
21
  add_dependencies
22
+ add_checksums
22
23
  add_locked_ruby_version
23
24
  add_bundled_with
24
25
 
@@ -45,7 +46,7 @@ module Bundler
45
46
  # gems with the same name, but different platform
46
47
  # are ordered consistently
47
48
  specs.sort_by(&:full_name).each do |spec|
48
- next if spec.name == "bundler".freeze
49
+ next if spec.name == "bundler"
49
50
  out << spec.to_lock
50
51
  end
51
52
  end
@@ -60,18 +61,26 @@ module Bundler
60
61
  handled = []
61
62
  definition.dependencies.sort_by(&:to_s).each do |dep|
62
63
  next if handled.include?(dep.name)
63
- out << dep.to_lock
64
+ out << dep.to_lock << "\n"
64
65
  handled << dep.name
65
66
  end
66
67
  end
67
68
 
69
+ def add_checksums
70
+ return unless definition.locked_checksums
71
+ checksums = definition.resolve.map do |spec|
72
+ spec.source.checksum_store.to_lock(spec)
73
+ end
74
+ add_section("CHECKSUMS", checksums)
75
+ end
76
+
68
77
  def add_locked_ruby_version
69
78
  return unless locked_ruby_version = definition.locked_ruby_version
70
79
  add_section("RUBY VERSION", locked_ruby_version.to_s)
71
80
  end
72
81
 
73
82
  def add_bundled_with
74
- add_section("BUNDLED WITH", definition.locked_bundler_version.to_s)
83
+ add_section("BUNDLED WITH", definition.bundler_version_to_lock.to_s)
75
84
  end
76
85
 
77
86
  def add_section(name, value)
@@ -2,18 +2,49 @@
2
2
 
3
3
  module Bundler
4
4
  class LockfileParser
5
- attr_reader :sources, :dependencies, :specs, :platforms, :bundler_version, :ruby_version
6
-
7
- BUNDLED = "BUNDLED WITH".freeze
8
- DEPENDENCIES = "DEPENDENCIES".freeze
9
- PLATFORMS = "PLATFORMS".freeze
10
- RUBY = "RUBY VERSION".freeze
11
- GIT = "GIT".freeze
12
- GEM = "GEM".freeze
13
- PATH = "PATH".freeze
14
- PLUGIN = "PLUGIN SOURCE".freeze
15
- SPECS = " specs:".freeze
16
- OPTIONS = /^ ([a-z]+): (.*)$/i.freeze
5
+ class Position
6
+ attr_reader :line, :column
7
+ def initialize(line, column)
8
+ @line = line
9
+ @column = column
10
+ end
11
+
12
+ def advance!(string)
13
+ lines = string.count("\n")
14
+ if lines > 0
15
+ @line += lines
16
+ @column = string.length - string.rindex("\n")
17
+ else
18
+ @column += string.length
19
+ end
20
+ end
21
+
22
+ def to_s
23
+ "#{line}:#{column}"
24
+ end
25
+ end
26
+
27
+ attr_reader(
28
+ :sources,
29
+ :dependencies,
30
+ :specs,
31
+ :platforms,
32
+ :bundler_version,
33
+ :ruby_version,
34
+ :checksums,
35
+ )
36
+
37
+ BUNDLED = "BUNDLED WITH"
38
+ DEPENDENCIES = "DEPENDENCIES"
39
+ CHECKSUMS = "CHECKSUMS"
40
+ PLATFORMS = "PLATFORMS"
41
+ RUBY = "RUBY VERSION"
42
+ GIT = "GIT"
43
+ GEM = "GEM"
44
+ PATH = "PATH"
45
+ PLUGIN = "PLUGIN SOURCE"
46
+ SPECS = " specs:"
47
+ OPTIONS = /^ ([a-z]+): (.*)$/i
17
48
  SOURCE = [GIT, GEM, PATH, PLUGIN].freeze
18
49
 
19
50
  SECTIONS_BY_VERSION_INTRODUCED = {
@@ -21,14 +52,18 @@ module Bundler
21
52
  Gem::Version.create("1.10") => [BUNDLED].freeze,
22
53
  Gem::Version.create("1.12") => [RUBY].freeze,
23
54
  Gem::Version.create("1.13") => [PLUGIN].freeze,
55
+ Gem::Version.create("2.5.0") => [CHECKSUMS].freeze,
24
56
  }.freeze
25
57
 
26
- KNOWN_SECTIONS = SECTIONS_BY_VERSION_INTRODUCED.values.flatten.freeze
58
+ KNOWN_SECTIONS = SECTIONS_BY_VERSION_INTRODUCED.values.flatten!.freeze
27
59
 
28
60
  ENVIRONMENT_VERSION_SECTIONS = [BUNDLED, RUBY].freeze
61
+ deprecate_constant(:ENVIRONMENT_VERSION_SECTIONS)
29
62
 
30
63
  def self.sections_in_lockfile(lockfile_contents)
31
- lockfile_contents.scan(/^\w[\w ]*$/).uniq
64
+ sections = lockfile_contents.scan(/^\w[\w ]*$/)
65
+ sections.uniq!
66
+ sections
32
67
  end
33
68
 
34
69
  def self.unknown_sections_in_lockfile(lockfile_contents)
@@ -37,7 +72,7 @@ module Bundler
37
72
 
38
73
  def self.sections_to_ignore(base_version = nil)
39
74
  base_version &&= base_version.release
40
- base_version ||= Gem::Version.create("1.0".dup)
75
+ base_version ||= Gem::Version.create("1.0")
41
76
  attributes = []
42
77
  SECTIONS_BY_VERSION_INTRODUCED.each do |version, introduced|
43
78
  next if version <= base_version
@@ -46,82 +81,88 @@ module Bundler
46
81
  attributes
47
82
  end
48
83
 
84
+ def self.bundled_with
85
+ lockfile = Bundler.default_lockfile
86
+ return unless lockfile.file?
87
+
88
+ lockfile_contents = Bundler.read_file(lockfile)
89
+ return unless lockfile_contents.include?(BUNDLED)
90
+
91
+ lockfile_contents.split(BUNDLED).last.strip
92
+ end
93
+
49
94
  def initialize(lockfile)
50
95
  @platforms = []
51
96
  @sources = []
52
97
  @dependencies = {}
53
- @state = nil
98
+ @parse_method = nil
54
99
  @specs = {}
100
+ @lockfile_path = begin
101
+ SharedHelpers.relative_lockfile_path
102
+ rescue GemfileNotFound
103
+ "Gemfile.lock"
104
+ end
105
+ @pos = Position.new(1, 1)
55
106
 
56
- if lockfile.match(/<<<<<<<|=======|>>>>>>>|\|\|\|\|\|\|\|/)
57
- raise LockfileError, "Your #{Bundler.default_lockfile.relative_path_from(SharedHelpers.pwd)} contains merge conflicts.\n" \
58
- "Run `git checkout HEAD -- #{Bundler.default_lockfile.relative_path_from(SharedHelpers.pwd)}` first to get a clean lock."
107
+ if lockfile.match?(/<<<<<<<|=======|>>>>>>>|\|\|\|\|\|\|\|/)
108
+ raise LockfileError, "Your #{@lockfile_path} contains merge conflicts.\n" \
109
+ "Run `git checkout HEAD -- #{@lockfile_path}` first to get a clean lock."
59
110
  end
60
111
 
61
- lockfile.split(/(?:\r?\n)+/).each do |line|
112
+ lockfile.split(/((?:\r?\n)+)/) do |line|
113
+ # split alternates between the line and the following whitespace
114
+ next @pos.advance!(line) if line.match?(/^\s*$/)
115
+
62
116
  if SOURCE.include?(line)
63
- @state = :source
117
+ @parse_method = :parse_source
64
118
  parse_source(line)
65
119
  elsif line == DEPENDENCIES
66
- @state = :dependency
120
+ @parse_method = :parse_dependency
121
+ elsif line == CHECKSUMS
122
+ # This is a temporary solution to make this feature disabled by default
123
+ # for all gemfiles that don't already explicitly include the feature.
124
+ @checksums = true
125
+ @parse_method = :parse_checksum
67
126
  elsif line == PLATFORMS
68
- @state = :platform
127
+ @parse_method = :parse_platform
69
128
  elsif line == RUBY
70
- @state = :ruby
129
+ @parse_method = :parse_ruby
71
130
  elsif line == BUNDLED
72
- @state = :bundled_with
73
- elsif line =~ /^[^\s]/
74
- @state = nil
75
- elsif @state
76
- send("parse_#{@state}", line)
131
+ @parse_method = :parse_bundled_with
132
+ elsif /^[^\s]/.match?(line)
133
+ @parse_method = nil
134
+ elsif @parse_method
135
+ send(@parse_method, line)
77
136
  end
137
+ @pos.advance!(line)
78
138
  end
79
- @specs = @specs.values.sort_by(&:identifier)
80
- warn_for_outdated_bundler_version
139
+ @specs = @specs.values.sort_by!(&:full_name)
81
140
  rescue ArgumentError => e
82
141
  Bundler.ui.debug(e)
83
- raise LockfileError, "Your lockfile is unreadable. Run `rm #{Bundler.default_lockfile.relative_path_from(SharedHelpers.pwd)}` " \
84
- "and then `bundle install` to generate a new lockfile."
142
+ raise LockfileError, "Your lockfile is unreadable. Run `rm #{@lockfile_path}` " \
143
+ "and then `bundle install` to generate a new lockfile. The error occurred while " \
144
+ "evaluating #{@lockfile_path}:#{@pos}"
85
145
  end
86
146
 
87
- def warn_for_outdated_bundler_version
88
- return unless bundler_version
89
- prerelease_text = bundler_version.prerelease? ? " --pre" : ""
90
- current_version = Gem::Version.create(Bundler::VERSION)
91
- return unless current_version < bundler_version
92
- Bundler.ui.warn "Warning: the running version of Bundler (#{current_version}) is older " \
93
- "than the version that created the lockfile (#{bundler_version}). We suggest you to " \
94
- "upgrade to the version that created the lockfile by running `gem install " \
95
- "bundler:#{bundler_version}#{prerelease_text}`.\n"
147
+ def may_include_redundant_platform_specific_gems?
148
+ bundler_version.nil? || bundler_version < Gem::Version.new("1.16.2")
96
149
  end
97
150
 
98
151
  private
99
152
 
100
153
  TYPES = {
101
- GIT => Bundler::Source::Git,
102
- GEM => Bundler::Source::Rubygems,
103
- PATH => Bundler::Source::Path,
154
+ GIT => Bundler::Source::Git,
155
+ GEM => Bundler::Source::Rubygems,
156
+ PATH => Bundler::Source::Path,
104
157
  PLUGIN => Bundler::Plugin,
105
158
  }.freeze
106
159
 
107
160
  def parse_source(line)
108
161
  case line
109
162
  when SPECS
110
- case @type
111
- when PATH
112
- @current_source = TYPES[@type].from_lock(@opts)
113
- @sources << @current_source
114
- when GIT
115
- @current_source = TYPES[@type].from_lock(@opts)
116
- @sources << @current_source
117
- when GEM
118
- @opts["remotes"] = Array(@opts.delete("remote")).reverse
119
- @current_source = TYPES[@type].from_lock(@opts)
120
- @sources << @current_source
121
- when PLUGIN
122
- @current_source = Plugin.source_from_lock(@opts)
123
- @sources << @current_source
124
- end
163
+ return unless TYPES.key?(@type)
164
+ @current_source = TYPES[@type].from_lock(@opts)
165
+ @sources << @current_source
125
166
  when OPTIONS
126
167
  value = $2
127
168
  value = true if value == "true"
@@ -151,18 +192,19 @@ module Bundler
151
192
  (?:#{space}\(([^-]*) # Space, followed by version
152
193
  (?:-(.*))?\))? # Optional platform
153
194
  (!)? # Optional pinned marker
195
+ (?:#{space}([^ ]+))? # Optional checksum
154
196
  $ # Line end
155
- /xo.freeze
197
+ /xo
156
198
 
157
199
  def parse_dependency(line)
158
200
  return unless line =~ NAME_VERSION
159
201
  spaces = $1
160
202
  return unless spaces.size == 2
161
- name = $2
203
+ name = -$2
162
204
  version = $3
163
205
  pinned = $5
164
206
 
165
- version = version.split(",").map(&:strip) if version
207
+ version = version.split(",").each(&:strip!) if version
166
208
 
167
209
  dep = Bundler::Dependency.new(name, version)
168
210
 
@@ -183,23 +225,47 @@ module Bundler
183
225
  @dependencies[dep.name] = dep
184
226
  end
185
227
 
186
- def parse_spec(line)
228
+ def parse_checksum(line)
187
229
  return unless line =~ NAME_VERSION
230
+
188
231
  spaces = $1
232
+ return unless spaces.size == 2
233
+ checksums = $6
234
+ return unless checksums
189
235
  name = $2
190
236
  version = $3
191
237
  platform = $4
192
238
 
239
+ version = Gem::Version.new(version)
240
+ platform = platform ? Gem::Platform.new(platform) : Gem::Platform::RUBY
241
+ full_name = Gem::NameTuple.new(name, version, platform).full_name
242
+ return unless spec = @specs[full_name]
243
+
244
+ checksums.split(",") do |lock_checksum|
245
+ column = line.index(lock_checksum) + 1
246
+ checksum = Checksum.from_lock(lock_checksum, "#{@lockfile_path}:#{@pos.line}:#{column}")
247
+ spec.source.checksum_store.register(spec, checksum)
248
+ end
249
+ end
250
+
251
+ def parse_spec(line)
252
+ return unless line =~ NAME_VERSION
253
+ spaces = $1
254
+ name = -$2
255
+ version = $3
256
+
193
257
  if spaces.size == 4
258
+ # only load platform for non-dependency (spec) line
259
+ platform = $4
260
+
194
261
  version = Gem::Version.new(version)
195
262
  platform = platform ? Gem::Platform.new(platform) : Gem::Platform::RUBY
196
- @current_spec = LazySpecification.new(name, version, platform)
197
- @current_spec.source = @current_source
263
+ @current_spec = LazySpecification.new(name, version, platform, @current_source)
198
264
  @current_source.add_dependency_names(name)
199
265
 
200
- @specs[@current_spec.identifier] = @current_spec
266
+ @specs[@current_spec.full_name] = @current_spec
201
267
  elsif spaces.size == 6
202
- version = version.split(",").map(&:strip) if version
268
+ version = version.split(",").each(&:strip!) if version
203
269
  dep = Gem::Dependency.new(name, version)
204
270
  @current_spec.dependencies << dep
205
271
  end
@@ -210,13 +276,14 @@ module Bundler
210
276
  end
211
277
 
212
278
  def parse_bundled_with(line)
213
- line = line.strip
279
+ line.strip!
214
280
  return unless Gem::Version.correct?(line)
215
281
  @bundler_version = Gem::Version.create(line)
216
282
  end
217
283
 
218
284
  def parse_ruby(line)
219
- @ruby_version = line.strip
285
+ line.strip!
286
+ @ruby_version = line
220
287
  end
221
288
  end
222
289
  end
@@ -1,66 +1,59 @@
1
- .\" generated with Ronn/v0.7.3
2
- .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
- .
4
- .TH "BUNDLE\-ADD" "1" "June 2021" "" ""
5
- .
1
+ .\" generated with nRonn/v0.11.1
2
+ .\" https://github.com/n-ronn/nronn/tree/0.11.1
3
+ .TH "BUNDLE\-ADD" "1" "June 2024" ""
6
4
  .SH "NAME"
7
5
  \fBbundle\-add\fR \- Add gem to the Gemfile and run bundle install
8
- .
9
6
  .SH "SYNOPSIS"
10
- \fBbundle add\fR \fIGEM_NAME\fR [\-\-group=GROUP] [\-\-version=VERSION] [\-\-source=SOURCE] [\-\-git=GIT] [\-\-branch=BRANCH] [\-\-skip\-install] [\-\-strict] [\-\-optimistic]
11
- .
7
+ \fBbundle add\fR \fIGEM_NAME\fR [\-\-group=GROUP] [\-\-version=VERSION] [\-\-source=SOURCE] [\-\-path=PATH] [\-\-git=GIT] [\-\-github=GITHUB] [\-\-branch=BRANCH] [\-\-ref=REF] [\-\-skip\-install] [\-\-strict] [\-\-optimistic]
12
8
  .SH "DESCRIPTION"
13
9
  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
10
  .P
16
11
  Example:
17
- .
18
12
  .P
19
13
  bundle add rails
20
- .
21
14
  .P
22
15
  bundle add rails \-\-version "< 3\.0, > 1\.1"
23
- .
24
16
  .P
25
17
  bundle add rails \-\-version "~> 5\.0\.0" \-\-source "https://gems\.example\.com" \-\-group "development"
26
- .
27
18
  .P
28
19
  bundle add rails \-\-skip\-install
29
- .
30
20
  .P
31
21
  bundle add rails \-\-group "development, test"
32
- .
33
22
  .SH "OPTIONS"
34
- .
35
23
  .TP
36
24
  \fB\-\-version\fR, \fB\-v\fR
37
25
  Specify version requirements(s) for the added gem\.
38
- .
39
26
  .TP
40
27
  \fB\-\-group\fR, \fB\-g\fR
41
28
  Specify the group(s) for the added gem\. Multiple groups should be separated by commas\.
42
- .
43
29
  .TP
44
- \fB\-\-source\fR, , \fB\-s\fR
30
+ \fB\-\-source\fR, \fB\-s\fR
45
31
  Specify the source for the added gem\.
46
- .
32
+ .TP
33
+ \fB\-\-require\fR, \fB\-r\fR
34
+ Adds require path to gem\. Provide false, or a path as a string\.
35
+ .TP
36
+ \fB\-\-path\fR
37
+ Specify the file system path for the added gem\.
47
38
  .TP
48
39
  \fB\-\-git\fR
49
40
  Specify the git source for the added gem\.
50
- .
41
+ .TP
42
+ \fB\-\-github\fR
43
+ Specify the github source for the added gem\.
51
44
  .TP
52
45
  \fB\-\-branch\fR
53
46
  Specify the git branch for the added gem\.
54
- .
47
+ .TP
48
+ \fB\-\-ref\fR
49
+ Specify the git ref for the added gem\.
55
50
  .TP
56
51
  \fB\-\-skip\-install\fR
57
52
  Adds the gem to the Gemfile but does not install it\.
58
- .
59
53
  .TP
60
54
  \fB\-\-optimistic\fR
61
- Adds optimistic declaration of version
62
- .
55
+ Adds optimistic declaration of version\.
63
56
  .TP
64
57
  \fB\-\-strict\fR
65
- Adds strict declaration of version
58
+ Adds strict declaration of version\.
66
59