rubygems-update 3.4.21 → 3.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (564) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +132 -2
  3. data/Manifest.txt +39 -221
  4. data/README.md +1 -3
  5. data/bundler/CHANGELOG.md +74 -0
  6. data/bundler/README.md +1 -2
  7. data/bundler/bundler.gemspec +4 -2
  8. data/bundler/exe/bundle +1 -10
  9. data/bundler/lib/bundler/build_metadata.rb +3 -3
  10. data/bundler/lib/bundler/capistrano.rb +1 -1
  11. data/bundler/lib/bundler/checksum.rb +245 -0
  12. data/bundler/lib/bundler/ci_detector.rb +75 -0
  13. data/bundler/lib/bundler/cli/add.rb +3 -3
  14. data/bundler/lib/bundler/cli/binstubs.rb +4 -4
  15. data/bundler/lib/bundler/cli/cache.rb +1 -1
  16. data/bundler/lib/bundler/cli/check.rb +1 -1
  17. data/bundler/lib/bundler/cli/common.rb +9 -1
  18. data/bundler/lib/bundler/cli/config.rb +8 -7
  19. data/bundler/lib/bundler/cli/console.rb +3 -2
  20. data/bundler/lib/bundler/cli/doctor.rb +2 -2
  21. data/bundler/lib/bundler/cli/exec.rb +1 -1
  22. data/bundler/lib/bundler/cli/gem.rb +31 -23
  23. data/bundler/lib/bundler/cli/info.rb +2 -13
  24. data/bundler/lib/bundler/cli/install.rb +5 -4
  25. data/bundler/lib/bundler/cli/issue.rb +1 -1
  26. data/bundler/lib/bundler/cli/lock.rb +4 -4
  27. data/bundler/lib/bundler/cli/open.rb +1 -1
  28. data/bundler/lib/bundler/cli/outdated.rb +6 -6
  29. data/bundler/lib/bundler/cli/plugin.rb +7 -14
  30. data/bundler/lib/bundler/cli/pristine.rb +38 -30
  31. data/bundler/lib/bundler/cli/show.rb +2 -2
  32. data/bundler/lib/bundler/cli/update.rb +5 -5
  33. data/bundler/lib/bundler/cli.rb +215 -263
  34. data/bundler/lib/bundler/compact_index_client/cache.rb +29 -9
  35. data/bundler/lib/bundler/compact_index_client/cache_file.rb +153 -0
  36. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +7 -3
  37. data/bundler/lib/bundler/compact_index_client/updater.rb +79 -81
  38. data/bundler/lib/bundler/compact_index_client.rb +14 -7
  39. data/bundler/lib/bundler/constants.rb +1 -1
  40. data/bundler/lib/bundler/current_ruby.rb +5 -21
  41. data/bundler/lib/bundler/definition.rb +43 -16
  42. data/bundler/lib/bundler/dependency.rb +16 -12
  43. data/bundler/lib/bundler/digest.rb +2 -2
  44. data/bundler/lib/bundler/dsl.rb +43 -25
  45. data/bundler/lib/bundler/endpoint_specification.rb +6 -2
  46. data/bundler/lib/bundler/env.rb +1 -3
  47. data/bundler/lib/bundler/errors.rb +58 -0
  48. data/bundler/lib/bundler/fetcher/base.rb +3 -1
  49. data/bundler/lib/bundler/fetcher/compact_index.rb +4 -4
  50. data/bundler/lib/bundler/fetcher/downloader.rb +13 -11
  51. data/bundler/lib/bundler/fetcher/gem_remote_fetcher.rb +16 -0
  52. data/bundler/lib/bundler/fetcher/index.rb +1 -1
  53. data/bundler/lib/bundler/fetcher.rb +28 -25
  54. data/bundler/lib/bundler/friendly_errors.rb +5 -5
  55. data/bundler/lib/bundler/gem_helper.rb +1 -1
  56. data/bundler/lib/bundler/gem_helpers.rb +12 -2
  57. data/bundler/lib/bundler/graph.rb +9 -9
  58. data/bundler/lib/bundler/index.rb +1 -2
  59. data/bundler/lib/bundler/injector.rb +1 -1
  60. data/bundler/lib/bundler/inline.rb +3 -3
  61. data/bundler/lib/bundler/installer/gem_installer.rb +10 -10
  62. data/bundler/lib/bundler/installer/parallel_installer.rb +16 -8
  63. data/bundler/lib/bundler/installer/standalone.rb +2 -3
  64. data/bundler/lib/bundler/installer.rb +9 -9
  65. data/bundler/lib/bundler/lazy_specification.rb +28 -17
  66. data/bundler/lib/bundler/lockfile_generator.rb +9 -0
  67. data/bundler/lib/bundler/lockfile_parser.rb +81 -10
  68. data/bundler/lib/bundler/man/bundle-add.1 +3 -26
  69. data/bundler/lib/bundler/man/bundle-binstubs.1 +4 -16
  70. data/bundler/lib/bundler/man/bundle-cache.1 +3 -24
  71. data/bundler/lib/bundler/man/bundle-check.1 +3 -12
  72. data/bundler/lib/bundler/man/bundle-clean.1 +3 -10
  73. data/bundler/lib/bundler/man/bundle-config.1 +20 -211
  74. data/bundler/lib/bundler/man/bundle-config.1.ronn +6 -0
  75. data/bundler/lib/bundler/man/bundle-console.1 +4 -22
  76. data/bundler/lib/bundler/man/bundle-doctor.1 +4 -18
  77. data/bundler/lib/bundler/man/bundle-exec.1 +12 -73
  78. data/bundler/lib/bundler/man/bundle-gem.1 +13 -49
  79. data/bundler/lib/bundler/man/bundle-help.1 +3 -7
  80. data/bundler/lib/bundler/man/bundle-info.1 +3 -9
  81. data/bundler/lib/bundler/man/bundle-init.1 +3 -12
  82. data/bundler/lib/bundler/man/bundle-inject.1 +6 -19
  83. data/bundler/lib/bundler/man/bundle-install.1 +27 -125
  84. data/bundler/lib/bundler/man/bundle-install.1.ronn +1 -0
  85. data/bundler/lib/bundler/man/bundle-list.1 +4 -19
  86. data/bundler/lib/bundler/man/bundle-lock.1 +5 -29
  87. data/bundler/lib/bundler/man/bundle-open.1 +7 -27
  88. data/bundler/lib/bundler/man/bundle-outdated.1 +3 -55
  89. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +1 -0
  90. data/bundler/lib/bundler/man/bundle-platform.1 +5 -27
  91. data/bundler/lib/bundler/man/bundle-plugin.1 +3 -29
  92. data/bundler/lib/bundler/man/bundle-pristine.1 +5 -16
  93. data/bundler/lib/bundler/man/bundle-remove.1 +4 -14
  94. data/bundler/lib/bundler/man/bundle-show.1 +3 -10
  95. data/bundler/lib/bundler/man/bundle-update.1 +18 -137
  96. data/bundler/lib/bundler/man/bundle-version.1 +3 -16
  97. data/bundler/lib/bundler/man/bundle-viz.1 +4 -16
  98. data/bundler/lib/bundler/man/bundle.1 +5 -44
  99. data/bundler/lib/bundler/man/gemfile.5 +24 -301
  100. data/bundler/lib/bundler/man/gemfile.5.ronn +4 -0
  101. data/bundler/lib/bundler/match_metadata.rb +4 -0
  102. data/bundler/lib/bundler/match_platform.rb +1 -1
  103. data/bundler/lib/bundler/plugin/api/source.rb +3 -2
  104. data/bundler/lib/bundler/plugin/index.rb +8 -0
  105. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  106. data/bundler/lib/bundler/plugin.rb +12 -5
  107. data/bundler/lib/bundler/resolver/base.rb +1 -1
  108. data/bundler/lib/bundler/resolver/incompatibility.rb +1 -1
  109. data/bundler/lib/bundler/resolver/spec_group.rb +1 -4
  110. data/bundler/lib/bundler/resolver.rb +16 -16
  111. data/bundler/lib/bundler/ruby_dsl.rb +20 -12
  112. data/bundler/lib/bundler/ruby_version.rb +1 -1
  113. data/bundler/lib/bundler/rubygems_ext.rb +27 -54
  114. data/bundler/lib/bundler/rubygems_gem_installer.rb +23 -58
  115. data/bundler/lib/bundler/rubygems_integration.rb +25 -94
  116. data/bundler/lib/bundler/runtime.rb +2 -2
  117. data/bundler/lib/bundler/self_manager.rb +23 -7
  118. data/bundler/lib/bundler/settings.rb +27 -7
  119. data/bundler/lib/bundler/setup.rb +4 -1
  120. data/bundler/lib/bundler/shared_helpers.rb +35 -13
  121. data/bundler/lib/bundler/source/git/git_proxy.rb +22 -14
  122. data/bundler/lib/bundler/source/git.rb +4 -3
  123. data/bundler/lib/bundler/source/metadata.rb +16 -16
  124. data/bundler/lib/bundler/source/path.rb +7 -6
  125. data/bundler/lib/bundler/source/rubygems.rb +21 -14
  126. data/bundler/lib/bundler/source.rb +2 -0
  127. data/bundler/lib/bundler/spec_set.rb +43 -12
  128. data/bundler/lib/bundler/stub_specification.rb +1 -0
  129. data/bundler/lib/bundler/templates/Executable.bundler +1 -1
  130. data/bundler/lib/bundler/templates/newgem/README.md.tt +3 -3
  131. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +2 -6
  132. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +1 -1
  133. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +1 -1
  134. data/bundler/lib/bundler/templates/newgem/standard.yml.tt +1 -1
  135. data/bundler/lib/bundler/ui/shell.rb +2 -2
  136. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  137. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +53 -6
  138. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +8 -20
  139. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +4 -3
  140. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +23 -11
  141. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +1 -1
  142. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +36 -36
  143. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +3 -2
  144. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +1 -1
  145. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb +1 -1
  146. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +8 -10
  147. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +15 -4
  148. data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +15 -15
  149. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +140 -14
  150. data/bundler/lib/bundler/vendor/thor/lib/thor/command.rb +13 -4
  151. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +4 -0
  152. data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +16 -25
  153. data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +1 -1
  154. data/bundler/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -1
  155. data/bundler/lib/bundler/vendor/thor/lib/thor/nested_context.rb +2 -2
  156. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +20 -1
  157. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +33 -17
  158. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +27 -8
  159. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +44 -6
  160. data/bundler/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +2 -2
  161. data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +40 -30
  162. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +26 -150
  163. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +4 -46
  164. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/column_printer.rb +29 -0
  165. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +3 -45
  166. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/lcs_diff.rb +49 -0
  167. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +134 -0
  168. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/terminal.rb +42 -0
  169. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/wrapped_printer.rb +38 -0
  170. data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
  171. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +8 -7
  172. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  173. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +155 -8
  174. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +3 -0
  175. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +256 -132
  176. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1 -0
  177. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +95 -31
  178. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  179. data/bundler/lib/bundler/vendored_net_http.rb +8 -0
  180. data/bundler/lib/bundler/vendored_persistent.rb +0 -4
  181. data/bundler/lib/bundler/vendored_timeout.rb +8 -0
  182. data/bundler/lib/bundler/version.rb +1 -1
  183. data/bundler/lib/bundler/vlad.rb +1 -1
  184. data/bundler/lib/bundler/yaml_serializer.rb +9 -4
  185. data/bundler/lib/bundler.rb +38 -35
  186. data/lib/rubygems/available_set.rb +4 -4
  187. data/lib/rubygems/basic_specification.rb +35 -37
  188. data/lib/rubygems/bundler_version_finder.rb +4 -4
  189. data/lib/rubygems/ci_detector.rb +75 -0
  190. data/lib/rubygems/command.rb +15 -17
  191. data/lib/rubygems/command_manager.rb +5 -4
  192. data/lib/rubygems/commands/build_command.rb +2 -2
  193. data/lib/rubygems/commands/cert_command.rb +2 -3
  194. data/lib/rubygems/commands/check_command.rb +4 -4
  195. data/lib/rubygems/commands/cleanup_command.rb +12 -14
  196. data/lib/rubygems/commands/contents_command.rb +5 -5
  197. data/lib/rubygems/commands/dependency_command.rb +4 -5
  198. data/lib/rubygems/commands/environment_command.rb +3 -5
  199. data/lib/rubygems/commands/exec_command.rb +1 -1
  200. data/lib/rubygems/commands/fetch_command.rb +2 -2
  201. data/lib/rubygems/commands/generate_index_command.rb +39 -74
  202. data/lib/rubygems/commands/help_command.rb +4 -4
  203. data/lib/rubygems/commands/info_command.rb +2 -2
  204. data/lib/rubygems/commands/install_command.rb +8 -16
  205. data/lib/rubygems/commands/list_command.rb +2 -2
  206. data/lib/rubygems/commands/lock_command.rb +1 -1
  207. data/lib/rubygems/commands/open_command.rb +1 -1
  208. data/lib/rubygems/commands/owner_command.rb +1 -1
  209. data/lib/rubygems/commands/pristine_command.rb +13 -15
  210. data/lib/rubygems/commands/push_command.rb +2 -2
  211. data/lib/rubygems/commands/query_command.rb +4 -5
  212. data/lib/rubygems/commands/rdoc_command.rb +2 -2
  213. data/lib/rubygems/commands/search_command.rb +2 -2
  214. data/lib/rubygems/commands/setup_command.rb +33 -36
  215. data/lib/rubygems/commands/sources_command.rb +12 -12
  216. data/lib/rubygems/commands/specification_command.rb +10 -10
  217. data/lib/rubygems/commands/stale_command.rb +1 -1
  218. data/lib/rubygems/commands/uninstall_command.rb +13 -14
  219. data/lib/rubygems/commands/unpack_command.rb +7 -7
  220. data/lib/rubygems/commands/update_command.rb +11 -13
  221. data/lib/rubygems/commands/which_command.rb +1 -1
  222. data/lib/rubygems/commands/yank_command.rb +1 -1
  223. data/lib/rubygems/compatibility.rb +5 -6
  224. data/lib/rubygems/config_file.rb +7 -7
  225. data/lib/rubygems/core_ext/kernel_gem.rb +0 -2
  226. data/lib/rubygems/core_ext/kernel_require.rb +20 -49
  227. data/lib/rubygems/core_ext/kernel_warn.rb +1 -1
  228. data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
  229. data/lib/rubygems/defaults.rb +15 -3
  230. data/lib/rubygems/dependency.rb +12 -14
  231. data/lib/rubygems/dependency_installer.rb +30 -31
  232. data/lib/rubygems/dependency_list.rb +1 -1
  233. data/lib/rubygems/deprecate.rb +16 -15
  234. data/lib/rubygems/doctor.rb +6 -6
  235. data/lib/rubygems/errors.rb +2 -6
  236. data/lib/rubygems/exceptions.rb +2 -1
  237. data/lib/rubygems/ext/builder.rb +15 -10
  238. data/lib/rubygems/ext/cargo_builder.rb +5 -5
  239. data/lib/rubygems/ext/ext_conf_builder.rb +2 -4
  240. data/lib/rubygems/ext/rake_builder.rb +1 -1
  241. data/lib/rubygems/gem_runner.rb +4 -4
  242. data/lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb +3 -3
  243. data/lib/rubygems/gemcutter_utilities/webauthn_poller.rb +3 -3
  244. data/lib/rubygems/gemcutter_utilities.rb +18 -19
  245. data/lib/rubygems/install_update_options.rb +18 -19
  246. data/lib/rubygems/installer.rb +66 -45
  247. data/lib/rubygems/installer_uninstaller_utils.rb +0 -2
  248. data/lib/rubygems/local_remote_options.rb +8 -11
  249. data/lib/rubygems/name_tuple.rb +7 -9
  250. data/lib/rubygems/net/http.rb +3 -0
  251. data/lib/rubygems/net-http/LICENSE.txt +22 -0
  252. data/lib/rubygems/net-http/lib/net/http/backward.rb +40 -0
  253. data/lib/rubygems/net-http/lib/net/http/exceptions.rb +34 -0
  254. data/lib/rubygems/net-http/lib/net/http/generic_request.rb +414 -0
  255. data/lib/rubygems/net-http/lib/net/http/header.rb +981 -0
  256. data/lib/rubygems/net-http/lib/net/http/proxy_delta.rb +17 -0
  257. data/lib/rubygems/net-http/lib/net/http/request.rb +88 -0
  258. data/lib/rubygems/net-http/lib/net/http/requests.rb +425 -0
  259. data/lib/rubygems/net-http/lib/net/http/response.rb +738 -0
  260. data/lib/rubygems/net-http/lib/net/http/responses.rb +1174 -0
  261. data/lib/rubygems/net-http/lib/net/http/status.rb +84 -0
  262. data/lib/rubygems/net-http/lib/net/http.rb +2496 -0
  263. data/lib/rubygems/net-http/lib/net/https.rb +23 -0
  264. data/lib/rubygems/net-protocol/LICENSE.txt +22 -0
  265. data/lib/rubygems/net-protocol/lib/net/protocol.rb +544 -0
  266. data/lib/rubygems/optparse/lib/optparse.rb +39 -17
  267. data/lib/rubygems/package/digest_io.rb +1 -1
  268. data/lib/rubygems/package/old.rb +2 -2
  269. data/lib/rubygems/package/tar_header.rb +45 -39
  270. data/lib/rubygems/package/tar_reader/entry.rb +5 -4
  271. data/lib/rubygems/package/tar_reader.rb +14 -5
  272. data/lib/rubygems/package/tar_writer.rb +20 -18
  273. data/lib/rubygems/package.rb +28 -27
  274. data/lib/rubygems/package_task.rb +2 -2
  275. data/lib/rubygems/path_support.rb +10 -11
  276. data/lib/rubygems/platform.rb +65 -48
  277. data/lib/rubygems/query_utils.rb +7 -9
  278. data/lib/rubygems/remote_fetcher.rb +17 -17
  279. data/lib/rubygems/request/connection_pools.rb +3 -3
  280. data/lib/rubygems/request.rb +20 -17
  281. data/lib/rubygems/request_set/gem_dependency_api.rb +120 -123
  282. data/lib/rubygems/request_set/lockfile/parser.rb +9 -9
  283. data/lib/rubygems/request_set/lockfile/tokenizer.rb +20 -12
  284. data/lib/rubygems/request_set/lockfile.rb +6 -11
  285. data/lib/rubygems/request_set.rb +5 -5
  286. data/lib/rubygems/requirement.rb +7 -7
  287. data/lib/rubygems/resolv/LICENSE.txt +22 -0
  288. data/lib/rubygems/resolv/lib/resolv.rb +3387 -0
  289. data/lib/rubygems/resolver/activation_request.rb +1 -3
  290. data/lib/rubygems/resolver/api_set/gem_parser.rb +7 -3
  291. data/lib/rubygems/resolver/best_set.rb +1 -1
  292. data/lib/rubygems/resolver/composed_set.rb +1 -1
  293. data/lib/rubygems/resolver/conflict.rb +4 -12
  294. data/lib/rubygems/resolver/index_set.rb +4 -4
  295. data/lib/rubygems/resolver/index_specification.rb +2 -2
  296. data/lib/rubygems/resolver/installer_set.rb +5 -6
  297. data/lib/rubygems/resolver/lock_set.rb +1 -1
  298. data/lib/rubygems/resolver.rb +6 -13
  299. data/lib/rubygems/s3_uri_signer.rb +6 -6
  300. data/lib/rubygems/safe_marshal/elements.rb +138 -0
  301. data/lib/rubygems/safe_marshal/reader.rb +306 -0
  302. data/lib/rubygems/safe_marshal/visitors/stream_printer.rb +31 -0
  303. data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +385 -0
  304. data/lib/rubygems/safe_marshal/visitors/visitor.rb +74 -0
  305. data/lib/rubygems/safe_marshal.rb +74 -0
  306. data/lib/rubygems/safe_yaml.rb +5 -28
  307. data/lib/rubygems/security/policies.rb +36 -38
  308. data/lib/rubygems/security/policy.rb +7 -11
  309. data/lib/rubygems/security/signer.rb +1 -1
  310. data/lib/rubygems/security/trust_dir.rb +4 -4
  311. data/lib/rubygems/security.rb +8 -22
  312. data/lib/rubygems/source/git.rb +1 -3
  313. data/lib/rubygems/source/installed.rb +0 -2
  314. data/lib/rubygems/source/local.rb +7 -9
  315. data/lib/rubygems/source/lock.rb +1 -3
  316. data/lib/rubygems/source/specific_file.rb +0 -1
  317. data/lib/rubygems/source/vendor.rb +0 -2
  318. data/lib/rubygems/source.rb +12 -12
  319. data/lib/rubygems/source_list.rb +5 -5
  320. data/lib/rubygems/spec_fetcher.rb +31 -31
  321. data/lib/rubygems/specification.rb +145 -150
  322. data/lib/rubygems/specification_policy.rb +61 -31
  323. data/lib/rubygems/stub_specification.rb +4 -5
  324. data/lib/rubygems/text.rb +1 -2
  325. data/lib/rubygems/timeout/LICENSE.txt +22 -0
  326. data/lib/rubygems/timeout/lib/timeout.rb +199 -0
  327. data/lib/rubygems/timeout.rb +3 -0
  328. data/lib/rubygems/tsort/lib/tsort.rb +3 -0
  329. data/lib/rubygems/uninstaller.rb +9 -11
  330. data/lib/rubygems/update_suggestion.rb +5 -18
  331. data/lib/rubygems/uri_formatter.rb +1 -1
  332. data/lib/rubygems/user_interaction.rb +17 -23
  333. data/lib/rubygems/util/licenses.rb +113 -35
  334. data/lib/rubygems/util/list.rb +3 -1
  335. data/lib/rubygems/util.rb +2 -4
  336. data/lib/rubygems/validator.rb +6 -4
  337. data/lib/rubygems/version.rb +35 -29
  338. data/lib/rubygems/version_option.rb +2 -5
  339. data/lib/rubygems/yaml_serializer.rb +9 -4
  340. data/lib/rubygems.rb +42 -42
  341. data/rubygems-update.gemspec +4 -4
  342. data/setup.rb +2 -2
  343. metadata +43 -225
  344. data/lib/rubygems/indexer.rb +0 -428
  345. data/lib/rubygems/mock_gem_ui.rb +0 -86
  346. data/test/rubygems/alternate_cert.pem +0 -19
  347. data/test/rubygems/alternate_cert_32.pem +0 -19
  348. data/test/rubygems/alternate_key.pem +0 -27
  349. data/test/rubygems/bad_rake.rb +0 -3
  350. data/test/rubygems/bundler_test_gem.rb +0 -424
  351. data/test/rubygems/ca_cert.pem +0 -77
  352. data/test/rubygems/child_cert.pem +0 -19
  353. data/test/rubygems/child_cert_32.pem +0 -19
  354. data/test/rubygems/child_key.pem +0 -27
  355. data/test/rubygems/client.pem +0 -107
  356. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  357. data/test/rubygems/data/gem-private_key.pem +0 -27
  358. data/test/rubygems/data/gem-public_cert.pem +0 -20
  359. data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
  360. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  361. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  362. data/test/rubygems/encrypted_private_key.pem +0 -30
  363. data/test/rubygems/expired_cert.pem +0 -19
  364. data/test/rubygems/fake_certlib/openssl.rb +0 -9
  365. data/test/rubygems/foo/discover.rb +0 -1
  366. data/test/rubygems/future_cert.pem +0 -19
  367. data/test/rubygems/future_cert_32.pem +0 -19
  368. data/test/rubygems/good_rake.rb +0 -3
  369. data/test/rubygems/grandchild_cert.pem +0 -19
  370. data/test/rubygems/grandchild_cert_32.pem +0 -19
  371. data/test/rubygems/grandchild_key.pem +0 -27
  372. data/test/rubygems/helper.rb +0 -1649
  373. data/test/rubygems/installer_test_case.rb +0 -248
  374. data/test/rubygems/invalid_client.pem +0 -49
  375. data/test/rubygems/invalid_issuer_cert.pem +0 -20
  376. data/test/rubygems/invalid_issuer_cert_32.pem +0 -20
  377. data/test/rubygems/invalid_key.pem +0 -27
  378. data/test/rubygems/invalid_signer_cert.pem +0 -19
  379. data/test/rubygems/invalid_signer_cert_32.pem +0 -19
  380. data/test/rubygems/invalidchild_cert.pem +0 -19
  381. data/test/rubygems/invalidchild_cert_32.pem +0 -19
  382. data/test/rubygems/invalidchild_key.pem +0 -27
  383. data/test/rubygems/multifactor_auth_utilities.rb +0 -111
  384. data/test/rubygems/package/tar_test_case.rb +0 -175
  385. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  386. data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
  387. data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
  388. data/test/rubygems/plugin/exception/rubygems_plugin.rb +0 -4
  389. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -5
  390. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +0 -4
  391. data/test/rubygems/private3072_key.pem +0 -40
  392. data/test/rubygems/private_ec_key.pem +0 -9
  393. data/test/rubygems/private_key.pem +0 -27
  394. data/test/rubygems/public3072_cert.pem +0 -25
  395. data/test/rubygems/public_cert.pem +0 -20
  396. data/test/rubygems/public_cert_32.pem +0 -19
  397. data/test/rubygems/public_key.pem +0 -9
  398. data/test/rubygems/rubygems/commands/crash_command.rb +0 -5
  399. data/test/rubygems/rubygems_plugin.rb +0 -24
  400. data/test/rubygems/sff/discover.rb +0 -1
  401. data/test/rubygems/simple_gem.rb +0 -68
  402. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -9
  403. data/test/rubygems/specifications/foo-0.0.1-x86-mswin32.gemspec +0 -0
  404. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +0 -14
  405. data/test/rubygems/ssl_cert.pem +0 -80
  406. data/test/rubygems/ssl_key.pem +0 -27
  407. data/test/rubygems/test_bundled_ca.rb +0 -61
  408. data/test/rubygems/test_config.rb +0 -28
  409. data/test/rubygems/test_deprecate.rb +0 -158
  410. data/test/rubygems/test_exit.rb +0 -17
  411. data/test/rubygems/test_gem.rb +0 -1799
  412. data/test/rubygems/test_gem_available_set.rb +0 -130
  413. data/test/rubygems/test_gem_bundler_version_finder.rb +0 -127
  414. data/test/rubygems/test_gem_command.rb +0 -403
  415. data/test/rubygems/test_gem_command_manager.rb +0 -400
  416. data/test/rubygems/test_gem_commands_build_command.rb +0 -739
  417. data/test/rubygems/test_gem_commands_cert_command.rb +0 -866
  418. data/test/rubygems/test_gem_commands_check_command.rb +0 -68
  419. data/test/rubygems/test_gem_commands_cleanup_command.rb +0 -292
  420. data/test/rubygems/test_gem_commands_contents_command.rb +0 -271
  421. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -228
  422. data/test/rubygems/test_gem_commands_environment_command.rb +0 -169
  423. data/test/rubygems/test_gem_commands_exec_command.rb +0 -857
  424. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -258
  425. data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -81
  426. data/test/rubygems/test_gem_commands_help_command.rb +0 -94
  427. data/test/rubygems/test_gem_commands_info_command.rb +0 -70
  428. data/test/rubygems/test_gem_commands_install_command.rb +0 -1573
  429. data/test/rubygems/test_gem_commands_list_command.rb +0 -33
  430. data/test/rubygems/test_gem_commands_lock_command.rb +0 -67
  431. data/test/rubygems/test_gem_commands_mirror.rb +0 -20
  432. data/test/rubygems/test_gem_commands_open_command.rb +0 -101
  433. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -50
  434. data/test/rubygems/test_gem_commands_owner_command.rb +0 -503
  435. data/test/rubygems/test_gem_commands_pristine_command.rb +0 -708
  436. data/test/rubygems/test_gem_commands_push_command.rb +0 -603
  437. data/test/rubygems/test_gem_commands_query_command.rb +0 -858
  438. data/test/rubygems/test_gem_commands_search_command.rb +0 -16
  439. data/test/rubygems/test_gem_commands_server_command.rb +0 -20
  440. data/test/rubygems/test_gem_commands_setup_command.rb +0 -474
  441. data/test/rubygems/test_gem_commands_signin_command.rb +0 -259
  442. data/test/rubygems/test_gem_commands_signout_command.rb +0 -30
  443. data/test/rubygems/test_gem_commands_sources_command.rb +0 -534
  444. data/test/rubygems/test_gem_commands_specification_command.rb +0 -277
  445. data/test/rubygems/test_gem_commands_stale_command.rb +0 -43
  446. data/test/rubygems/test_gem_commands_uninstall_command.rb +0 -522
  447. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -224
  448. data/test/rubygems/test_gem_commands_update_command.rb +0 -836
  449. data/test/rubygems/test_gem_commands_which_command.rb +0 -85
  450. data/test/rubygems/test_gem_commands_yank_command.rb +0 -299
  451. data/test/rubygems/test_gem_config_file.rb +0 -551
  452. data/test/rubygems/test_gem_dependency.rb +0 -398
  453. data/test/rubygems/test_gem_dependency_installer.rb +0 -1190
  454. data/test/rubygems/test_gem_dependency_list.rb +0 -265
  455. data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -27
  456. data/test/rubygems/test_gem_doctor.rb +0 -195
  457. data/test/rubygems/test_gem_ext_builder.rb +0 -337
  458. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +0 -1
  459. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +0 -10
  460. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +0 -249
  461. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +0 -10
  462. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +0 -27
  463. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +0 -3
  464. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +0 -1
  465. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +0 -249
  466. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +0 -10
  467. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +0 -10
  468. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +0 -51
  469. data/test/rubygems/test_gem_ext_cargo_builder.rb +0 -167
  470. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +0 -34
  471. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +0 -60
  472. data/test/rubygems/test_gem_ext_cmake_builder.rb +0 -84
  473. data/test/rubygems/test_gem_ext_configure_builder.rb +0 -80
  474. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -229
  475. data/test/rubygems/test_gem_ext_rake_builder.rb +0 -113
  476. data/test/rubygems/test_gem_gem_runner.rb +0 -119
  477. data/test/rubygems/test_gem_gemcutter_utilities.rb +0 -361
  478. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -60
  479. data/test/rubygems/test_gem_indexer.rb +0 -381
  480. data/test/rubygems/test_gem_install_update_options.rb +0 -208
  481. data/test/rubygems/test_gem_installer.rb +0 -2512
  482. data/test/rubygems/test_gem_local_remote_options.rb +0 -133
  483. data/test/rubygems/test_gem_name_tuple.rb +0 -43
  484. data/test/rubygems/test_gem_package.rb +0 -1306
  485. data/test/rubygems/test_gem_package_old.rb +0 -91
  486. data/test/rubygems/test_gem_package_tar_header.rb +0 -226
  487. data/test/rubygems/test_gem_package_tar_reader.rb +0 -135
  488. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -350
  489. data/test/rubygems/test_gem_package_tar_writer.rb +0 -331
  490. data/test/rubygems/test_gem_package_task.rb +0 -118
  491. data/test/rubygems/test_gem_path_support.rb +0 -139
  492. data/test/rubygems/test_gem_platform.rb +0 -497
  493. data/test/rubygems/test_gem_rdoc.rb +0 -137
  494. data/test/rubygems/test_gem_remote_fetcher.rb +0 -1227
  495. data/test/rubygems/test_gem_request.rb +0 -547
  496. data/test/rubygems/test_gem_request_connection_pools.rb +0 -152
  497. data/test/rubygems/test_gem_request_set.rb +0 -672
  498. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +0 -853
  499. data/test/rubygems/test_gem_request_set_lockfile.rb +0 -469
  500. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +0 -544
  501. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +0 -307
  502. data/test/rubygems/test_gem_requirement.rb +0 -505
  503. data/test/rubygems/test_gem_resolver.rb +0 -859
  504. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -43
  505. data/test/rubygems/test_gem_resolver_api_set.rb +0 -210
  506. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -167
  507. data/test/rubygems/test_gem_resolver_best_set.rb +0 -159
  508. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -44
  509. data/test/rubygems/test_gem_resolver_conflict.rb +0 -82
  510. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -83
  511. data/test/rubygems/test_gem_resolver_git_set.rb +0 -188
  512. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -114
  513. data/test/rubygems/test_gem_resolver_index_set.rb +0 -88
  514. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -93
  515. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -47
  516. data/test/rubygems/test_gem_resolver_installer_set.rb +0 -320
  517. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -44
  518. data/test/rubygems/test_gem_resolver_lock_set.rb +0 -62
  519. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -98
  520. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -19
  521. data/test/rubygems/test_gem_resolver_specification.rb +0 -63
  522. data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -82
  523. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -82
  524. data/test/rubygems/test_gem_security.rb +0 -341
  525. data/test/rubygems/test_gem_security_policy.rb +0 -535
  526. data/test/rubygems/test_gem_security_signer.rb +0 -218
  527. data/test/rubygems/test_gem_security_trust_dir.rb +0 -99
  528. data/test/rubygems/test_gem_silent_ui.rb +0 -123
  529. data/test/rubygems/test_gem_source.rb +0 -254
  530. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -37
  531. data/test/rubygems/test_gem_source_git.rb +0 -310
  532. data/test/rubygems/test_gem_source_installed.rb +0 -35
  533. data/test/rubygems/test_gem_source_list.rb +0 -119
  534. data/test/rubygems/test_gem_source_local.rb +0 -107
  535. data/test/rubygems/test_gem_source_lock.rb +0 -113
  536. data/test/rubygems/test_gem_source_specific_file.rb +0 -76
  537. data/test/rubygems/test_gem_source_subpath_problem.rb +0 -50
  538. data/test/rubygems/test_gem_source_vendor.rb +0 -30
  539. data/test/rubygems/test_gem_spec_fetcher.rb +0 -338
  540. data/test/rubygems/test_gem_specification.rb +0 -3856
  541. data/test/rubygems/test_gem_stream_ui.rb +0 -255
  542. data/test/rubygems/test_gem_stub_specification.rb +0 -278
  543. data/test/rubygems/test_gem_text.rb +0 -103
  544. data/test/rubygems/test_gem_uninstaller.rb +0 -675
  545. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -31
  546. data/test/rubygems/test_gem_update_suggestion.rb +0 -209
  547. data/test/rubygems/test_gem_uri.rb +0 -41
  548. data/test/rubygems/test_gem_uri_formatter.rb +0 -27
  549. data/test/rubygems/test_gem_util.rb +0 -91
  550. data/test/rubygems/test_gem_validator.rb +0 -42
  551. data/test/rubygems/test_gem_version.rb +0 -305
  552. data/test/rubygems/test_gem_version_option.rb +0 -165
  553. data/test/rubygems/test_kernel.rb +0 -124
  554. data/test/rubygems/test_project_sanity.rb +0 -49
  555. data/test/rubygems/test_remote_fetch_error.rb +0 -20
  556. data/test/rubygems/test_require.rb +0 -732
  557. data/test/rubygems/test_rubygems.rb +0 -76
  558. data/test/rubygems/test_webauthn_listener.rb +0 -143
  559. data/test/rubygems/test_webauthn_listener_response.rb +0 -93
  560. data/test/rubygems/test_webauthn_poller.rb +0 -124
  561. data/test/rubygems/utilities.rb +0 -436
  562. data/test/rubygems/wrong_key_cert.pem +0 -19
  563. data/test/rubygems/wrong_key_cert_32.pem +0 -19
  564. data/test/test_changelog_generator.rb +0 -17
