rubygems-update 3.4.10 → 3.5.22

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