rubygems-update 3.3.27 → 3.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (272) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +29 -0
  3. data/CONTRIBUTING.md +24 -1
  4. data/Manifest.txt +30 -27
  5. data/POLICIES.md +10 -8
  6. data/README.md +2 -2
  7. data/bin/gem +1 -4
  8. data/bin/update_rubygems +1 -1
  9. data/bundler/CHANGELOG.md +48 -0
  10. data/bundler/README.md +2 -2
  11. data/bundler/bundler.gemspec +2 -2
  12. data/bundler/exe/bundle +1 -4
  13. data/bundler/lib/bundler/build_metadata.rb +2 -2
  14. data/bundler/lib/bundler/cli/add.rb +1 -1
  15. data/bundler/lib/bundler/cli/check.rb +1 -1
  16. data/bundler/lib/bundler/cli/common.rb +1 -0
  17. data/bundler/lib/bundler/cli/console.rb +2 -2
  18. data/bundler/lib/bundler/cli/doctor.rb +4 -6
  19. data/bundler/lib/bundler/cli/gem.rb +62 -40
  20. data/bundler/lib/bundler/cli/install.rb +2 -3
  21. data/bundler/lib/bundler/cli/lock.rb +8 -5
  22. data/bundler/lib/bundler/cli/outdated.rb +1 -3
  23. data/bundler/lib/bundler/cli/viz.rb +1 -1
  24. data/bundler/lib/bundler/cli.rb +43 -2
  25. data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
  26. data/bundler/lib/bundler/compact_index_client/updater.rb +40 -39
  27. data/bundler/lib/bundler/constants.rb +1 -1
  28. data/bundler/lib/bundler/definition.rb +61 -31
  29. data/bundler/lib/bundler/dependency.rb +12 -11
  30. data/bundler/lib/bundler/digest.rb +1 -1
  31. data/bundler/lib/bundler/dsl.rb +1 -1
  32. data/bundler/lib/bundler/env.rb +1 -1
  33. data/bundler/lib/bundler/environment_preserver.rb +1 -0
  34. data/bundler/lib/bundler/errors.rb +1 -11
  35. data/bundler/lib/bundler/fetcher/compact_index.rb +9 -11
  36. data/bundler/lib/bundler/fetcher/dependency.rb +1 -1
  37. data/bundler/lib/bundler/fetcher/downloader.rb +2 -5
  38. data/bundler/lib/bundler/fetcher.rb +2 -6
  39. data/bundler/lib/bundler/force_platform.rb +18 -0
  40. data/bundler/lib/bundler/friendly_errors.rb +0 -3
  41. data/bundler/lib/bundler/gem_version_promoter.rb +52 -86
  42. data/bundler/lib/bundler/graph.rb +3 -3
  43. data/bundler/lib/bundler/index.rb +5 -18
  44. data/bundler/lib/bundler/injector.rb +1 -1
  45. data/bundler/lib/bundler/inline.rb +2 -2
  46. data/bundler/lib/bundler/installer/parallel_installer.rb +0 -31
  47. data/bundler/lib/bundler/installer.rb +6 -16
  48. data/bundler/lib/bundler/lazy_specification.rb +37 -33
  49. data/bundler/lib/bundler/lockfile_parser.rb +5 -5
  50. data/bundler/lib/bundler/man/bundle-add.1 +1 -1
  51. data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
  52. data/bundler/lib/bundler/man/bundle-cache.1 +1 -1
  53. data/bundler/lib/bundler/man/bundle-check.1 +1 -1
  54. data/bundler/lib/bundler/man/bundle-clean.1 +1 -1
  55. data/bundler/lib/bundler/man/bundle-config.1 +1 -1
  56. data/bundler/lib/bundler/man/bundle-console.1 +1 -1
  57. data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
  58. data/bundler/lib/bundler/man/bundle-exec.1 +1 -1
  59. data/bundler/lib/bundler/man/bundle-gem.1 +27 -37
  60. data/bundler/lib/bundler/man/bundle-gem.1.ronn +5 -5
  61. data/bundler/lib/bundler/man/bundle-help.1 +1 -1
  62. data/bundler/lib/bundler/man/bundle-info.1 +1 -1
  63. data/bundler/lib/bundler/man/bundle-init.1 +1 -1
  64. data/bundler/lib/bundler/man/bundle-inject.1 +1 -1
  65. data/bundler/lib/bundler/man/bundle-install.1 +1 -30
  66. data/bundler/lib/bundler/man/bundle-install.1.ronn +0 -29
  67. data/bundler/lib/bundler/man/bundle-list.1 +1 -1
  68. data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
  69. data/bundler/lib/bundler/man/bundle-open.1 +1 -1
  70. data/bundler/lib/bundler/man/bundle-outdated.1 +1 -1
  71. data/bundler/lib/bundler/man/bundle-platform.1 +2 -2
  72. data/bundler/lib/bundler/man/bundle-platform.1.ronn +1 -1
  73. data/bundler/lib/bundler/man/bundle-plugin.1 +1 -1
  74. data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
  75. data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
  76. data/bundler/lib/bundler/man/bundle-show.1 +1 -1
  77. data/bundler/lib/bundler/man/bundle-update.1 +1 -1
  78. data/bundler/lib/bundler/man/bundle-version.1 +1 -1
  79. data/bundler/lib/bundler/man/bundle-viz.1 +1 -1
  80. data/bundler/lib/bundler/man/bundle.1 +1 -1
  81. data/bundler/lib/bundler/man/gemfile.5 +1 -1
  82. data/bundler/lib/bundler/mirror.rb +5 -7
  83. data/bundler/lib/bundler/plugin/index.rb +4 -4
  84. data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -4
  85. data/bundler/lib/bundler/resolver/base.rb +7 -11
  86. data/bundler/lib/bundler/resolver/candidate.rb +92 -0
  87. data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
  88. data/bundler/lib/bundler/resolver/package.rb +63 -0
  89. data/bundler/lib/bundler/resolver/root.rb +25 -0
  90. data/bundler/lib/bundler/resolver/spec_group.rb +26 -36
  91. data/bundler/lib/bundler/resolver.rb +285 -277
  92. data/bundler/lib/bundler/rubygems_ext.rb +11 -6
  93. data/bundler/lib/bundler/rubygems_gem_installer.rb +4 -2
  94. data/bundler/lib/bundler/rubygems_integration.rb +1 -9
  95. data/bundler/lib/bundler/runtime.rb +1 -5
  96. data/bundler/lib/bundler/settings.rb +0 -6
  97. data/bundler/lib/bundler/shared_helpers.rb +1 -0
  98. data/bundler/lib/bundler/source/git/git_proxy.rb +190 -67
  99. data/bundler/lib/bundler/source/git.rb +15 -17
  100. data/bundler/lib/bundler/source/metadata.rb +0 -1
  101. data/bundler/lib/bundler/source/path/installer.rb +1 -22
  102. data/bundler/lib/bundler/source/path.rb +5 -5
  103. data/bundler/lib/bundler/source/rubygems.rb +13 -67
  104. data/bundler/lib/bundler/source_list.rb +8 -2
  105. data/bundler/lib/bundler/spec_set.rb +7 -9
  106. data/bundler/lib/bundler/templates/Executable +1 -1
  107. data/bundler/lib/bundler/templates/Executable.bundler +4 -9
  108. data/bundler/lib/bundler/templates/Executable.standalone +2 -0
  109. data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
  110. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +3 -0
  111. data/bundler/lib/bundler/templates/newgem/README.md.tt +6 -4
  112. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +2 -1
  113. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
  114. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
  115. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
  116. data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
  117. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +10 -0
  118. data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
  119. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +8 -0
  120. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +8 -2
  121. data/bundler/lib/bundler/ui/shell.rb +35 -12
  122. data/bundler/lib/bundler/ui/silent.rb +21 -5
  123. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
  124. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
  125. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
  126. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1350 -408
  127. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
  128. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
  129. data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  130. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  131. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
  132. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  133. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +151 -0
  134. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  135. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  136. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  137. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  138. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +53 -0
  139. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  140. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  141. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +124 -0
  142. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +409 -0
  143. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +240 -0
  144. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  145. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  146. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +1 -1
  147. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +64 -16
  148. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
  149. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -1
  150. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +27 -7
  151. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -2
  152. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -1
  153. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
  154. data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
  155. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -2
  156. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +13 -7
  157. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +10 -5
  158. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  159. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +1 -2
  160. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +2 -1
  161. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -2
  162. data/bundler/lib/bundler/vendored_persistent.rb +1 -33
  163. data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_pub_grub.rb} +1 -1
  164. data/bundler/lib/bundler/version.rb +5 -1
  165. data/bundler/lib/bundler/worker.rb +5 -7
  166. data/bundler/lib/bundler.rb +20 -64
  167. data/lib/rubygems/command_manager.rb +2 -2
  168. data/lib/rubygems/commands/fetch_command.rb +1 -1
  169. data/lib/rubygems/commands/install_command.rb +7 -3
  170. data/lib/rubygems/commands/rdoc_command.rb +3 -2
  171. data/lib/rubygems/commands/setup_command.rb +2 -2
  172. data/lib/rubygems/commands/unpack_command.rb +1 -1
  173. data/lib/rubygems/commands/update_command.rb +1 -7
  174. data/lib/rubygems/config_file.rb +33 -0
  175. data/lib/rubygems/core_ext/kernel_warn.rb +1 -2
  176. data/lib/rubygems/defaults.rb +15 -1
  177. data/lib/rubygems/dependency.rb +4 -1
  178. data/lib/rubygems/dependency_installer.rb +24 -24
  179. data/lib/rubygems/exceptions.rb +1 -3
  180. data/lib/rubygems/ext/builder.rb +3 -3
  181. data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +9 -5
  182. data/lib/rubygems/ext/cargo_builder.rb +15 -20
  183. data/lib/rubygems/ext/ext_conf_builder.rb +2 -0
  184. data/lib/rubygems/indexer.rb +1 -1
  185. data/lib/rubygems/installer.rb +5 -5
  186. data/lib/rubygems/optparse/lib/optparse.rb +20 -15
  187. data/lib/rubygems/package/tar_header.rb +11 -11
  188. data/lib/rubygems/platform.rb +0 -2
  189. data/lib/rubygems/request_set/gem_dependency_api.rb +104 -104
  190. data/lib/rubygems/requirement.rb +7 -7
  191. data/lib/rubygems/resolver/installer_set.rb +1 -1
  192. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +1 -1
  193. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
  194. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  195. data/lib/rubygems/security/policies.rb +40 -40
  196. data/lib/rubygems/security/trust_dir.rb +1 -1
  197. data/lib/rubygems/security.rb +3 -16
  198. data/lib/rubygems/source.rb +2 -2
  199. data/lib/rubygems/specification.rb +37 -49
  200. data/lib/rubygems/specification_policy.rb +14 -0
  201. data/lib/rubygems/stub_specification.rb +2 -2
  202. data/lib/rubygems/text.rb +1 -1
  203. data/lib/rubygems/tsort/lib/tsort.rb +308 -310
  204. data/lib/rubygems/update_suggestion.rb +69 -0
  205. data/lib/rubygems/util.rb +1 -5
  206. data/lib/rubygems/validator.rb +1 -1
  207. data/lib/rubygems.rb +8 -3
  208. data/rubygems-update.gemspec +2 -2
  209. data/test/rubygems/helper.rb +7 -3
  210. data/test/rubygems/test_bundled_ca.rb +1 -1
  211. data/test/rubygems/test_exit.rb +6 -0
  212. data/test/rubygems/test_gem.rb +4 -9
  213. data/test/rubygems/test_gem_bundler_version_finder.rb +2 -1
  214. data/test/rubygems/test_gem_command_manager.rb +1 -1
  215. data/test/rubygems/test_gem_commands_install_command.rb +19 -0
  216. data/test/rubygems/test_gem_commands_setup_command.rb +1 -8
  217. data/test/rubygems/test_gem_commands_update_command.rb +6 -6
  218. data/test/rubygems/test_gem_config_file.rb +1 -1
  219. data/test/rubygems/test_gem_dependency.rb +2 -0
  220. data/test/rubygems/test_gem_ext_builder.rb +3 -3
  221. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.lock +22 -32
  222. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.toml +1 -1
  223. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +22 -32
  224. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +1 -1
  225. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +12 -0
  226. data/test/rubygems/test_gem_ext_cargo_builder.rb +22 -28
  227. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +16 -16
  228. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +0 -10
  229. data/test/rubygems/test_gem_indexer.rb +39 -20
  230. data/test/rubygems/test_gem_installer.rb +68 -2
  231. data/test/rubygems/test_gem_package_tar_header.rb +13 -13
  232. data/test/rubygems/test_gem_platform.rb +59 -60
  233. data/test/rubygems/test_gem_remote_fetcher.rb +4 -4
  234. data/test/rubygems/test_gem_request_set.rb +2 -2
  235. data/test/rubygems/test_gem_requirement.rb +1 -1
  236. data/test/rubygems/test_gem_resolver_api_set.rb +12 -12
  237. data/test/rubygems/test_gem_resolver_api_specification.rb +19 -19
  238. data/test/rubygems/test_gem_resolver_git_specification.rb +1 -1
  239. data/test/rubygems/test_gem_security_policy.rb +10 -10
  240. data/test/rubygems/test_gem_security_trust_dir.rb +2 -2
  241. data/test/rubygems/test_gem_specification.rb +50 -37
  242. data/test/rubygems/test_gem_uninstaller.rb +1 -1
  243. data/test/rubygems/test_gem_update_suggestion.rb +208 -0
  244. data/test/rubygems/test_kernel.rb +10 -8
  245. data/test/rubygems/test_require.rb +70 -55
  246. metadata +34 -31
  247. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
  248. data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
  249. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
  250. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
  251. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
  252. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
  253. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
  254. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
  255. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
  256. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
  257. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
  258. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
  259. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
  260. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
  261. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -149
  262. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
  263. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
  264. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
  265. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
  266. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
  267. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
  268. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
  269. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
  270. data/bundler/lib/bundler/vendored_molinillo.rb +0 -4
  271. data/bundler/lib/bundler/version_ranges.rb +0 -122
  272. /data/bundler/lib/bundler/templates/newgem/ext/newgem/{extconf.rb.tt → extconf-c.rb.tt} +0 -0