@@ -80,10 +80,10 @@ module Bundler
80
80
  unprinted_warnings.each {|w| Bundler.ui.warn(w) }
81
81
  end
82
82
 
83
- check_unknown_options!(:except => [:config, :exec])
83
+ check_unknown_options!(except: [:config, :exec])
84
84
  stop_on_unknown_option! :exec
85
85
 
86
- desc "cli_help", "Prints a summary of bundler commands", :hide => true
86
+ desc "cli_help", "Prints a summary of bundler commands", hide: true
87
87
  def cli_help
88
88
  version
89
89
  Bundler.ui.info "\n"
@@ -99,19 +99,19 @@ module Bundler
99
99
  shell.say "Bundler commands:\n\n"
100
100
 
101
101
  shell.say " Primary commands:\n"
102
- shell.print_table(primary_commands, :indent => 4, :truncate => true)
102
+ shell.print_table(primary_commands, indent: 4, truncate: true)
103
103
  shell.say
104
104
  shell.say " Utilities:\n"
105
- shell.print_table(utilities, :indent => 4, :truncate => true)
105
+ shell.print_table(utilities, indent: 4, truncate: true)
106
106
  shell.say
107
107
  self.class.send(:class_options_help, shell)
108
108
  end
109
109
  default_task(Bundler.feature_flag.default_cli_command)
110
110
 
111
- class_option "no-color", :type => :boolean, :desc => "Disable colorization in output"
112
- class_option "retry", :type => :numeric, :aliases => "-r", :banner => "NUM",
113
- :desc => "Specify the number of times you wish to attempt network commands"
114
- class_option "verbose", :type => :boolean, :desc => "Enable verbose output mode", :aliases => "-V"
111
+ class_option "no-color", type: :boolean, desc: "Disable colorization in output"
112
+ class_option "retry", type: :numeric, aliases: "-r", banner: "NUM",
113
+ desc: "Specify the number of times you wish to attempt network commands"
114
+ class_option "verbose", type: :boolean, desc: "Enable verbose output mode", aliases: "-V"
115
115
 
116
116
  def help(cli = nil)
117
117
  case cli
@@ -127,8 +127,8 @@ module Bundler
127
127
 
128
128
  if man_pages.include?(command)
129
129
  man_page = man_pages[command]
130
- if Bundler.which("man") && man_path !~ %r{^file:/.+!/META-INF/jruby.home/.+}
131
- Kernel.exec "man #{man_page}"
130
+ if Bundler.which("man") && !man_path.match?(%r{^file:/.+!/META-INF/jruby.home/.+})
131
+ Kernel.exec("man", man_page)
132
132
  else