@@ -61,14 +61,11 @@ module Bundler
61
61
  req.basic_auth(user, password)
62
62
  end
63
63
  connection.request(uri, req)
64
- rescue NoMethodError => e
65
- raise unless ["undefined method", "use_ssl="].all? {|snippet| e.message.include? snippet }
66
- raise LoadError.new("cannot load such file -- openssl")
67
64
  rescue OpenSSL::SSL::SSLError
68
65
  raise CertificateFailureError.new(uri)
69
66
  rescue *HTTP_ERRORS => e
70
67
  Bundler.ui.trace e
71
- if e.is_a?(SocketError) || e.message =~ /host down:/
68
+ if e.is_a?(SocketError) || e.message.to_s.include?("host down:")
72
69
  raise NetworkDownError, "Could not reach host #{uri.host}. Check your network " \
73
70
  "connection and try again."
74
71
  else
@@ -80,7 +77,7 @@ module Bundler
80
77
  private
81
78
 
82
79
  def validate_uri_scheme!(uri)
83
- return if uri.scheme =~ /\Ahttps?\z/
80
+ return if /\Ahttps?\z/.match?(uri.scheme)
84
81
  raise InvalidOption,
85
82
  "The request uri `#{uri}` has an invalid scheme (`#{uri.scheme}`). " \