133
133
  puts File.read("#{man_path}/#{File.basename(man_page)}.ronn")
134
134
  end
@@ -155,8 +155,8 @@ module Bundler
155
155
  Gemfile to a gem with a gemspec, the --gemspec option will automatically add each
156
156
  dependency listed in the gemspec file to the newly created Gemfile.
157
157
  D
158
- method_option "gemspec", :type => :string, :banner => "Use the specified .gemspec to create the Gemfile"
159
- method_option "gemfile", :type => :string, :banner => "Use the specified name for the gemfile instead of 'Gemfile'"
158
+ method_option "gemspec", type: :string, banner: "Use the specified .gemspec to create the Gemfile"
159
+ method_option "gemfile", type: :string, banner: "Use the specified name for the gemfile instead of 'Gemfile'"
160
160
  def init
161
161
  require_relative "cli/init"
162
162
  Init.new(options.dup).run
@@ -168,12 +168,9 @@ module Bundler
168
168
  all gems are found, Bundler prints a success message and exits with a status of 0.
169
169
  If not, the first missing gem is listed and Bundler exits status 1.
170
170
  D
171
- method_option "dry-run", :type => :boolean, :default => false, :banner =>
172
- "Lock the Gemfile"
173
- method_option "gemfile", :type => :string, :banner =>
174
- "Use the specified gemfile instead of Gemfile"
175
- method_option "path", :type => :string, :banner =>
176
- "Specify a different path than the system default ($BUNDLE_PATH or $GEM_HOME).#{" Bundler will remember this value for future installs on this machine" unless Bundler.feature_flag.forget_cli_options?}"
171
+ method_option "dry-run", type: :boolean, default: false, banner: "Lock the Gemfile"
172
+ method_option "gemfile", type: :string, banner: "Use the specified gemfile instead of Gemfile"
173
+ method_option "path", type: :string, banner: "Specify a different path than the system default ($BUNDLE_PATH or $GEM_HOME).#{" Bundler will remember this value for future installs on this machine" unless Bundler.feature_flag.forget_cli_options?}"
177
174
  def check
178
175
  remembered_flag_deprecation("path")
179
176
 
@@ -187,10 +184,14 @@ module Bundler
187
184
  long_desc <<-D
188
185
  Removes the given gems from the Gemfile while ensuring that the resulting Gemfile is still valid. If the gem is not found, Bundler prints a error message and if gem could not be removed due to any reason Bundler will display a warning.
189
186
  D
190
- method_option "install", :type => :boolean, :banner =>
191
- "Runs 'bundle install' after removing the gems from the Gemfile"
187
+ method_option "install", type: :boolean, banner: "Runs 'bundle install' after removing the gems from the Gemfile"
192
188
  def remove(*gems)
193
- SharedHelpers.major_deprecation(2, "The `--install` flag has been deprecated. `bundle install` is triggered by default.") if ARGV.include?("--install")
189
+ if ARGV.include?("--install")
190
+ message = "The `--install` flag has been deprecated. `bundle install` is triggered by default."
191
+ removed_message = "The `--install` flag has been removed. `bundle install` is triggered by default."
192
+ SharedHelpers.major_deprecation(2, message, removed_message: removed_message)
193
+ end
194
+
194
195
  require_relative "cli/remove"
195
196
  Remove.new(gems, options).run
196
197
  end
@@ -206,58 +207,40 @@ module Bundler
206
207
 
207
208
  If the bundle has already been installed, bundler will tell you so and then exit.
208
209
  D