86
83
  "Did you mean `http` or `https`?"
@@ -29,9 +29,7 @@ module Bundler
29
29
  " is a chance you are experiencing a man-in-the-middle attack, but" \
30
30
  " most likely your system doesn't have the CA certificates needed" \
31
31
  " for verification. For information about OpenSSL certificates, see" \
32
- " https://railsapps.github.io/openssl-certificate-verify-failed.html." \
33
- " To connect without using SSL, edit your Gemfile" \
34
- " sources and change 'https' to 'http'."
32
+ " https://railsapps.github.io/openssl-certificate-verify-failed.html."
35
33
  end
36
34
  end
37
35
 
@@ -39,9 +37,7 @@ module Bundler
39
37
  class SSLError < HTTPError
40
38
  def initialize(msg = nil)
41
39
  super msg || "Could not load OpenSSL.\n" \
42
- "You must recompile Ruby with OpenSSL support or change the sources in your " \
43
- "Gemfile from 'https' to 'http'. Instructions for compiling with OpenSSL " \
44
- "using RVM are available at rvm.io/packages/openssl."
40
+ "You must recompile Ruby with OpenSSL support."
45
41
  end
46
42
  end
47
43
 
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bundler
4
+ module ForcePlatform
5
+ private
6
+
7
+ # The `:force_ruby_platform` value used by dependencies for resolution, and
8
+ # by locked specifications for materialization is `false` by default, except
9
+ # for TruffleRuby. TruffleRuby generally needs to force the RUBY platform
10
+ # variant unless the name is explicitly allowlisted.
11
+
12
+ def default_force_ruby_platform
13
+ return false unless RUBY_ENGINE == "truffleruby"
14
+
15
+ !Gem::Platform::REUSE_AS_BINARY_ON_TRUFFLERUBY.include?(name)
16
+ end
17
+ end
18
+ end
@@ -36,9 +36,6 @@ module Bundler
36
36
  end