209
- method_option "binstubs", :type => :string, :lazy_default => "bin", :banner =>
210
- "Generate bin stubs for bundled gems to ./bin"
211
- method_option "clean", :type => :boolean, :banner =>
212
- "Run bundle clean automatically after install"
213
- method_option "deployment", :type => :boolean, :banner =>
214
- "Install using defaults tuned for deployment environments"
215
- method_option "frozen", :type => :boolean, :banner =>
216
- "Do not allow the Gemfile.lock to be updated after this install"
217
- method_option "full-index", :type => :boolean, :banner =>
218
- "Fall back to using the single-file index of all gems"
219
- method_option "gemfile", :type => :string, :banner =>
220
- "Use the specified gemfile instead of Gemfile"
221
- method_option "jobs", :aliases => "-j", :type => :numeric, :banner =>
222
- "Specify the number of jobs to run in parallel"
223
- method_option "local", :type => :boolean, :banner =>
224
- "Do not attempt to fetch gems remotely and use the gem cache instead"
225
- method_option "prefer-local", :type => :boolean, :banner =>
226
- "Only attempt to fetch gems remotely if not present locally, even if newer versions are available remotely"
227
- method_option "no-cache", :type => :boolean, :banner =>
228
- "Don't update the existing gem cache."
229
- method_option "redownload", :type => :boolean, :aliases => "--force", :banner =>
230
- "Force downloading every gem."
231
- method_option "no-prune", :type => :boolean, :banner =>
232
- "Don't remove stale gems from the cache."
233
- method_option "path", :type => :string, :banner =>
234
- "Specify a different path than the system default ($BUNDLE_PATH or $GEM_HOME).#{" Bundler will remember this value for future installs on this machine" unless Bundler.feature_flag.forget_cli_options?}"
235
- method_option "quiet", :type => :boolean, :banner =>
236
- "Only output warnings and errors."
237
- method_option "shebang", :type => :string, :banner =>
238
- "Specify a different shebang executable name than the default (usually 'ruby')"
239
- method_option "standalone", :type => :array, :lazy_default => [], :banner =>
240
- "Make a bundle that can work without the Bundler runtime"
241
- method_option "system", :type => :boolean, :banner =>
242
- "Install to the system location ($BUNDLE_PATH or $GEM_HOME) even if the bundle was previously installed somewhere else for this application"
243
- method_option "trust-policy", :alias => "P", :type => :string, :banner =>
244
- "Gem trust policy (like gem install -P). Must be one of " +
245
- Bundler.rubygems.security_policy_keys.join("|")
246
- method_option "without", :type => :array, :banner =>
247
- "Exclude gems that are part of the specified named group."
248
- method_option "with", :type => :array, :banner =>
249
- "Include gems that are part of the specified named group."
210
+ method_option "binstubs", type: :string, lazy_default: "bin", banner: "Generate bin stubs for bundled gems to ./bin"
211
+ method_option "clean", type: :boolean, banner: "Run bundle clean automatically after install"
212
+ method_option "deployment", type: :boolean, banner: "Install using defaults tuned for deployment environments"
213
+ method_option "frozen", type: :boolean, banner: "Do not allow the Gemfile.lock to be updated after this install"
214
+ method_option "full-index", type: :boolean, banner: "Fall back to using the single-file index of all gems"
215
+ method_option "gemfile", type: :string, banner: "Use the specified gemfile instead of Gemfile"
216
+ method_option "jobs", aliases: "-j", type: :numeric, banner: "Specify the number of jobs to run in parallel"
217
+ method_option "local", type: :boolean, banner: "Do not attempt to fetch gems remotely and use the gem cache instead"
218
+ method_option "prefer-local", type: :boolean, banner: "Only attempt to fetch gems remotely if not present locally, even if newer versions are available remotely"
219
+ method_option "no-cache", type: :boolean, banner: "Don't update the existing gem cache."
220
+ method_option "redownload", type: :boolean, aliases: "--force", banner: "Force downloading every gem."
221
+ method_option "no-prune", type: :boolean, banner: "Don't remove stale gems from the cache."
222
+ method_option "path", type: :string, banner: "Specify a different path than the system default ($BUNDLE_PATH or $GEM_HOME).#{" Bundler will remember this value for future installs on this machine" unless Bundler.feature_flag.forget_cli_options?}"
223
+ method_option "quiet", type: :boolean, banner: "Only output warnings and errors."
224
+ method_option "shebang", type: :string, banner: "Specify a different shebang executable name than the default (usually 'ruby')"
225
+ method_option "standalone", type: :array, lazy_default: [], banner: "Make a bundle that can work without the Bundler runtime"
226
+ method_option "system", type: :boolean, banner: "Install to the system location ($BUNDLE_PATH or $GEM_HOME) even if the bundle was previously installed somewhere else for this application"
227
+ method_option "trust-policy", alias: "P", type: :string, banner: "Gem trust policy (like gem install -P). Must be one of " +
228
+ Bundler.rubygems.security_policy_keys.join("|")
229
+ method_option "without", type: :array, banner: "Exclude gems that are part of the specified named group."
230
+ method_option "with", type: :array, banner: "Include gems that are part of the specified named group."
250
231
  def install
251
232
  SharedHelpers.major_deprecation(2, "The `--force` option has been renamed to `--redownload`") if ARGV.include?("--force")
252
233
 
253
- %w[clean deployment frozen no-prune path shebang system without with].each do |option|
234
+ %w[clean deployment frozen no-prune path shebang without with].each do |option|
254
235
  remembered_flag_deprecation(option)
255
236
  end
256
237
 
238
+ print_remembered_flag_deprecation("--system", "path.system", "true") if ARGV.include?("--system")
239
+
257
240
  remembered_negative_flag_deprecation("no-deployment")
258
241
 
259
242
  require_relative "cli/install"
260
- Bundler.settings.temporary(:no_install => false) do
243
+ Bundler.settings.temporary(no_install: false) do
261
244
  Install.new(options.dup).run
262
245
  end
263
246
  end
@@ -270,44 +253,27 @@ module Bundler
270
253
  update when you have changed the Gemfile, or if you want to get the newest
271
254
  possible versions of the gems in the bundle.
272
255
  D
273
- method_option "full-index", :type => :boolean, :banner =>
274
- "Fall back to using the single-file index of all gems"
275
- method_option "gemfile", :type => :string, :banner =>
276
- "Use the specified gemfile instead of Gemfile"
277
- method_option "group", :aliases => "-g", :type => :array, :banner =>
278
- "Update a specific group"
279
- method_option "jobs", :aliases => "-j", :type => :numeric, :banner =>
280
- "Specify the number of jobs to run in parallel"
281
- method_option "local", :type => :boolean, :banner =>
282
- "Do not attempt to fetch gems remotely and use the gem cache instead"
283
- method_option "quiet", :type => :boolean, :banner =>
284
- "Only output warnings and errors."
285
- method_option "source", :type => :array, :banner =>
286
- "Update a specific source (and all gems associated with it)"
287
- method_option "redownload", :type => :boolean, :aliases => "--force", :banner =>
288
- "Force downloading every gem."
289
- method_option "ruby", :type => :boolean, :banner =>
290
- "Update ruby specified in Gemfile.lock"
291
- method_option "bundler", :type => :string, :lazy_default => "> 0.a", :banner =>
292
- "Update the locked version of bundler"
293
- method_option "patch", :type => :boolean, :banner =>
294
- "Prefer updating only to next patch version"
295
- method_option "minor", :type => :boolean, :banner =>
296
- "Prefer updating only to next minor version"
297
- method_option "major", :type => :boolean, :banner =>
298
- "Prefer updating to next major version (default)"
299
- method_option "pre", :type => :boolean, :banner =>
300
- "Always choose the highest allowed version when updating gems, regardless of prerelease status"
301
- method_option "strict", :type => :boolean, :banner =>
302
- "Do not allow any gem to be updated past latest --patch | --minor | --major"
303
- method_option "conservative", :type => :boolean, :banner =>
304
- "Use bundle install conservative update behavior and do not allow shared dependencies to be updated."
305
- method_option "all", :type => :boolean, :banner =>
306
- "Update everything."
256
+ method_option "full-index", type: :boolean, banner: "Fall back to using the single-file index of all gems"
257
+ method_option "gemfile", type: :string, banner: "Use the specified gemfile instead of Gemfile"
258
+ method_option "group", aliases: "-g", type: :array, banner: "Update a specific group"
259
+ method_option "jobs", aliases: "-j", type: :numeric, banner: "Specify the number of jobs to run in parallel"
260
+ method_option "local", type: :boolean, banner: "Do not attempt to fetch gems remotely and use the gem cache instead"
261
+ method_option "quiet", type: :boolean, banner: "Only output warnings and errors."
262
+ method_option "source", type: :array, banner: "Update a specific source (and all gems associated with it)"
263
+ method_option "redownload", type: :boolean, aliases: "--force", banner: "Force downloading every gem."
264
+ method_option "ruby", type: :boolean, banner: "Update ruby specified in Gemfile.lock"
265
+ method_option "bundler", type: :string, lazy_default: "> 0.a", banner: "Update the locked version of bundler"
266
+ method_option "patch", type: :boolean, banner: "Prefer updating only to next patch version"
267
+ method_option "minor", type: :boolean, banner: "Prefer updating only to next minor version"
268
+ method_option "major", type: :boolean, banner: "Prefer updating to next major version (default)"
269
+ method_option "pre", type: :boolean, banner: "Always choose the highest allowed version when updating gems, regardless of prerelease status"
270
+ method_option "strict", type: :boolean, banner: "Do not allow any gem to be updated past latest --patch | --minor | --major"
271
+ method_option "conservative", type: :boolean, banner: "Use bundle install conservative update behavior and do not allow shared dependencies to be updated."
272
+ method_option "all", type: :boolean, banner: "Update everything."
307
273
  def update(*gems)
308
274
  SharedHelpers.major_deprecation(2, "The `--force` option has been renamed to `--redownload`") if ARGV.include?("--force")
309
275
  require_relative "cli/update"
310
- Bundler.settings.temporary(:no_install => false) do
276
+ Bundler.settings.temporary(no_install: false) do
311
277
  Update.new(options, gems).run
312
278
  end
313
279
  end
@@ -317,21 +283,25 @@ module Bundler
317
283
  Show lists the names and versions of all gems that are required by your Gemfile.
318
284
  Calling show with [GEM] will list the exact location of that gem on your machine.
319
285
  D
320
- method_option "paths", :type => :boolean,
321
- :banner => "List the paths of all gems that are required by your Gemfile."
322
- method_option "outdated", :type => :boolean,
323
- :banner => "Show verbose output including whether gems are outdated."
286
+ method_option "paths", type: :boolean,
287
+ banner: "List the paths of all gems that are required by your Gemfile."
288
+ method_option "outdated", type: :boolean,
289
+ banner: "Show verbose output including whether gems are outdated."
324
290
  def show(gem_name = nil)
325
- SharedHelpers.major_deprecation(2, "the `--outdated` flag to `bundle show` was undocumented and will be removed without replacement") if ARGV.include?("--outdated")
291
+ if ARGV.include?("--outdated")
292
+ message = "the `--outdated` flag to `bundle show` was undocumented and will be removed without replacement"
293
+ removed_message = "the `--outdated` flag to `bundle show` was undocumented and has been removed without replacement"
294
+ SharedHelpers.major_deprecation(2, message, removed_message: removed_message)
295
+ end
326
296
  require_relative "cli/show"
327
297
  Show.new(options, gem_name).run
328
298
  end
329
299
 
330
300
  desc "list", "List all gems in the bundle"
331
- method_option "name-only", :type => :boolean, :banner => "print only the gem names"
332
- method_option "only-group", :type => :array, :default => [], :banner => "print gems from a given set of groups"
333
- method_option "without-group", :type => :array, :default => [], :banner => "print all gems except from a given set of groups"
334
- method_option "paths", :type => :boolean, :banner => "print the path to each gem in the bundle"
301
+ method_option "name-only", type: :boolean, banner: "print only the gem names"
302
+ method_option "only-group", type: :array, default: [], banner: "print gems from a given set of groups"
303
+ method_option "without-group", type: :array, default: [], banner: "print all gems except from a given set of groups"
304
+ method_option "paths", type: :boolean, banner: "print the path to each gem in the bundle"
335
305
  def list