37
37
  when Thor::Error
38
38
  Bundler.ui.error error.message
39
- when LoadError
40
- raise error unless error.message =~ /cannot load such file -- openssl|openssl.so|libcrypto.so/
41
- Bundler.ui.error "\nCould not load OpenSSL. #{error.class}: #{error}\n#{error.backtrace.join("\n ")}"
42
39
  when Interrupt
43
40
  Bundler.ui.error "\nQuitting..."
44
41
  Bundler.ui.trace error
@@ -7,14 +7,13 @@ module Bundler
7
7
  # available dependency versions as found in its index, before returning it to
8
8
  # to the resolution engine to select the best version.
9
9
  class GemVersionPromoter
10
- DEBUG = ENV["BUNDLER_DEBUG_RESOLVER"] || ENV["DEBUG_RESOLVER"]
11
-
12
- attr_reader :level, :locked_specs, :unlock_gems
10
+ attr_reader :level
11
+ attr_accessor :pre
13
12
 
14
13
  # By default, strict is false, meaning every available version of a gem
15
14
  # is returned from sort_versions. The order gives preference to the
16
15
  # requested level (:patch, :minor, :major) but in complicated requirement
17
- # cases some gems will by necessity by promoted past the requested level,
16
+ # cases some gems will by necessity be promoted past the requested level,
18
17
  # or even reverted to older versions.
19
18
  #
20
19
  # If strict is set to true, the results from sort_versions will be
@@ -24,24 +23,13 @@ module Bundler
24
23
  # existing in the referenced source.
25
24
  attr_accessor :strict
26
25
 
27
- attr_accessor :prerelease_specified
28
-
29
- # Given a list of locked_specs and a list of gems to unlock creates a
30
- # GemVersionPromoter instance.
26
+ # Creates a GemVersionPromoter instance.
31
27
  #
32
- # @param locked_specs [SpecSet] All current locked specs. Unlike Definition
33
- # where this list is empty if all gems are being updated, this should
34
- # always be populated for all gems so this class can properly function.
35
- # @param unlock_gems [String] List of gem names being unlocked. If empty,
36
- # all gems will be considered unlocked.
37
28
  # @return [GemVersionPromoter]
38
- def initialize(locked_specs = SpecSet.new([]), unlock_gems = [])
29
+ def initialize
39
30
  @level = :major
40
31
  @strict = false
41
- @locked_specs = locked_specs
42
- @unlock_gems = unlock_gems
43
- @sort_versions = {}
44
- @prerelease_specified = {}
32
+ @pre = false
45
33
  end
46
34
 
47
35
  # @param value [Symbol] One of three Symbols: :major, :minor or :patch.
@@ -55,34 +43,19 @@ module Bundler
55
43
  @level = v
56
44
  end
57
45
 
58
- # Given a Dependency and an Array of Specifications of available versions for a
59
- # gem, this method will return the Array of Specifications sorted (and possibly
60
- # truncated if strict is true) in an order to give preference to the current
61
- # level (:major, :minor or :patch) when resolution is deciding what versions
62
- # best resolve all dependencies in the bundle.
63
- # @param dep [Dependency] The Dependency of the gem.
64
- # @param spec_groups [Specification] An array of Specifications for the same gem
65
- # named in the @dep param.
46
+ # Given a Resolver::Package and an Array of Specifications of available
47
+ # versions for a gem, this method will return the Array of Specifications
48
+ # sorted (and possibly truncated if strict is true) in an order to give
49
+ # preference to the current level (:major, :minor or :patch) when resolution
50
+ # is deciding what versions best resolve all dependencies in the bundle.
51
+ # @param package [Resolver::Package] The package being resolved.
52
+ # @param specs [Specification] An array of Specifications for the package.
66
53
  # @return [Specification] A new instance of the Specification Array sorted and
67
54
  # possibly filtered.
68
- def sort_versions(dep, spec_groups)
69
- @sort_versions[dep] ||= begin
70
- gem_name = dep.name
71
-
72
- # An Array per version returned, different entries for different platforms.
73
- # We only need the version here so it's ok to hard code this to the first instance.
74
- locked_spec = locked_specs[gem_name].first
55
+ def sort_versions(package, specs)
56
+ specs = filter_dep_specs(specs, package) if strict
75
57
 
76
- if strict
77
- filter_dep_specs(spec_groups, locked_spec)
78
- else
79
- sort_dep_specs(spec_groups, locked_spec)
80
- end
81
- end
82
- end
83
-
84
- def reset
85
- @sort_versions = {}
58
+ sort_dep_specs(specs, package)
86
59
  end
87
60
 
88
61
  # @return [bool] Convenience method for testing value of level variable.
@@ -95,79 +68,72 @@ module Bundler
95
68
  level == :minor
96
69
  end
97
70
 
71
+ # @return [bool] Convenience method for testing value of pre variable.
72
+ def pre?
73
+ pre == true
74
+ end
75
+
98
76
  private
99
77
 
100
- def filter_dep_specs(spec_groups, locked_spec)
101
- res = spec_groups.select do |spec_group|
102
- if locked_spec && !major?
103
- gsv = spec_group.version
104
- lsv = locked_spec.version
78
+ def filter_dep_specs(specs, package)
79
+ locked_version = package.locked_version
80
+ return specs if locked_version.nil? || major?
105
81
 
106
- must_match = minor? ? [0] : [0, 1]
82
+ specs.select do |spec|
83
+ gsv = spec.version
107
84
 
108
- matches = must_match.map {|idx| gsv.segments[idx] == lsv.segments[idx] }
109
- matches.uniq == [true] ? (gsv >= lsv) : false
110
- else
111
- true
112
- end
113
- end
85
+ must_match = minor? ? [0] : [0, 1]
114
86
 
115
- sort_dep_specs(res, locked_spec)
87
+ all_match = must_match.all? {|idx| gsv.segments[idx] == locked_version.segments[idx] }
88
+ all_match && gsv >= locked_version
89
+ end
116
90
  end
117
91
 
118
- def sort_dep_specs(spec_groups, locked_spec)
119
- @locked_version = locked_spec&.version
120
- @gem_name = locked_spec&.name
121
-
122
- result = spec_groups.sort do |a, b|
123
- @a_ver = a.version
124
- @b_ver = b.version
92
+ def sort_dep_specs(specs, package)
93
+ locked_version = package.locked_version
125
94
 
126
- unless @gem_name && @prerelease_specified[@gem_name]
127
- a_pre = @a_ver.prerelease?
128
- b_pre = @b_ver.prerelease?
95
+ result = specs.sort do |a, b|
96
+ unless locked_version && (package.prerelease_specified? || pre?)
97
+ a_pre = a.prerelease?
98
+ b_pre = b.prerelease?
129
99
 
130
100
  next -1 if a_pre && !b_pre
131
101
  next 1 if b_pre && !a_pre
132
102
  end
133
103
 
134
104
  if major?
135
- @a_ver <=> @b_ver
136
- elsif either_version_older_than_locked
137
- @a_ver <=> @b_ver
138
- elsif segments_do_not_match(:major)
139
- @b_ver <=> @a_ver
140
- elsif !minor? && segments_do_not_match(:minor)
141
- @b_ver <=> @a_ver
105
+ a <=> b
106
+ elsif either_version_older_than_locked?(a, b, locked_version)
107
+ a <=> b
108
+ elsif segments_do_not_match?(a, b, :major)
109
+ b <=> a
110
+ elsif !minor? && segments_do_not_match?(a, b, :minor)
111
+ b <=> a
142
112
  else
143
- @a_ver <=> @b_ver
113
+ a <=> b
144
114
  end
145
115
  end
146
- post_sort(result)
116
+ post_sort(result, package.unlock?, locked_version)
147
117
  end
148
118
 
149
- def either_version_older_than_locked
150
- @locked_version && (@a_ver < @locked_version || @b_ver < @locked_version)
119
+ def either_version_older_than_locked?(a, b, locked_version)
120
+ locked_version && (a.version < locked_version || b.version < locked_version)
151
121
  end
152
122
 
153
- def segments_do_not_match(level)
123
+ def segments_do_not_match?(a, b, level)
154
124
  index = [:major, :minor].index(level)