336
306
  require_relative "cli/list"
337
307
  List.new(options).run
@@ -340,8 +310,8 @@ module Bundler
340
310
  map aliases_for("list")
341
311
 
342
312
  desc "info GEM [OPTIONS]", "Show information for the given gem"
343
- method_option "path", :type => :boolean, :banner => "Print full path to gem"
344
- method_option "version", :type => :boolean, :banner => "Print gem version"
313
+ method_option "path", type: :boolean, banner: "Print full path to gem"
314
+ method_option "version", type: :boolean, banner: "Print gem version"
345
315
  def info(gem_name)
346
316
  require_relative "cli/info"
347
317
  Info.new(options, gem_name).run
@@ -353,18 +323,12 @@ module Bundler
353
323
  or the --binstubs directory if one has been set. Calling binstubs with [GEM [GEM]]
354
324
  will create binstubs for all given gems.
355
325
  D
356
- method_option "force", :type => :boolean, :default => false, :banner =>
357
- "Overwrite existing binstubs if they exist"
358
- method_option "path", :type => :string, :lazy_default => "bin", :banner =>
359
- "Binstub destination directory (default bin)"
360
- method_option "shebang", :type => :string, :banner =>
361
- "Specify a different shebang executable name than the default (usually 'ruby')"
362
- method_option "standalone", :type => :boolean, :banner =>
363
- "Make binstubs that can work without the Bundler runtime"
364
- method_option "all", :type => :boolean, :banner =>
365
- "Install binstubs for all gems"
366
- method_option "all-platforms", :type => :boolean, :default => false, :banner =>
367
- "Install binstubs for all platforms"
326
+ method_option "force", type: :boolean, default: false, banner: "Overwrite existing binstubs if they exist"
327
+ method_option "path", type: :string, lazy_default: "bin", banner: "Binstub destination directory (default bin)"
328
+ method_option "shebang", type: :string, banner: "Specify a different shebang executable name than the default (usually 'ruby')"
329
+ method_option "standalone", type: :boolean, banner: "Make binstubs that can work without the Bundler runtime"
330
+ method_option "all", type: :boolean, banner: "Install binstubs for all gems"
331
+ method_option "all-platforms", type: :boolean, default: false, banner: "Install binstubs for all platforms"
368
332
  def binstubs(*gems)
369
333
  require_relative "cli/binstubs"
370
334
  Binstubs.new(options, gems).run
@@ -374,19 +338,18 @@ module Bundler
374
338
  long_desc <<-D
375
339
  Adds the specified gem to Gemfile (if valid) and run 'bundle install' in one step.
376
340
  D
377
- method_option "version", :aliases => "-v", :type => :string
378
- method_option "group", :aliases => "-g", :type => :string
379
- method_option "source", :aliases => "-s", :type => :string
380
- method_option "require", :aliases => "-r", :type => :string, :banner => "Adds require path to gem. Provide false, or a path as a string."
381
- method_option "path", :type => :string
382
- method_option "git", :type => :string
383
- method_option "github", :type => :string
384
- method_option "branch", :type => :string
385
- method_option "ref", :type => :string
386
- method_option "skip-install", :type => :boolean, :banner =>
387
- "Adds gem to the Gemfile but does not install it"
388
- method_option "optimistic", :type => :boolean, :banner => "Adds optimistic declaration of version to gem"
389
- method_option "strict", :type => :boolean, :banner => "Adds strict declaration of version to gem"
341
+ method_option "version", aliases: "-v", type: :string
342
+ method_option "group", aliases: "-g", type: :string
343
+ method_option "source", aliases: "-s", type: :string
344
+ method_option "require", aliases: "-r", type: :string, banner: "Adds require path to gem. Provide false, or a path as a string."
345
+ method_option "path", type: :string
346
+ method_option "git", type: :string
347
+ method_option "github", type: :string
348
+ method_option "branch", type: :string
349
+ method_option "ref", type: :string
350
+ method_option "skip-install", type: :boolean, banner: "Adds gem to the Gemfile but does not install it"
351
+ method_option "optimistic", type: :boolean, banner: "Adds optimistic declaration of version to gem"
352
+ method_option "strict", type: :boolean, banner: "Adds strict declaration of version to gem"
390
353
  def add(*gems)
391
354
  require_relative "cli/add"
392
355
  Add.new(options.dup, gems).run
@@ -402,54 +365,45 @@ module Bundler
402
365
  For more information on patch level options (--major, --minor, --patch,
403
366
  --strict) see documentation on the same options on the update command.
404
367
  D
405
- method_option "group", :type => :string, :banner => "List gems from a specific group"
406
- method_option "groups", :type => :boolean, :banner => "List gems organized by groups"
407
- method_option "local", :type => :boolean, :banner =>
408
- "Do not attempt to fetch gems remotely and use the gem cache instead"
409
- method_option "pre", :type => :boolean, :banner => "Check for newer pre-release gems"
410
- method_option "source", :type => :array, :banner => "Check against a specific source"
411
- method_option "filter-strict", :type => :boolean, :aliases => "--strict", :banner =>
412
- "Only list newer versions allowed by your Gemfile requirements"
413
- method_option "update-strict", :type => :boolean, :banner =>
414
- "Strict conservative resolution, do not allow any gem to be updated past latest --patch | --minor | --major"
415
- method_option "minor", :type => :boolean, :banner => "Prefer updating only to next minor version"
416
- method_option "major", :type => :boolean, :banner => "Prefer updating to next major version (default)"
417
- method_option "patch", :type => :boolean, :banner => "Prefer updating only to next patch version"
418
- method_option "filter-major", :type => :boolean, :banner => "Only list major newer versions"
419
- method_option "filter-minor", :type => :boolean, :banner => "Only list minor newer versions"
420
- method_option "filter-patch", :type => :boolean, :banner => "Only list patch newer versions"
421
- method_option "parseable", :aliases => "--porcelain", :type => :boolean, :banner =>
422
- "Use minimal formatting for more parseable output"
423
- method_option "only-explicit", :type => :boolean, :banner =>
424
- "Only list gems specified in your Gemfile, not their dependencies"
368
+ method_option "group", type: :string, banner: "List gems from a specific group"
369
+ method_option "groups", type: :boolean, banner: "List gems organized by groups"
370
+ method_option "local", type: :boolean, banner: "Do not attempt to fetch gems remotely and use the gem cache instead"
371
+ method_option "pre", type: :boolean, banner: "Check for newer pre-release gems"
372
+ method_option "source", type: :array, banner: "Check against a specific source"
373
+ method_option "filter-strict", type: :boolean, aliases: "--strict", banner: "Only list newer versions allowed by your Gemfile requirements"
374
+ method_option "update-strict", type: :boolean, banner: "Strict conservative resolution, do not allow any gem to be updated past latest --patch | --minor | --major"
375
+ method_option "minor", type: :boolean, banner: "Prefer updating only to next minor version"
376
+ method_option "major", type: :boolean, banner: "Prefer updating to next major version (default)"
377
+ method_option "patch", type: :boolean, banner: "Prefer updating only to next patch version"
378
+ method_option "filter-major", type: :boolean, banner: "Only list major newer versions"
379
+ method_option "filter-minor", type: :boolean, banner: "Only list minor newer versions"
380
+ method_option "filter-patch", type: :boolean, banner: "Only list patch newer versions"
381
+ method_option "parseable", aliases: "--porcelain", type: :boolean, banner: "Use minimal formatting for more parseable output"
382
+ method_option "only-explicit", type: :boolean, banner: "Only list gems specified in your Gemfile, not their dependencies"
425
383
  def outdated(*gems)
426
384
  require_relative "cli/outdated"
427
385
  Outdated.new(options, gems).run
428
386
  end
429
387
 
430
388
  desc "fund [OPTIONS]", "Lists information about gems seeking funding assistance"
431
- method_option "group", :aliases => "-g", :type => :array, :banner =>
432
- "Fetch funding information for a specific group"
389
+ method_option "group", aliases: "-g", type: :array, banner: "Fetch funding information for a specific group"
433
390
  def fund
434
391
  require_relative "cli/fund"
435
392
  Fund.new(options).run
436
393
  end
437
394
 
438
395
  desc "cache [OPTIONS]", "Locks and then caches all of the gems into vendor/cache"
439
- method_option "all", :type => :boolean,
440
- :default => Bundler.feature_flag.cache_all?,
441
- :banner => "Include all sources (including path and git)."
442
- method_option "all-platforms", :type => :boolean, :banner => "Include gems for all platforms present in the lockfile, not only the current one"
443
- method_option "cache-path", :type => :string, :banner =>
444
- "Specify a different cache path than the default (vendor/cache)."
445
- method_option "gemfile", :type => :string, :banner => "Use the specified gemfile instead of Gemfile"
446
- method_option "no-install", :type => :boolean, :banner => "Don't install the gems, only update the cache."
447
- method_option "no-prune", :type => :boolean, :banner => "Don't remove stale gems from the cache."
448
- method_option "path", :type => :string, :banner =>
449
- "Specify a different path than the system default ($BUNDLE_PATH or $GEM_HOME).#{" Bundler will remember this value for future installs on this machine" unless Bundler.feature_flag.forget_cli_options?}"
450
- method_option "quiet", :type => :boolean, :banner => "Only output warnings and errors."
451
- method_option "frozen", :type => :boolean, :banner =>
452
- "Do not allow the Gemfile.lock to be updated after this bundle cache operation's install"
396
+ method_option "all", type: :boolean,
397
+ default: Bundler.feature_flag.cache_all?,
398
+ banner: "Include all sources (including path and git)."
399
+ method_option "all-platforms", type: :boolean, banner: "Include gems for all platforms present in the lockfile, not only the current one"
400
+ method_option "cache-path", type: :string, banner: "Specify a different cache path than the default (vendor/cache)."
401
+ method_option "gemfile", type: :string, banner: "Use the specified gemfile instead of Gemfile"
402
+ method_option "no-install", type: :boolean, banner: "Don't install the gems, only update the cache."
403
+ method_option "no-prune", type: :boolean, banner: "Don't remove stale gems from the cache."
404
+ method_option "path", type: :string, banner: "Specify a different path than the system default ($BUNDLE_PATH or $GEM_HOME).#{" Bundler will remember this value for future installs on this machine" unless Bundler.feature_flag.forget_cli_options?}"
405
+ method_option "quiet", type: :boolean, banner: "Only output warnings and errors."
406
+ method_option "frozen", type: :boolean, banner: "Do not allow the Gemfile.lock to be updated after this bundle cache operation's install"
453
407
  long_desc <<-D
454
408
  The cache command will copy the .gem files for every gem in the bundle into the
455
409
  directory ./vendor/cache. If you then check that directory into your source
@@ -457,17 +411,20 @@ module Bundler
457
411
  bundle without having to download any additional gems.