155
- @a_ver.segments[index] != @b_ver.segments[index]
156
- end
157
-
158
- def unlocking_gem?
159
- unlock_gems.empty? || (@gem_name && unlock_gems.include?(@gem_name))
125
+ a.segments[index] != b.segments[index]
160
126
  end
161
127
 
162
128
  # Specific version moves can't always reliably be done during sorting
163
129
  # as not all elements are compared against each other.
164
- def post_sort(result)
130
+ def post_sort(result, unlock, locked_version)
165
131
  # default :major behavior in Bundler does not do this
166
132
  return result if major?
167
- if unlocking_gem? || @locked_version.nil?
133
+ if unlock || locked_version.nil?
168
134
  result
169
135
  else
170
- move_version_to_end(result, @locked_version)
136
+ move_version_to_end(result, locked_version)
171
137
  end
172
138
  end
173
139
 
@@ -114,10 +114,10 @@ module Bundler
114
114
  @groups.each do |group|
115
115
  g.add_nodes(
116
116
  group, {
117
- :style => "filled",
117
+ :style => "filled",
118
118
  :fillcolor => "#B9B9D5",
119
- :shape => "box3d",
120
- :fontsize => 16,
119
+ :shape => "box3d",
120
+ :fontsize => 16,
121
121
  }.merge(@node_options[group])
122
122
  )
123
123
  end
@@ -70,8 +70,7 @@ module Bundler
70
70
  case query
71
71
  when Gem::Specification, RemoteSpecification, LazySpecification, EndpointSpecification then search_by_spec(query)
72
72
  when String then specs_by_name(query)
73
- when Gem::Dependency then search_by_dependency(query)
74
- when Array then search_by_name_and_version(*query)
73
+ when Array then specs_by_name_and_version(*query)
75
74
  else
76
75
  raise "You can't search for a #{query.inspect}."
77
76
  end
@@ -158,24 +157,12 @@ module Bundler
158
157
 
159
158
  private
160
159
 
161
- def specs_by_name(name)
162
- @specs[name].values
163
- end
164
-
165
- def search_by_dependency(dependency)
166
- @cache[dependency] ||= begin
167
- specs = specs_by_name(dependency.name)
168
- found = specs.select do |spec|
169
- next true if spec.source.is_a?(Source::Gemspec)
170
- dependency.matches_spec?(spec)
171
- end
172
-
173
- found
174
- end
160
+ def specs_by_name_and_version(name, version)
161
+ specs_by_name(name).select {|spec| spec.version == version }
175
162
  end
176
163
 
177
- def search_by_name_and_version(name, version)
178
- specs_by_name(name).select {|spec| spec.version == version }
164
+ def specs_by_name(name)
165
+ @specs[name].values
179
166
  end
180
167
 
181
168
  EMPTY_SEARCH = [].freeze
@@ -235,7 +235,7 @@ module Bundler
235
235
 
236
236
  gemfile.each_with_index do |line, index|
237
237
  next unless !line.nil? && line.strip.start_with?(block_name)
238
- if gemfile[index + 1] =~ /^\s*end\s*$/
238
+ if /^\s*end\s*$/.match?(gemfile[index + 1])
239
239
  gemfile[index] = nil
240
240
  gemfile[index + 1] = nil
241
241
  end
@@ -34,7 +34,8 @@ def gemfile(install = false, options = {}, &gemfile)
34
34
 
35
35
  opts = options.dup
36
36
  ui = opts.delete(:ui) { Bundler::UI::Shell.new }
37
- ui.level = "silent" if opts.delete(:quiet)
37
+ ui.level = "silent" if opts.delete(:quiet) || !install
38
+ Bundler.ui = ui
38
39
  raise ArgumentError, "Unknown options: #{opts.keys.join(", ")}" unless opts.empty?
39
40
 
40
41
  begin
@@ -52,7 +53,6 @@ def gemfile(install = false, options = {}, &gemfile)
52
53
  def definition.lock(*); end
53
54
  definition.validate_runtime!
54
55
 
55
- Bundler.ui = install ? ui : Bundler::UI::Silent.new
56
56
  if install || definition.missing_specs?
57
57
  Bundler.settings.temporary(:inline => true, :no_install => false) do
58
58
  installer = Bundler::Installer.install(Bundler.root, definition, :system => true)
@@ -53,10 +53,6 @@ module Bundler
53
53
  @dependencies ||= all_dependencies.reject {|dep| ignorable_dependency? dep }
54
54
  end
55
55
 
56
- def missing_lockfile_dependencies(all_spec_names)
57
- dependencies.reject {|dep| all_spec_names.include? dep.name }
58
- end
59
-
60
56
  # Represents all dependencies
61
57
  def all_dependencies
62
58
  @spec.dependencies
@@ -84,8 +80,6 @@ module Bundler
84
80
  end
85
81
 
86
82
  def call
87
- check_for_corrupt_lockfile
88
-
89
83
  if @rake
90
84
  do_install(@rake, 0)
91
85
  Gem::Specification.reset
@@ -128,31 +122,6 @@ module Bundler
128
122
  Bundler.ui.warn(warning.join("\n"))
129
123
  end
130
124
 