458
412
  D
459
413
  def cache
460
- SharedHelpers.major_deprecation 2,
461
- "The `--all` flag is deprecated because it relies on being " \
462
- "remembered across bundler invocations, which bundler will no longer " \
463
- "do in future versions. Instead please use `bundle config set cache_all true`, " \
464
- "and stop using this flag" if ARGV.include?("--all")
465
-
466
- SharedHelpers.major_deprecation 2,
467
- "The `--path` flag is deprecated because its semantics are unclear. " \
468
- "Use `bundle config cache_path` to configure the path of your cache of gems, " \
469
- "and `bundle config path` to configure the path where your gems are installed, " \
470
- "and stop using this flag" if ARGV.include?("--path")
414
+ print_remembered_flag_deprecation("--all", "cache_all", "true") if ARGV.include?("--all")
415
+
416
+ if ARGV.include?("--path")
417
+ message =
418
+ "The `--path` flag is deprecated because its semantics are unclear. " \
419
+ "Use `bundle config cache_path` to configure the path of your cache of gems, " \
420
+ "and `bundle config path` to configure the path where your gems are installed, " \
421
+ "and stop using this flag"
422
+ removed_message =
423
+ "The `--path` flag has been removed because its semantics were unclear. " \
424
+ "Use `bundle config cache_path` to configure the path of your cache of gems, " \
425
+ "and `bundle config path` to configure the path where your gems are installed."
426
+ SharedHelpers.major_deprecation 2, message, removed_message: removed_message
427
+ end
471
428
 
472
429
  require_relative "cli/cache"
473
430
  Cache.new(options).run
@@ -476,8 +433,8 @@ module Bundler
476
433
  map aliases_for("cache")
477
434
 
478
435
  desc "exec [OPTIONS]", "Run the command in context of the bundle"
479
- method_option :keep_file_descriptors, :type => :boolean, :default => true
480
- method_option :gemfile, :type => :string, :required => false
436
+ method_option :keep_file_descriptors, type: :boolean, default: true
437
+ method_option :gemfile, type: :string, required: false
481
438
  long_desc <<-D
482
439
  Exec runs a command, providing it access to the gems in the bundle. While using
483
440
  bundle exec you can require and call the bundled gems as if they were installed
@@ -485,7 +442,9 @@ module Bundler
485
442
  D
486
443
  def exec(*args)
487
444
  if ARGV.include?("--no-keep-file-descriptors")
488
- SharedHelpers.major_deprecation(2, "The `--no-keep-file-descriptors` has been deprecated. `bundle exec` no longer mess with your file descriptors. Close them in the exec'd script if you need to")
445
+ message = "The `--no-keep-file-descriptors` has been deprecated. `bundle exec` no longer mess with your file descriptors. Close them in the exec'd script if you need to"
446
+ removed_message = "The `--no-keep-file-descriptors` has been removed. `bundle exec` no longer mess with your file descriptors. Close them in the exec'd script if you need to"
447
+ SharedHelpers.major_deprecation(2, message, removed_message: removed_message)
489
448
  end
490
449
 
491
450
  require_relative "cli/exec"
@@ -510,7 +469,7 @@ module Bundler
510
469
  subcommand "config", Config
511
470
 
512
471
  desc "open GEM", "Opens the source directory of the given bundled gem"
513
- method_option "path", :type => :string, :lazy_default => "", :banner => "Open relative path of the gem source."
472
+ method_option "path", type: :string, lazy_default: "", banner: "Open relative path of the gem source."
514
473
  def open(name)
515
474
  require_relative "cli/open"
516
475
  Open.new(options, name).run
@@ -555,17 +514,17 @@ module Bundler
555
514
  end
556
515
 
557
516
  unless Bundler.feature_flag.bundler_3_mode?
558
- desc "viz [OPTIONS]", "Generates a visual dependency graph", :hide => true
517
+ desc "viz [OPTIONS]", "Generates a visual dependency graph", hide: true
559
518
  long_desc <<-D
560
519
  Viz generates a PNG file of the current Gemfile as a dependency graph.
561
520
  Viz requires the ruby-graphviz gem (and its dependencies).
562
521
  The associated gems must also be installed via 'bundle install'.
563
522
  D
564
- method_option :file, :type => :string, :default => "gem_graph", :aliases => "-f", :desc => "The name to use for the generated file. see format option"
565
- method_option :format, :type => :string, :default => "png", :aliases => "-F", :desc => "This is output format option. Supported format is png, jpg, svg, dot ..."
566
- method_option :requirements, :type => :boolean, :default => false, :aliases => "-R", :desc => "Set to show the version of each required dependency."
567
- method_option :version, :type => :boolean, :default => false, :aliases => "-v", :desc => "Set to show each gem version."
568
- method_option :without, :type => :array, :default => [], :aliases => "-W", :banner => "GROUP[ GROUP...]", :desc => "Exclude gems that are part of the specified named group."
523
+ method_option :file, type: :string, default: "gem_graph", aliases: "-f", desc: "The name to use for the generated file. see format option"
524
+ method_option :format, type: :string, default: "png", aliases: "-F", desc: "This is output format option. Supported format is png, jpg, svg, dot ..."
525
+ method_option :requirements, type: :boolean, default: false, aliases: "-R", desc: "Set to show the version of each required dependency."
526
+ method_option :version, type: :boolean, default: false, aliases: "-v", desc: "Set to show each gem version."
527
+ method_option :without, type: :array, default: [], aliases: "-W", banner: "GROUP[ GROUP...]", desc: "Exclude gems that are part of the specified named group."
569
528
  def viz
570
529
  SharedHelpers.major_deprecation 2, "The `viz` command has been renamed to `graph` and moved to a plugin. See https://github.com/rubygems/bundler-graph"
571
530
  require_relative "cli/viz"
@@ -576,23 +535,23 @@ module Bundler
576
535
  old_gem = instance_method(:gem)
577
536
 
578
537
  desc "gem NAME [OPTIONS]", "Creates a skeleton for creating a rubygem"
579
- method_option :exe, :type => :boolean, :default => false, :aliases => ["--bin", "-b"], :desc => "Generate a binary executable for your library."
580
- method_option :coc, :type => :boolean, :desc => "Generate a code of conduct file. Set a default with `bundle config set --global gem.coc true`."
581
- method_option :edit, :type => :string, :aliases => "-e", :required => false, :banner => "EDITOR",
582
- :lazy_default => [ENV["BUNDLER_EDITOR"], ENV["VISUAL"], ENV["EDITOR"]].find {|e| !e.nil? && !e.empty? },
583
- :desc => "Open generated gemspec in the specified editor (defaults to $EDITOR or $BUNDLER_EDITOR)"
584
- method_option :ext, :type => :string, :desc => "Generate the boilerplate for C extension code.", :enum => EXTENSIONS
585
- method_option :git, :type => :boolean, :default => true, :desc => "Initialize a git repo inside your library."
586
- method_option :mit, :type => :boolean, :desc => "Generate an MIT license file. Set a default with `bundle config set --global gem.mit true`."
587
- method_option :rubocop, :type => :boolean, :desc => "Add rubocop to the generated Rakefile and gemspec. Set a default with `bundle config set --global gem.rubocop true`."
588
- method_option :changelog, :type => :boolean, :desc => "Generate changelog file. Set a default with `bundle config set --global gem.changelog true`."
589
- method_option :test, :type => :string, :lazy_default => Bundler.settings["gem.test"] || "", :aliases => "-t", :banner => "Use the specified test framework for your library",
590
- :desc => "Generate a test directory for your library, either rspec, minitest or test-unit. Set a default with `bundle config set --global gem.test (rspec|minitest|test-unit)`."
591
- method_option :ci, :type => :string, :lazy_default => Bundler.settings["gem.ci"] || "",
592
- :desc => "Generate CI configuration, either GitHub Actions, GitLab CI or CircleCI. Set a default with `bundle config set --global gem.ci (github|gitlab|circle)`"
593
- method_option :linter, :type => :string, :lazy_default => Bundler.settings["gem.linter"] || "",
594
- :desc => "Add a linter and code formatter, either RuboCop or Standard. Set a default with `bundle config set --global gem.linter (rubocop|standard)`"
595
- method_option :github_username, :type => :string, :default => Bundler.settings["gem.github_username"], :banner => "Set your username on GitHub", :desc => "Fill in GitHub username on README so that you don't have to do it manually. Set a default with `bundle config set --global gem.github_username <your_username>`."
538
+ method_option :exe, type: :boolean, default: false, aliases: ["--bin", "-b"], desc: "Generate a binary executable for your library."
539
+ method_option :coc, type: :boolean, desc: "Generate a code of conduct file. Set a default with `bundle config set --global gem.coc true`."
540
+ method_option :edit, type: :string, aliases: "-e", required: false, banner: "EDITOR",
541
+ lazy_default: [ENV["BUNDLER_EDITOR"], ENV["VISUAL"], ENV["EDITOR"]].find {|e| !e.nil? && !e.empty? },
542
+ desc: "Open generated gemspec in the specified editor (defaults to $EDITOR or $BUNDLER_EDITOR)"
543
+ method_option :ext, type: :string, desc: "Generate the boilerplate for C extension code.", enum: EXTENSIONS
544
+ method_option :git, type: :boolean, default: true, desc: "Initialize a git repo inside your library."
545
+ method_option :mit, type: :boolean, desc: "Generate an MIT license file. Set a default with `bundle config set --global gem.mit true`."
546
+ method_option :rubocop, type: :boolean, desc: "Add rubocop to the generated Rakefile and gemspec. Set a default with `bundle config set --global gem.rubocop true`."
547
+ method_option :changelog, type: :boolean, desc: "Generate changelog file. Set a default with `bundle config set --global gem.changelog true`."
548
+ method_option :test, type: :string, lazy_default: Bundler.settings["gem.test"] || "", aliases: "-t", banner: "Use the specified test framework for your library",
549
+ desc: "Generate a test directory for your library, either rspec, minitest or test-unit. Set a default with `bundle config set --global gem.test (rspec|minitest|test-unit)`."
550
+ method_option :ci, type: :string, lazy_default: Bundler.settings["gem.ci"] || "",
551
+ desc: "Generate CI configuration, either GitHub Actions, GitLab CI or CircleCI. Set a default with `bundle config set --global gem.ci (github|gitlab|circle)`"
552
+ method_option :linter, type: :string, lazy_default: Bundler.settings["gem.linter"] || "",
553
+ desc: "Add a linter and code formatter, either RuboCop or Standard. Set a default with `bundle config set --global gem.linter (rubocop|standard)`"
554
+ method_option :github_username, type: :string, default: Bundler.settings["gem.github_username"], banner: "Set your username on GitHub", desc: "Fill in GitHub username on README so that you don't have to do it manually. Set a default with `bundle config set --global gem.github_username <your_username>`."
596
555
 
597
556
  def gem(name)
598
557
  end