131
- def check_for_corrupt_lockfile
132
- missing_dependencies = @specs.map do |s|
133
- [
134
- s,
135
- s.missing_lockfile_dependencies(@specs.map(&:name)),
136
- ]
137
- end.reject {|a| a.last.empty? }
138
- return if missing_dependencies.empty?
139
-
140
- warning = []
141
- warning << "Your lockfile was created by an old Bundler that left some things out."
142
- if @size != 1
143
- warning << "Because of the missing DEPENDENCIES, we can only install gems one at a time, instead of installing #{@size} at a time."
144
- @size = 1
145
- end
146
- warning << "You can fix this by adding the missing gems to your Gemfile, running bundle install, and then removing the gems from your Gemfile."
147
- warning << "The missing gems are:"
148
-
149
- missing_dependencies.each do |spec, missing|
150
- warning << "* #{missing.map(&:name).join(", ")} depended upon by #{spec.name}"
151
- end
152
-
153
- Bundler.ui.warn(warning.join("\n"))
154
- end
155
-
156
125
  private
157
126
 
158
127
  def failed_specs
@@ -136,11 +136,7 @@ module Bundler
136
136
 
137
137
  mode = Gem.win_platform? ? "wb:UTF-8" : "w"
138
138
  require "erb"
139
- content = if RUBY_VERSION >= "2.6"
140
- ERB.new(template, :trim_mode => "-").result(binding)
141
- else
142
- ERB.new(template, nil, "-").result(binding)
143
- end
139
+ content = ERB.new(template, :trim_mode => "-").result(binding)
144
140
 
145
141
  File.write(binstub_path, content, :mode => mode, :perm => 0o777 & ~File.umask)
146
142
  if Gem.win_platform? || options[:all_platforms]
@@ -183,11 +179,7 @@ module Bundler
183
179
 
184
180
  mode = Gem.win_platform? ? "wb:UTF-8" : "w"
185
181
  require "erb"
186
- content = if RUBY_VERSION >= "2.6"
187
- ERB.new(template, :trim_mode => "-").result(binding)
188
- else
189
- ERB.new(template, nil, "-").result(binding)
190
- end
182
+ content = ERB.new(template, :trim_mode => "-").result(binding)
191
183
 
192
184
  File.write("#{bin_path}/#{executable}", content, :mode => mode, :perm => 0o755)
193
185
  if Gem.win_platform? || options[:all_platforms]
@@ -226,12 +218,10 @@ module Bundler
226
218
 
227
219
  requested_path_gems = @definition.requested_specs.select {|s| s.source.is_a?(Source::Path) }
228
220
  path_plugin_files = requested_path_gems.map do |spec|
229
- begin
230
- Bundler.rubygems.spec_matches_for_glob(spec, "rubygems_plugin#{Bundler.rubygems.suffix_pattern}")
231
- rescue TypeError
232
- error_message = "#{spec.name} #{spec.version} has an invalid gemspec"
233
- raise Gem::InvalidSpecificationException, error_message
234
- end
221
+ Bundler.rubygems.spec_matches_for_glob(spec, "rubygems_plugin#{Bundler.rubygems.suffix_pattern}")
222
+ rescue TypeError
223
+ error_message = "#{spec.name} #{spec.version} has an invalid gemspec"
224
+ raise Gem::InvalidSpecificationException, error_message
235
225
  end.flatten
236
226
  Bundler.rubygems.load_plugin_files(path_plugin_files)
237
227
  Bundler.rubygems.load_env_plugins
@@ -1,8 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "force_platform"
4
+
3
5
  module Bundler
4
6
  class LazySpecification
5
7
  include MatchPlatform
8
+ include ForcePlatform
6
9
 
7
10
  attr_reader :name, :version, :dependencies, :platform
8
11
  attr_accessor :source, :remote, :force_ruby_platform
@@ -13,6 +16,8 @@ module Bundler
13
16
  @dependencies = []
14
17
  @platform = platform || Gem::Platform::RUBY
15
18
  @source = source
19
+ @specification = nil
20
+ @force_ruby_platform = default_force_ruby_platform
16
21
  end
17
22
 
18
23
  def full_name
@@ -75,46 +80,37 @@ module Bundler
75
80
  def materialize_for_installation
76
81
  source.local!
77
82
 
78
- matching_specs = source.specs.search(use_exact_resolved_specifications? ? self : [name, version])
79
- return self if matching_specs.empty?
83
+ candidates = if source.is_a?(Source::Path) || !ruby_platform_materializes_to_ruby_platform?
84
+ target_platform = ruby_platform_materializes_to_ruby_platform? ? platform : local_platform
80
85
 
81
- candidates = if use_exact_resolved_specifications?
82
- matching_specs
86
+ GemHelpers.select_best_platform_match(source.specs.search([name, version]), target_platform)
83
87
  else
84
- target_platform = ruby_platform_materializes_to_ruby_platform? ? platform : local_platform
88
+ source.specs.search(self)
89
+ end
85
90
 
86
- installable_candidates = GemHelpers.select_best_platform_match(matching_specs, target_platform)
91
+ return self if candidates.empty?
87
92
 
88
- specification = __materialize__(installable_candidates, :fallback_to_non_installable => false)
89
- return specification unless specification.nil?
93
+ __materialize__(candidates)
94
+ end
90
95
 