@@ -623,29 +582,24 @@ module Bundler
623
582
  File.expand_path("templates", __dir__)
624
583
  end
625
584
 
626
- desc "clean [OPTIONS]", "Cleans up unused gems in your bundler directory", :hide => true
627
- method_option "dry-run", :type => :boolean, :default => false, :banner =>
628
- "Only print out changes, do not clean gems"
629
- method_option "force", :type => :boolean, :default => false, :banner =>
630
- "Forces cleaning up unused gems even if Bundler is configured to use globally installed gems. As a consequence, removes all system gems except for the ones in the current application."
585
+ desc "clean [OPTIONS]", "Cleans up unused gems in your bundler directory", hide: true
586
+ method_option "dry-run", type: :boolean, default: false, banner: "Only print out changes, do not clean gems"
587
+ method_option "force", type: :boolean, default: false, banner: "Forces cleaning up unused gems even if Bundler is configured to use globally installed gems. As a consequence, removes all system gems except for the ones in the current application."
631
588
  def clean
632
589
  require_relative "cli/clean"
633
590
  Clean.new(options.dup).run
634
591
  end
635
592
 
636
593
  desc "platform [OPTIONS]", "Displays platform compatibility information"
637
- method_option "ruby", :type => :boolean, :default => false, :banner =>
638
- "only display ruby related platform information"
594
+ method_option "ruby", type: :boolean, default: false, banner: "only display ruby related platform information"
639
595
  def platform
640
596
  require_relative "cli/platform"
641
597
  Platform.new(options).run
642
598
  end
643
599
 
644
- desc "inject GEM VERSION", "Add the named gem, with version requirements, to the resolved Gemfile", :hide => true
645
- method_option "source", :type => :string, :banner =>
646
- "Install gem from the given source"
647
- method_option "group", :type => :string, :banner =>
648
- "Install gem into a bundler group"
600
+ desc "inject GEM VERSION", "Add the named gem, with version requirements, to the resolved Gemfile", hide: true
601
+ method_option "source", type: :string, banner: "Install gem from the given source"
602
+ method_option "group", type: :string, banner: "Install gem into a bundler group"
649
603
  def inject(name, version)
650
604
  SharedHelpers.major_deprecation 2, "The `inject` command has been replaced by the `add` command"
651
605
  require_relative "cli/inject"
@@ -653,36 +607,21 @@ module Bundler
653
607
  end
654
608
 
655
609
  desc "lock", "Creates a lockfile without installing"
656
- method_option "update", :type => :array, :lazy_default => true, :banner =>
657
- "ignore the existing lockfile, update all gems by default, or update list of given gems"
658
- method_option "local", :type => :boolean, :default => false, :banner =>
659
- "do not attempt to fetch remote gemspecs and use the local gem cache only"
660
- method_option "print", :type => :boolean, :default => false, :banner =>
661
- "print the lockfile to STDOUT instead of writing to the file system"
662
- method_option "gemfile", :type => :string, :banner =>
663
- "Use the specified gemfile instead of Gemfile"
664
- method_option "lockfile", :type => :string, :default => nil, :banner =>
665
- "the path the lockfile should be written to"
666
- method_option "full-index", :type => :boolean, :default => false, :banner =>
667
- "Fall back to using the single-file index of all gems"
668
- method_option "add-platform", :type => :array, :default => [], :banner =>
669
- "Add a new platform to the lockfile"
670
- method_option "remove-platform", :type => :array, :default => [], :banner =>
671
- "Remove a platform from the lockfile"
672
- method_option "patch", :type => :boolean, :banner =>
673
- "If updating, prefer updating only to next patch version"
674
- method_option "minor", :type => :boolean, :banner =>
675
- "If updating, prefer updating only to next minor version"
676
- method_option "major", :type => :boolean, :banner =>
677
- "If updating, prefer updating to next major version (default)"
678
- method_option "pre", :type => :boolean, :banner =>
679
- "If updating, always choose the highest allowed version, regardless of prerelease status"
680
- method_option "strict", :type => :boolean, :banner =>
681
- "If updating, do not allow any gem to be updated past latest --patch | --minor | --major"
682
- method_option "conservative", :type => :boolean, :banner =>
683
- "If updating, use bundle install conservative update behavior and do not allow shared dependencies to be updated"
684
- method_option "bundler", :type => :string, :lazy_default => "> 0.a", :banner =>
685
- "Update the locked version of bundler"
610
+ method_option "update", type: :array, lazy_default: true, banner: "ignore the existing lockfile, update all gems by default, or update list of given gems"
611
+ method_option "local", type: :boolean, default: false, banner: "do not attempt to fetch remote gemspecs and use the local gem cache only"
612
+ method_option "print", type: :boolean, default: false, banner: "print the lockfile to STDOUT instead of writing to the file system"
613
+ method_option "gemfile", type: :string, banner: "Use the specified gemfile instead of Gemfile"
614
+ method_option "lockfile", type: :string, default: nil, banner: "the path the lockfile should be written to"
615
+ method_option "full-index", type: :boolean, default: false, banner: "Fall back to using the single-file index of all gems"
616
+ method_option "add-platform", type: :array, default: [], banner: "Add a new platform to the lockfile"
617
+ method_option "remove-platform", type: :array, default: [], banner: "Remove a platform from the lockfile"
618
+ method_option "patch", type: :boolean, banner: "If updating, prefer updating only to next patch version"
619
+ method_option "minor", type: :boolean, banner: "If updating, prefer updating only to next minor version"
620
+ method_option "major", type: :boolean, banner: "If updating, prefer updating to next major version (default)"
621
+ method_option "pre", type: :boolean, banner: "If updating, always choose the highest allowed version, regardless of prerelease status"
622
+ method_option "strict", type: :boolean, banner: "If updating, do not allow any gem to be updated past latest --patch | --minor | --major"
623
+ method_option "conservative", type: :boolean, banner: "If updating, use bundle install conservative update behavior and do not allow shared dependencies to be updated"
624
+ method_option "bundler", type: :string, lazy_default: "> 0.a", banner: "Update the locked version of bundler"
686
625
  def lock
687
626
  require_relative "cli/lock"
688
627
  Lock.new(options).run
@@ -699,10 +638,8 @@ module Bundler
699
638
  missing dependencies are detected, Bundler prints them and exits status 1.
700
639
  Otherwise, Bundler prints a success message and exits with a status of 0.
701
640
  D
702
- method_option "gemfile", :type => :string, :banner =>
703
- "Use the specified gemfile instead of Gemfile"
704
- method_option "quiet", :type => :boolean, :banner =>
705
- "Only output warnings and errors."
641
+ method_option "gemfile", type: :string, banner: "Use the specified gemfile instead of Gemfile"
642
+ method_option "quiet", type: :boolean, banner: "Only output warnings and errors."
706
643
  def doctor
707
644
  require_relative "cli/doctor"
708
645
  Doctor.new(options).run
@@ -722,7 +659,9 @@ module Bundler
722
659
  D
723
660
  def pristine(*gems)
724
661
  require_relative "cli/pristine"
725
- Pristine.new(gems).run
662
+ Bundler.settings.temporary(no_install: false) do
663
+ Pristine.new(gems).run
664
+ end
726
665
  end
727
666
 
728
667
  if Bundler.feature_flag.plugins?
@@ -764,14 +703,16 @@ module Bundler
764
703
  # when deprecated version of `--ext` is called
765
704
  # print out deprecation warning and pretend `--ext=c` was provided
766
705
  if deprecated_ext_value?(arguments)
767
- SharedHelpers.major_deprecation 2, "Extensions can now be generated using C or Rust, so `--ext` with no arguments has been deprecated. Please select a language, e.g. `--ext=rust` to generate a Rust extension. This gem will now be generated as if `--ext=c` was used."
706
+ message = "Extensions can now be generated using C or Rust, so `--ext` with no arguments has been deprecated. Please select a language, e.g. `--ext=rust` to generate a Rust extension. This gem will now be generated as if `--ext=c` was used."
707
+ removed_message = "Extensions can now be generated using C or Rust, so `--ext` with no arguments has been removed. Please select a language, e.g. `--ext=rust` to generate a Rust extension."
708
+ SharedHelpers.major_deprecation 2, message, removed_message: removed_message
768
709
  arguments[arguments.index("--ext")] = "--ext=c"
769
710
  end
770
711
  end
771
712
 
772
713
  def self.deprecated_ext_value?(arguments)
773
714
  index = arguments.index("--ext")
774
- next_argument = arguments[index+1]
715
+ next_argument = arguments[index + 1]
775
716
 
776
717
  # it is ok when --ext is followed with valid extension value
777
718
  # for example `bundle gem hello --ext c`
@@ -806,7 +747,7 @@ module Bundler
806
747
 
807
748
  begin
808
749
  Bundler.definition.specs
809
- rescue GemNotFound
750
+ rescue GemNotFound, GitError
810
751
  Bundler.ui.info "Automatically installing missing gems."
811
752
  Bundler.reset!
812
753
  invoke :install, []
@@ -844,7 +785,7 @@ module Bundler
844
785
  return unless SharedHelpers.md5_available?
845
786
 
846
787
  latest = Fetcher::CompactIndex.
847
- new(nil, Source::Rubygems::Remote.new(Bundler::URI("https://rubygems.org")), nil).
788
+ new(nil, Source::Rubygems::Remote.new(Bundler::URI("https://rubygems.org")), nil, nil).
848
789
  send(:compact_index_client).
849
790
  instance_variable_get(:@cache).
850
791
  dependencies("bundler").
@@ -883,12 +824,23 @@ module Bundler
883
824
 
884
825
  value = options[name]
885
826
  value = value.join(" ").to_s if option.type == :array
827
+ value = "'#{value}'" unless option.type == :boolean
886
828
 
887
- Bundler::SharedHelpers.major_deprecation 2,
829
+ print_remembered_flag_deprecation(flag_name, name.tr("-", "_"), value)
830
+ end
831
+
832
+ def print_remembered_flag_deprecation(flag_name, option_name, option_value)
833
+ message =
888
834
  "The `#{flag_name}` flag is deprecated because it relies on being " \
889
835
  "remembered across bundler invocations, which bundler will no longer " \
890
- "do in future versions. Instead please use `bundle config set --local #{name.tr("-", "_")} " \
891
- "'#{value}'`, and stop using this flag"
836
+ "do in future versions. Instead please use `bundle config set #{option_name} " \
837
+ "#{option_value}`, and stop using this flag"
838
+ removed_message =
839
+ "The `#{flag_name}` flag has been removed because it relied on being " \
840
+ "remembered across bundler invocations, which bundler will no longer " \
841
+ "do. Instead please use `bundle config set #{option_name} " \
842
+ "#{option_value}`, and stop using this flag"
843
+ Bundler::SharedHelpers.major_deprecation 2, message, removed_message: removed_message
892
844
  end
893
845
  end
894
846
  end