91
- if target_platform != platform
92
- installable_candidates = GemHelpers.select_best_platform_match(matching_specs, platform)
96
+ def __materialize__(candidates)
97
+ @specification = begin
98
+ search = candidates.reverse.find do |spec|
99
+ spec.is_a?(StubSpecification) ||
100
+ (spec.matches_current_ruby? &&
101
+ spec.matches_current_rubygems?)
93
102
  end
94
-
95
- installable_candidates
103
+ if search.nil? && Bundler.frozen_bundle?
104
+ search = candidates.last
105
+ else
106
+ search.dependencies = dependencies if search && search.full_name == full_name && (search.is_a?(RemoteSpecification) || search.is_a?(EndpointSpecification))
107
+ end
108
+ search
96
109
  end
97
-
98
- __materialize__(candidates)
99
110
  end
100
111
 
101
- # If in frozen mode, we fallback to a non-installable candidate because by
102
- # doing this we avoid re-resolving and potentially end up changing the
103
- # lock file, which is not allowed. In that case, we will give a proper error
104
- # about the mismatch higher up the stack, right before trying to install the
105
- # bad gem.
106
- def __materialize__(candidates, fallback_to_non_installable: Bundler.frozen_bundle?)
107
- search = candidates.reverse.find do |spec|
108
- spec.is_a?(StubSpecification) ||
109
- (spec.matches_current_ruby? &&
110
- spec.matches_current_rubygems?)
111
- end
112
- if search.nil? && fallback_to_non_installable
113
- search = candidates.last
114
- else
115
- search.dependencies = dependencies if search && search.full_name == full_name && (search.is_a?(RemoteSpecification) || search.is_a?(EndpointSpecification))
116
- end
117
- search
112
+ def respond_to?(*args)
113
+ super || @specification ? @specification.respond_to?(*args) : nil
118
114
  end
119
115
 
120
116
  def to_s
@@ -136,8 +132,16 @@ module Bundler
136
132
 
137
133
  private
138
134
 
139
- def use_exact_resolved_specifications?
140
- @use_exact_resolved_specifications ||= !source.is_a?(Source::Path) && ruby_platform_materializes_to_ruby_platform?
135
+ def to_ary
136
+ nil
137
+ end
138
+
139
+ def method_missing(method, *args, &blk)
140
+ raise "LazySpecification has not been materialized yet (calling :#{method} #{args.inspect})" unless @specification
141
+
142
+ return super unless respond_to?(method)
143
+
144
+ @specification.send(method, *args, &blk)
141
145
  end
142
146
 
143
147
  #
@@ -63,7 +63,7 @@ module Bundler
63
63
  @state = nil
64
64
  @specs = {}
65
65
 
66
- if lockfile.match(/<<<<<<<|=======|>>>>>>>|\|\|\|\|\|\|\|/)
66
+ if lockfile.match?(/<<<<<<<|=======|>>>>>>>|\|\|\|\|\|\|\|/)
67
67
  raise LockfileError, "Your #{Bundler.default_lockfile.relative_path_from(SharedHelpers.pwd)} contains merge conflicts.\n" \
68
68
  "Run `git checkout HEAD -- #{Bundler.default_lockfile.relative_path_from(SharedHelpers.pwd)}` first to get a clean lock."
69
69
  end
@@ -80,7 +80,7 @@ module Bundler
80
80
  @state = :ruby
81
81
  elsif line == BUNDLED
82
82
  @state = :bundled_with
83
- elsif line =~ /^[^\s]/
83
+ elsif /^[^\s]/.match?(line)
84
84
  @state = nil
85
85
  elsif @state
86
86
  send("parse_#{@state}", line)
@@ -100,9 +100,9 @@ module Bundler
100
100
  private
101
101
 
102
102
  TYPES = {
103
- GIT => Bundler::Source::Git,
104
- GEM => Bundler::Source::Rubygems,
105
- PATH => Bundler::Source::Path,
103
+ GIT => Bundler::Source::Git,
104
+ GEM => Bundler::Source::Rubygems,
105
+ PATH => Bundler::Source::Path,
106
106
  PLUGIN => Bundler::Plugin,
107
107
  }.freeze
108
108
 
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-ADD" "1" "October 2022" "" ""
4
+ .TH "BUNDLE\-ADD" "1" "December 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-add\fR \- Add gem to the Gemfile and run bundle install
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-BINSTUBS" "1" "October 2022" "" ""
4
+ .TH "BUNDLE\-BINSTUBS" "1" "December 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-binstubs\fR \- Install the binstubs of the listed gems
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-CACHE" "1" "October 2022" "" ""
4
+ .TH "BUNDLE\-CACHE" "1" "December 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-cache\fR \- Package your needed \fB\.gem\fR files into your application
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-CHECK" "1" "October 2022" "" ""
4
+ .TH "BUNDLE\-CHECK" "1" "December 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-check\fR \- Verifies if dependencies are satisfied by installed gems
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-CLEAN" "1" "October 2022" "" ""
4
+ .TH "BUNDLE\-CLEAN" "1" "December 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-clean\fR \- Cleans up unused gems in your bundler directory
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "BUNDLE\-CONFIG" "1" "October 2022" "" ""
4
+ .TH "BUNDLE\-CONFIG" "1" "December 2022" "" ""
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBbundle\-config\fR \- Set bundler configuration options