rubygems-update 3.2.30 → 3.4.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (641) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1666 -994
  3. data/CONTRIBUTING.md +71 -15
  4. data/Manifest.txt +93 -37
  5. data/POLICIES.md +65 -16
  6. data/README.md +28 -13
  7. data/UPGRADING.md +5 -81
  8. data/bin/gem +2 -10
  9. data/bin/update_rubygems +5 -5
  10. data/bundler/CHANGELOG.md +647 -1
  11. data/bundler/README.md +3 -6
  12. data/bundler/UPGRADING.md +11 -4
  13. data/bundler/bundler.gemspec +8 -10
  14. data/bundler/exe/bundle +7 -11
  15. data/bundler/exe/bundler +1 -1
  16. data/bundler/lib/bundler/.document +1 -0
  17. data/bundler/lib/bundler/build_metadata.rb +3 -3
  18. data/bundler/lib/bundler/cli/add.rb +1 -1
  19. data/bundler/lib/bundler/cli/binstubs.rb +5 -1
  20. data/bundler/lib/bundler/cli/check.rb +1 -1
  21. data/bundler/lib/bundler/cli/common.rb +4 -2
  22. data/bundler/lib/bundler/cli/config.rb +10 -1
  23. data/bundler/lib/bundler/cli/console.rb +2 -2
  24. data/bundler/lib/bundler/cli/doctor.rb +10 -3
  25. data/bundler/lib/bundler/cli/gem.rb +136 -42
  26. data/bundler/lib/bundler/cli/info.rb +17 -3
  27. data/bundler/lib/bundler/cli/init.rb +6 -2
  28. data/bundler/lib/bundler/cli/install.rb +15 -33
  29. data/bundler/lib/bundler/cli/lock.rb +8 -5
  30. data/bundler/lib/bundler/cli/open.rb +6 -4
  31. data/bundler/lib/bundler/cli/outdated.rb +13 -6
  32. data/bundler/lib/bundler/cli/platform.rb +2 -2
  33. data/bundler/lib/bundler/cli/show.rb +1 -1
  34. data/bundler/lib/bundler/cli/update.rb +8 -4
  35. data/bundler/lib/bundler/cli/viz.rb +1 -1
  36. data/bundler/lib/bundler/cli.rb +67 -21
  37. data/bundler/lib/bundler/compact_index_client/cache.rb +1 -10
  38. data/bundler/lib/bundler/compact_index_client/updater.rb +53 -44
  39. data/bundler/lib/bundler/compact_index_client.rb +0 -6
  40. data/bundler/lib/bundler/constants.rb +1 -1
  41. data/bundler/lib/bundler/current_ruby.rb +18 -6
  42. data/bundler/lib/bundler/definition.rb +259 -242
  43. data/bundler/lib/bundler/dependency.rb +24 -71
  44. data/bundler/lib/bundler/digest.rb +1 -1
  45. data/bundler/lib/bundler/dsl.rb +29 -46
  46. data/bundler/lib/bundler/endpoint_specification.rb +15 -13
  47. data/bundler/lib/bundler/env.rb +2 -2
  48. data/bundler/lib/bundler/environment_preserver.rb +7 -3
  49. data/bundler/lib/bundler/errors.rb +15 -15
  50. data/bundler/lib/bundler/feature_flag.rb +0 -1
  51. data/bundler/lib/bundler/fetcher/base.rb +6 -8
  52. data/bundler/lib/bundler/fetcher/compact_index.rb +18 -25
  53. data/bundler/lib/bundler/fetcher/dependency.rb +2 -6
  54. data/bundler/lib/bundler/fetcher/downloader.rb +2 -5
  55. data/bundler/lib/bundler/fetcher/index.rb +0 -26
  56. data/bundler/lib/bundler/fetcher.rb +22 -29
  57. data/bundler/lib/bundler/force_platform.rb +18 -0
  58. data/bundler/lib/bundler/friendly_errors.rb +21 -7
  59. data/bundler/lib/bundler/gem_helper.rb +4 -4
  60. data/bundler/lib/bundler/gem_helpers.rb +9 -2
  61. data/bundler/lib/bundler/gem_version_promoter.rb +53 -98
  62. data/bundler/lib/bundler/graph.rb +3 -3
  63. data/bundler/lib/bundler/index.rb +13 -51
  64. data/bundler/lib/bundler/injector.rb +18 -4
  65. data/bundler/lib/bundler/inline.rb +9 -21
  66. data/bundler/lib/bundler/installer/gem_installer.rb +13 -5
  67. data/bundler/lib/bundler/installer/parallel_installer.rb +3 -33
  68. data/bundler/lib/bundler/installer/standalone.rb +42 -11
  69. data/bundler/lib/bundler/installer.rb +20 -44
  70. data/bundler/lib/bundler/lazy_specification.rb +72 -55
  71. data/bundler/lib/bundler/lockfile_generator.rb +3 -3
  72. data/bundler/lib/bundler/lockfile_parser.rb +28 -26
  73. data/bundler/lib/bundler/man/bundle-add.1 +21 -5
  74. data/bundler/lib/bundler/man/bundle-add.1.ronn +16 -4
  75. data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
  76. data/bundler/lib/bundler/man/bundle-cache.1 +7 -1
  77. data/bundler/lib/bundler/man/bundle-cache.1.ronn +7 -0
  78. data/bundler/lib/bundler/man/bundle-check.1 +1 -1
  79. data/bundler/lib/bundler/man/bundle-clean.1 +2 -2
  80. data/bundler/lib/bundler/man/bundle-clean.1.ronn +1 -1
  81. data/bundler/lib/bundler/man/bundle-config.1 +34 -15
  82. data/bundler/lib/bundler/man/bundle-config.1.ronn +31 -19
  83. data/bundler/lib/bundler/man/bundle-console.1 +53 -0
  84. data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
  85. data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
  86. data/bundler/lib/bundler/man/bundle-exec.1 +6 -6
  87. data/bundler/lib/bundler/man/bundle-exec.1.ronn +6 -6
  88. data/bundler/lib/bundler/man/bundle-gem.1 +37 -34
  89. data/bundler/lib/bundler/man/bundle-gem.1.ronn +21 -5
  90. data/bundler/lib/bundler/man/bundle-help.1 +13 -0
  91. data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
  92. data/bundler/lib/bundler/man/bundle-info.1 +1 -1
  93. data/bundler/lib/bundler/man/bundle-init.1 +5 -1
  94. data/bundler/lib/bundler/man/bundle-init.1.ronn +2 -0
  95. data/bundler/lib/bundler/man/bundle-inject.1 +5 -2
  96. data/bundler/lib/bundler/man/bundle-inject.1.ronn +3 -1
  97. data/bundler/lib/bundler/man/bundle-install.1 +6 -31
  98. data/bundler/lib/bundler/man/bundle-install.1.ronn +8 -31
  99. data/bundler/lib/bundler/man/bundle-list.1 +1 -1
  100. data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
  101. data/bundler/lib/bundler/man/bundle-open.1 +22 -2
  102. data/bundler/lib/bundler/man/bundle-open.1.ronn +9 -1
  103. data/bundler/lib/bundler/man/bundle-outdated.1 +3 -10
  104. data/bundler/lib/bundler/man/bundle-outdated.1.ronn +1 -10
  105. data/bundler/lib/bundler/man/bundle-platform.1 +16 -6
  106. data/bundler/lib/bundler/man/bundle-platform.1.ronn +14 -7
  107. data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
  108. data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
  109. data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
  110. data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
  111. data/bundler/lib/bundler/man/bundle-show.1 +1 -1
  112. data/bundler/lib/bundler/man/bundle-update.1 +2 -2
  113. data/bundler/lib/bundler/man/bundle-update.1.ronn +2 -1
  114. data/bundler/lib/bundler/man/bundle-version.1 +35 -0
  115. data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
  116. data/bundler/lib/bundler/man/bundle-viz.1 +4 -1
  117. data/bundler/lib/bundler/man/bundle-viz.1.ronn +2 -0
  118. data/bundler/lib/bundler/man/bundle.1 +15 -10
  119. data/bundler/lib/bundler/man/bundle.1.ronn +12 -7
  120. data/bundler/lib/bundler/man/gemfile.5 +117 -80
  121. data/bundler/lib/bundler/man/gemfile.5.ronn +105 -84
  122. data/bundler/lib/bundler/man/index.txt +4 -0
  123. data/bundler/lib/bundler/match_metadata.rb +13 -0
  124. data/bundler/lib/bundler/match_platform.rb +0 -1
  125. data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
  126. data/bundler/lib/bundler/mirror.rb +5 -7
  127. data/bundler/lib/bundler/plugin/api/source.rb +4 -9
  128. data/bundler/lib/bundler/plugin/index.rb +4 -4
  129. data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
  130. data/bundler/lib/bundler/plugin/installer/rubygems.rb +0 -8
  131. data/bundler/lib/bundler/plugin/installer.rb +6 -3
  132. data/bundler/lib/bundler/plugin.rb +3 -1
  133. data/bundler/lib/bundler/process_lock.rb +1 -1
  134. data/bundler/lib/bundler/remote_specification.rb +7 -5
  135. data/bundler/lib/bundler/resolver/base.rb +109 -0
  136. data/bundler/lib/bundler/resolver/candidate.rb +94 -0
  137. data/bundler/lib/bundler/resolver/incompatibility.rb +15 -0
  138. data/bundler/lib/bundler/resolver/package.rb +72 -0
  139. data/bundler/lib/bundler/resolver/root.rb +25 -0
  140. data/bundler/lib/bundler/resolver/spec_group.rb +43 -71
  141. data/bundler/lib/bundler/resolver.rb +332 -308
  142. data/bundler/lib/bundler/ruby_dsl.rb +1 -1
  143. data/bundler/lib/bundler/ruby_version.rb +5 -18
  144. data/bundler/lib/bundler/rubygems_ext.rb +144 -25
  145. data/bundler/lib/bundler/rubygems_gem_installer.rb +32 -20
  146. data/bundler/lib/bundler/rubygems_integration.rb +24 -95
  147. data/bundler/lib/bundler/runtime.rb +2 -7
  148. data/bundler/lib/bundler/self_manager.rb +168 -0
  149. data/bundler/lib/bundler/settings.rb +5 -10
  150. data/bundler/lib/bundler/setup.rb +4 -1
  151. data/bundler/lib/bundler/shared_helpers.rb +17 -25
  152. data/bundler/lib/bundler/source/git/git_proxy.rb +219 -71
  153. data/bundler/lib/bundler/source/git.rb +23 -26
  154. data/bundler/lib/bundler/source/metadata.rb +3 -4
  155. data/bundler/lib/bundler/source/path/installer.rb +1 -22
  156. data/bundler/lib/bundler/source/path.rb +7 -7
  157. data/bundler/lib/bundler/source/rubygems.rb +91 -130
  158. data/bundler/lib/bundler/source/rubygems_aggregate.rb +1 -1
  159. data/bundler/lib/bundler/source.rb +4 -5
  160. data/bundler/lib/bundler/source_list.rb +19 -31
  161. data/bundler/lib/bundler/source_map.rb +15 -2
  162. data/bundler/lib/bundler/spec_set.rb +63 -35
  163. data/bundler/lib/bundler/stub_specification.rb +5 -3
  164. data/bundler/lib/bundler/templates/Executable +3 -5
  165. data/bundler/lib/bundler/templates/Executable.bundler +6 -11
  166. data/bundler/lib/bundler/templates/Executable.standalone +4 -4
  167. data/bundler/lib/bundler/templates/Gemfile +0 -2
  168. data/bundler/lib/bundler/templates/newgem/Cargo.toml.tt +7 -0
  169. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +8 -2
  170. data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -11
  171. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +27 -3
  172. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +12 -0
  173. data/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +15 -0
  174. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
  175. data/bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +12 -0
  176. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +13 -3
  177. data/bundler/lib/bundler/templates/newgem/gitignore.tt +3 -0
  178. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +13 -4
  179. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +22 -16
  180. data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
  181. data/bundler/lib/bundler/templates/newgem/standard.yml.tt +3 -0
  182. data/bundler/lib/bundler/templates/newgem/test/minitest/{newgem_test.rb.tt → test_newgem.rb.tt} +1 -1
  183. data/bundler/lib/bundler/ui/shell.rb +36 -13
  184. data/bundler/lib/bundler/ui/silent.rb +21 -5
  185. data/bundler/lib/bundler/uri_normalizer.rb +23 -0
  186. data/bundler/lib/bundler/vendor/.document +1 -0
  187. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +3 -3
  188. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +0 -1
  189. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +3 -1
  190. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +1350 -408
  191. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
  192. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1 -1
  193. data/bundler/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
  194. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
  195. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +189 -0
  196. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
  197. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
  198. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
  199. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
  200. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
  201. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
  202. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +60 -0
  203. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
  204. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
  205. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
  206. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +411 -0
  207. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +243 -0
  208. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
  209. data/bundler/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
  210. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +6 -6
  211. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -2
  212. data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +6 -2
  213. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +6 -0
  214. data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +9 -4
  215. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +19 -1
  216. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +23 -5
  217. data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
  218. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
  219. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  220. data/bundler/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
  221. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +452 -0
  222. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +76 -91
  223. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +7 -1
  224. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +2 -2
  225. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +32 -13
  226. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +40 -3
  227. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +2 -2
  228. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +2 -2
  229. data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +2 -1
  230. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +2 -3
  231. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +14 -21
  232. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +11 -17
  233. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  234. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
  235. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
  236. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +3 -3
  237. data/bundler/lib/bundler/vendored_persistent.rb +1 -33
  238. data/bundler/lib/bundler/{vendored_molinillo.rb → vendored_pub_grub.rb} +1 -1
  239. data/bundler/lib/bundler/{vendored_tmpdir.rb → vendored_tsort.rb} +1 -1
  240. data/bundler/lib/bundler/version.rb +5 -1
  241. data/bundler/lib/bundler/worker.rb +5 -7
  242. data/bundler/lib/bundler.rb +50 -77
  243. data/hide_lib_for_update/note.txt +0 -4
  244. data/lib/rubygems/available_set.rb +3 -3
  245. data/lib/rubygems/basic_specification.rb +12 -12
  246. data/lib/rubygems/bundler_version_finder.rb +14 -46
  247. data/lib/rubygems/command.rb +47 -39
  248. data/lib/rubygems/command_manager.rb +34 -13
  249. data/lib/rubygems/commands/build_command.rb +11 -8
  250. data/lib/rubygems/commands/cert_command.rb +39 -39
  251. data/lib/rubygems/commands/check_command.rb +20 -20
  252. data/lib/rubygems/commands/cleanup_command.rb +23 -23
  253. data/lib/rubygems/commands/contents_command.rb +13 -13
  254. data/lib/rubygems/commands/dependency_command.rb +35 -45
  255. data/lib/rubygems/commands/environment_command.rb +10 -7
  256. data/lib/rubygems/commands/exec_command.rb +248 -0
  257. data/lib/rubygems/commands/fetch_command.rb +32 -13
  258. data/lib/rubygems/commands/generate_index_command.rb +17 -17
  259. data/lib/rubygems/commands/help_command.rb +6 -6
  260. data/lib/rubygems/commands/info_command.rb +3 -3
  261. data/lib/rubygems/commands/install_command.rb +31 -24
  262. data/lib/rubygems/commands/list_command.rb +4 -4
  263. data/lib/rubygems/commands/lock_command.rb +4 -4
  264. data/lib/rubygems/commands/mirror_command.rb +3 -3
  265. data/lib/rubygems/commands/open_command.rb +9 -9
  266. data/lib/rubygems/commands/outdated_command.rb +5 -5
  267. data/lib/rubygems/commands/owner_command.rb +17 -12
  268. data/lib/rubygems/commands/pristine_command.rb +64 -49
  269. data/lib/rubygems/commands/push_command.rb +16 -16
  270. data/lib/rubygems/commands/query_command.rb +9 -9
  271. data/lib/rubygems/commands/rdoc_command.rb +26 -25
  272. data/lib/rubygems/commands/search_command.rb +4 -4
  273. data/lib/rubygems/commands/server_command.rb +16 -79
  274. data/lib/rubygems/commands/setup_command.rb +172 -173
  275. data/lib/rubygems/commands/signin_command.rb +9 -9
  276. data/lib/rubygems/commands/signout_command.rb +7 -7
  277. data/lib/rubygems/commands/sources_command.rb +22 -22
  278. data/lib/rubygems/commands/specification_command.rb +18 -18
  279. data/lib/rubygems/commands/stale_command.rb +2 -2
  280. data/lib/rubygems/commands/uninstall_command.rb +43 -40
  281. data/lib/rubygems/commands/unpack_command.rb +13 -13
  282. data/lib/rubygems/commands/update_command.rb +61 -72
  283. data/lib/rubygems/commands/which_command.rb +7 -7
  284. data/lib/rubygems/commands/yank_command.rb +11 -11
  285. data/lib/rubygems/compatibility.rb +4 -2
  286. data/lib/rubygems/config_file.rb +58 -25
  287. data/lib/rubygems/core_ext/kernel_gem.rb +1 -6
  288. data/lib/rubygems/core_ext/kernel_require.rb +108 -115
  289. data/lib/rubygems/core_ext/kernel_warn.rb +33 -37
  290. data/lib/rubygems/core_ext/tcpsocket_init.rb +1 -1
  291. data/lib/rubygems/defaults.rb +32 -36
  292. data/lib/rubygems/dependency.rb +20 -17
  293. data/lib/rubygems/dependency_installer.rb +37 -37
  294. data/lib/rubygems/dependency_list.rb +7 -7
  295. data/lib/rubygems/deprecate.rb +55 -8
  296. data/lib/rubygems/doctor.rb +21 -21
  297. data/lib/rubygems/errors.rb +3 -6
  298. data/lib/rubygems/exceptions.rb +35 -7
  299. data/lib/rubygems/ext/build_error.rb +1 -1
  300. data/lib/rubygems/ext/builder.rb +51 -22
  301. data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +27 -0
  302. data/lib/rubygems/ext/cargo_builder.rb +360 -0
  303. data/lib/rubygems/ext/cmake_builder.rb +2 -2
  304. data/lib/rubygems/ext/configure_builder.rb +1 -1
  305. data/lib/rubygems/ext/ext_conf_builder.rb +35 -59
  306. data/lib/rubygems/ext/rake_builder.rb +3 -3
  307. data/lib/rubygems/ext.rb +7 -6
  308. data/lib/rubygems/gem_runner.rb +12 -16
  309. data/lib/rubygems/gemcutter_utilities.rb +60 -21
  310. data/lib/rubygems/indexer.rb +30 -28
  311. data/lib/rubygems/install_default_message.rb +2 -2
  312. data/lib/rubygems/install_message.rb +2 -2
  313. data/lib/rubygems/install_update_options.rb +70 -61
  314. data/lib/rubygems/installer.rb +135 -87
  315. data/lib/rubygems/installer_uninstaller_utils.rb +2 -2
  316. data/lib/rubygems/local_remote_options.rb +22 -24
  317. data/lib/rubygems/mock_gem_ui.rb +2 -2
  318. data/lib/rubygems/name_tuple.rb +6 -7
  319. data/lib/rubygems/optparse/.document +1 -0
  320. data/lib/rubygems/optparse/COPYING +56 -0
  321. data/lib/rubygems/optparse/lib/optionparser.rb +2 -0
  322. data/lib/rubygems/optparse/lib/optparse/ac.rb +54 -0
  323. data/lib/rubygems/optparse/lib/optparse/date.rb +18 -0
  324. data/lib/rubygems/optparse/lib/optparse/kwargs.rb +22 -0
  325. data/lib/rubygems/optparse/lib/optparse/shellwords.rb +7 -0
  326. data/lib/rubygems/optparse/lib/optparse/time.rb +11 -0
  327. data/lib/rubygems/optparse/lib/optparse/uri.rb +7 -0
  328. data/lib/rubygems/optparse/lib/optparse/version.rb +71 -0
  329. data/lib/rubygems/optparse/lib/optparse.rb +2308 -0
  330. data/lib/rubygems/optparse.rb +3 -0
  331. data/lib/rubygems/package/file_source.rb +2 -2
  332. data/lib/rubygems/package/old.rb +9 -9
  333. data/lib/rubygems/package/tar_header.rb +62 -62
  334. data/lib/rubygems/package/tar_reader/entry.rb +90 -9
  335. data/lib/rubygems/package/tar_reader.rb +1 -29
  336. data/lib/rubygems/package/tar_writer.rb +7 -7
  337. data/lib/rubygems/package.rb +77 -60
  338. data/lib/rubygems/package_task.rb +4 -4
  339. data/lib/rubygems/path_support.rb +1 -6
  340. data/lib/rubygems/platform.rb +94 -61
  341. data/lib/rubygems/psych_tree.rb +1 -1
  342. data/lib/rubygems/query_utils.rb +49 -51
  343. data/lib/rubygems/rdoc.rb +2 -2
  344. data/lib/rubygems/remote_fetcher.rb +27 -27
  345. data/lib/rubygems/request/connection_pools.rb +4 -4
  346. data/lib/rubygems/request/http_pool.rb +1 -1
  347. data/lib/rubygems/request.rb +24 -24
  348. data/lib/rubygems/request_set/gem_dependency_api.rb +122 -123
  349. data/lib/rubygems/request_set/lockfile/parser.rb +26 -26
  350. data/lib/rubygems/request_set/lockfile/tokenizer.rb +4 -4
  351. data/lib/rubygems/request_set/lockfile.rb +9 -9
  352. data/lib/rubygems/request_set.rb +18 -18
  353. data/lib/rubygems/requirement.rb +15 -15
  354. data/lib/rubygems/resolver/activation_request.rb +3 -3
  355. data/lib/rubygems/resolver/api_set.rb +4 -4
  356. data/lib/rubygems/resolver/api_specification.rb +6 -6
  357. data/lib/rubygems/resolver/best_set.rb +5 -5
  358. data/lib/rubygems/resolver/conflict.rb +10 -10
  359. data/lib/rubygems/resolver/dependency_request.rb +2 -2
  360. data/lib/rubygems/resolver/git_set.rb +2 -2
  361. data/lib/rubygems/resolver/git_specification.rb +6 -6
  362. data/lib/rubygems/resolver/index_set.rb +3 -3
  363. data/lib/rubygems/resolver/index_specification.rb +6 -5
  364. data/lib/rubygems/resolver/installed_specification.rb +4 -4
  365. data/lib/rubygems/resolver/installer_set.rb +21 -26
  366. data/lib/rubygems/resolver/local_specification.rb +2 -2
  367. data/lib/rubygems/resolver/lock_set.rb +4 -4
  368. data/lib/rubygems/resolver/lock_specification.rb +4 -4
  369. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +3 -3
  370. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +32 -26
  371. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  372. data/lib/rubygems/resolver/molinillo.rb +1 -1
  373. data/lib/rubygems/resolver/specification.rb +1 -1
  374. data/lib/rubygems/resolver/stats.rb +1 -1
  375. data/lib/rubygems/resolver/vendor_set.rb +1 -1
  376. data/lib/rubygems/resolver/vendor_specification.rb +3 -3
  377. data/lib/rubygems/resolver.rb +40 -40
  378. data/lib/rubygems/s3_uri_signer.rb +6 -6
  379. data/lib/rubygems/safe_yaml.rb +10 -10
  380. data/lib/rubygems/security/policies.rb +47 -47
  381. data/lib/rubygems/security/policy.rb +19 -21
  382. data/lib/rubygems/security/signer.rb +5 -5
  383. data/lib/rubygems/security/trust_dir.rb +4 -4
  384. data/lib/rubygems/security.rb +37 -43
  385. data/lib/rubygems/security_option.rb +7 -7
  386. data/lib/rubygems/source/git.rb +25 -24
  387. data/lib/rubygems/source/installed.rb +1 -1
  388. data/lib/rubygems/source/local.rb +2 -2
  389. data/lib/rubygems/source/specific_file.rb +1 -1
  390. data/lib/rubygems/source.rb +27 -32
  391. data/lib/rubygems/source_list.rb +5 -9
  392. data/lib/rubygems/spec_fetcher.rb +37 -37
  393. data/lib/rubygems/specification.rb +265 -211
  394. data/lib/rubygems/specification_policy.rb +49 -30
  395. data/lib/rubygems/stub_specification.rb +24 -27
  396. data/lib/rubygems/text.rb +22 -21
  397. data/lib/rubygems/tsort/.document +1 -0
  398. data/lib/rubygems/tsort/LICENSE.txt +22 -0
  399. data/lib/rubygems/tsort/lib/tsort.rb +452 -0
  400. data/lib/rubygems/tsort.rb +3 -0
  401. data/lib/rubygems/uninstaller.rb +29 -26
  402. data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
  403. data/lib/rubygems/update_suggestion.rb +69 -0
  404. data/lib/rubygems/uri.rb +45 -30
  405. data/lib/rubygems/uri_formatter.rb +1 -1
  406. data/lib/rubygems/user_interaction.rb +42 -28
  407. data/lib/rubygems/util/licenses.rb +4 -2
  408. data/lib/rubygems/util.rb +12 -16
  409. data/lib/rubygems/validator.rb +6 -6
  410. data/lib/rubygems/version.rb +28 -17
  411. data/lib/rubygems/version_option.rb +5 -5
  412. data/lib/rubygems.rb +129 -117
  413. data/rubygems-update.gemspec +3 -3
  414. data/setup.rb +11 -16
  415. data/test/rubygems/alternate_cert.pem +14 -14
  416. data/test/rubygems/alternate_cert_32.pem +15 -15
  417. data/test/rubygems/alternate_key.pem +25 -25
  418. data/test/rubygems/bundler_test_gem.rb +419 -0
  419. data/test/rubygems/child_cert.pem +15 -16
  420. data/test/rubygems/child_cert_32.pem +15 -16
  421. data/test/rubygems/child_key.pem +25 -25
  422. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  423. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  424. data/test/rubygems/encrypted_private_key.pem +26 -26
  425. data/test/rubygems/expired_cert.pem +15 -15
  426. data/test/rubygems/future_cert.pem +15 -15
  427. data/test/rubygems/future_cert_32.pem +15 -15
  428. data/test/rubygems/grandchild_cert.pem +15 -16
  429. data/test/rubygems/grandchild_cert_32.pem +15 -16
  430. data/test/rubygems/grandchild_key.pem +25 -25
  431. data/test/rubygems/helper.rb +237 -207
  432. data/test/rubygems/installer_test_case.rb +13 -13
  433. data/test/rubygems/invalid_issuer_cert.pem +16 -16
  434. data/test/rubygems/invalid_issuer_cert_32.pem +16 -16
  435. data/test/rubygems/invalid_key.pem +25 -25
  436. data/test/rubygems/invalid_signer_cert.pem +15 -15
  437. data/test/rubygems/invalid_signer_cert_32.pem +15 -15
  438. data/test/rubygems/invalidchild_cert.pem +15 -16
  439. data/test/rubygems/invalidchild_cert_32.pem +15 -16
  440. data/test/rubygems/invalidchild_key.pem +25 -25
  441. data/test/rubygems/package/tar_test_case.rb +52 -17
  442. data/test/rubygems/packages/Bluebie-legs-0.6.2.gem +0 -0
  443. data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
  444. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
  445. data/test/rubygems/private_key.pem +25 -25
  446. data/test/rubygems/public_cert.pem +16 -16
  447. data/test/rubygems/public_cert_32.pem +15 -15
  448. data/test/rubygems/public_key.pem +7 -7
  449. data/test/rubygems/rubygems_plugin.rb +2 -2
  450. data/test/rubygems/simple_gem.rb +1 -1
  451. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +4 -4
  452. data/test/rubygems/test_bundled_ca.rb +11 -11
  453. data/test/rubygems/test_config.rb +5 -5
  454. data/test/rubygems/test_deprecate.rb +3 -3
  455. data/test/rubygems/test_exit.rb +17 -0
  456. data/test/rubygems/test_gem.rb +367 -757
  457. data/test/rubygems/test_gem_available_set.rb +21 -21
  458. data/test/rubygems/test_gem_bundler_version_finder.rb +27 -47
  459. data/test/rubygems/test_gem_command.rb +45 -45
  460. data/test/rubygems/test_gem_command_manager.rb +124 -27
  461. data/test/rubygems/test_gem_commands_build_command.rb +73 -63
  462. data/test/rubygems/test_gem_commands_cert_command.rb +105 -107
  463. data/test/rubygems/test_gem_commands_check_command.rb +4 -4
  464. data/test/rubygems/test_gem_commands_cleanup_command.rb +40 -40
  465. data/test/rubygems/test_gem_commands_contents_command.rb +28 -28
  466. data/test/rubygems/test_gem_commands_dependency_command.rb +36 -36
  467. data/test/rubygems/test_gem_commands_environment_command.rb +38 -14
  468. data/test/rubygems/test_gem_commands_exec_command.rb +851 -0
  469. data/test/rubygems/test_gem_commands_fetch_command.rb +159 -26
  470. data/test/rubygems/test_gem_commands_generate_index_command.rb +7 -7
  471. data/test/rubygems/test_gem_commands_help_command.rb +13 -13
  472. data/test/rubygems/test_gem_commands_info_command.rb +28 -2
  473. data/test/rubygems/test_gem_commands_install_command.rb +200 -132
  474. data/test/rubygems/test_gem_commands_list_command.rb +4 -4
  475. data/test/rubygems/test_gem_commands_lock_command.rb +10 -10
  476. data/test/rubygems/test_gem_commands_mirror.rb +2 -2
  477. data/test/rubygems/test_gem_commands_open_command.rb +5 -5
  478. data/test/rubygems/test_gem_commands_outdated_command.rb +9 -9
  479. data/test/rubygems/test_gem_commands_owner_command.rb +126 -45
  480. data/test/rubygems/test_gem_commands_pristine_command.rb +141 -92
  481. data/test/rubygems/test_gem_commands_push_command.rb +85 -59
  482. data/test/rubygems/test_gem_commands_query_command.rb +73 -73
  483. data/test/rubygems/test_gem_commands_search_command.rb +2 -2
  484. data/test/rubygems/test_gem_commands_server_command.rb +6 -48
  485. data/test/rubygems/test_gem_commands_setup_command.rb +169 -92
  486. data/test/rubygems/test_gem_commands_signin_command.rb +154 -26
  487. data/test/rubygems/test_gem_commands_signout_command.rb +3 -3
  488. data/test/rubygems/test_gem_commands_sources_command.rb +74 -25
  489. data/test/rubygems/test_gem_commands_specification_command.rb +32 -32
  490. data/test/rubygems/test_gem_commands_stale_command.rb +4 -4
  491. data/test/rubygems/test_gem_commands_uninstall_command.rb +99 -82
  492. data/test/rubygems/test_gem_commands_unpack_command.rb +31 -31
  493. data/test/rubygems/test_gem_commands_update_command.rb +202 -91
  494. data/test/rubygems/test_gem_commands_which_command.rb +6 -6
  495. data/test/rubygems/test_gem_commands_yank_command.rb +43 -43
  496. data/test/rubygems/test_gem_config_file.rb +93 -81
  497. data/test/rubygems/test_gem_dependency.rb +78 -80
  498. data/test/rubygems/test_gem_dependency_installer.rb +165 -165
  499. data/test/rubygems/test_gem_dependency_list.rb +47 -47
  500. data/test/rubygems/test_gem_dependency_resolution_error.rb +4 -4
  501. data/test/rubygems/test_gem_doctor.rb +26 -26
  502. data/test/rubygems/test_gem_ext_builder.rb +60 -62
  503. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
  504. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +8 -0
  505. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.lock +233 -0
  506. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/Cargo.toml +10 -0
  507. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib/src/lib.rs +27 -0
  508. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/lib/custom_name.rb +1 -0
  509. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +1 -0
  510. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +247 -0
  511. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +10 -0
  512. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +8 -0
  513. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +51 -0
  514. data/test/rubygems/test_gem_ext_cargo_builder.rb +166 -0
  515. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +33 -0
  516. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +60 -0
  517. data/test/rubygems/test_gem_ext_cmake_builder.rb +17 -15
  518. data/test/rubygems/test_gem_ext_configure_builder.rb +13 -13
  519. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +53 -50
  520. data/test/rubygems/test_gem_ext_rake_builder.rb +15 -15
  521. data/test/rubygems/test_gem_gem_runner.rb +13 -8
  522. data/test/rubygems/test_gem_gemcutter_utilities.rb +71 -65
  523. data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -4
  524. data/test/rubygems/test_gem_indexer.rb +90 -67
  525. data/test/rubygems/test_gem_install_update_options.rb +18 -18
  526. data/test/rubygems/test_gem_installer.rb +511 -327
  527. data/test/rubygems/test_gem_local_remote_options.rb +10 -10
  528. data/test/rubygems/test_gem_name_tuple.rb +4 -4
  529. data/test/rubygems/test_gem_package.rb +246 -236
  530. data/test/rubygems/test_gem_package_old.rb +13 -13
  531. data/test/rubygems/test_gem_package_tar_header.rb +47 -47
  532. data/test/rubygems/test_gem_package_tar_reader.rb +55 -8
  533. data/test/rubygems/test_gem_package_tar_reader_entry.rb +161 -16
  534. data/test/rubygems/test_gem_package_tar_writer.rb +76 -76
  535. data/test/rubygems/test_gem_package_task.rb +18 -18
  536. data/test/rubygems/test_gem_path_support.rb +15 -19
  537. data/test/rubygems/test_gem_platform.rb +335 -214
  538. data/test/rubygems/test_gem_rdoc.rb +14 -14
  539. data/test/rubygems/test_gem_remote_fetcher.rb +169 -154
  540. data/test/rubygems/test_gem_request.rb +65 -59
  541. data/test/rubygems/test_gem_request_connection_pools.rb +29 -29
  542. data/test/rubygems/test_gem_request_set.rb +100 -100
  543. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +209 -211
  544. data/test/rubygems/test_gem_request_set_lockfile.rb +86 -86
  545. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +58 -58
  546. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +62 -62
  547. data/test/rubygems/test_gem_requirement.rb +47 -42
  548. data/test/rubygems/test_gem_resolver.rb +173 -106
  549. data/test/rubygems/test_gem_resolver_activation_request.rb +6 -6
  550. data/test/rubygems/test_gem_resolver_api_set.rb +33 -33
  551. data/test/rubygems/test_gem_resolver_api_specification.rb +47 -47
  552. data/test/rubygems/test_gem_resolver_best_set.rb +22 -22
  553. data/test/rubygems/test_gem_resolver_composed_set.rb +1 -1
  554. data/test/rubygems/test_gem_resolver_conflict.rb +12 -12
  555. data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -15
  556. data/test/rubygems/test_gem_resolver_git_set.rb +21 -21
  557. data/test/rubygems/test_gem_resolver_git_specification.rb +21 -21
  558. data/test/rubygems/test_gem_resolver_index_set.rb +12 -12
  559. data/test/rubygems/test_gem_resolver_index_specification.rb +16 -16
  560. data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -5
  561. data/test/rubygems/test_gem_resolver_installer_set.rb +79 -35
  562. data/test/rubygems/test_gem_resolver_local_specification.rb +7 -7
  563. data/test/rubygems/test_gem_resolver_lock_set.rb +12 -12
  564. data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -17
  565. data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -1
  566. data/test/rubygems/test_gem_resolver_specification.rb +8 -8
  567. data/test/rubygems/test_gem_resolver_vendor_set.rb +6 -6
  568. data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -10
  569. data/test/rubygems/test_gem_security.rb +69 -69
  570. data/test/rubygems/test_gem_security_policy.rb +72 -72
  571. data/test/rubygems/test_gem_security_signer.rb +34 -34
  572. data/test/rubygems/test_gem_security_trust_dir.rb +6 -6
  573. data/test/rubygems/test_gem_silent_ui.rb +38 -32
  574. data/test/rubygems/test_gem_source.rb +44 -44
  575. data/test/rubygems/test_gem_source_fetch_problem.rb +9 -9
  576. data/test/rubygems/test_gem_source_git.rb +69 -62
  577. data/test/rubygems/test_gem_source_installed.rb +16 -16
  578. data/test/rubygems/test_gem_source_list.rb +5 -5
  579. data/test/rubygems/test_gem_source_local.rb +14 -14
  580. data/test/rubygems/test_gem_source_lock.rb +31 -31
  581. data/test/rubygems/test_gem_source_specific_file.rb +17 -17
  582. data/test/rubygems/test_gem_source_subpath_problem.rb +7 -7
  583. data/test/rubygems/test_gem_source_vendor.rb +13 -13
  584. data/test/rubygems/test_gem_spec_fetcher.rb +72 -72
  585. data/test/rubygems/test_gem_specification.rb +560 -493
  586. data/test/rubygems/test_gem_stream_ui.rb +20 -20
  587. data/test/rubygems/test_gem_stub_specification.rb +32 -48
  588. data/test/rubygems/test_gem_text.rb +7 -1
  589. data/test/rubygems/test_gem_uninstaller.rb +113 -113
  590. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -3
  591. data/test/rubygems/test_gem_update_suggestion.rb +208 -0
  592. data/test/rubygems/test_gem_uri.rb +4 -4
  593. data/test/rubygems/test_gem_uri_formatter.rb +14 -14
  594. data/test/rubygems/test_gem_util.rb +23 -23
  595. data/test/rubygems/test_gem_validator.rb +8 -8
  596. data/test/rubygems/test_gem_version.rb +27 -16
  597. data/test/rubygems/test_gem_version_option.rb +15 -15
  598. data/test/rubygems/test_kernel.rb +42 -60
  599. data/test/rubygems/test_project_sanity.rb +2 -2
  600. data/test/rubygems/test_remote_fetch_error.rb +6 -6
  601. data/test/rubygems/test_require.rb +132 -174
  602. data/test/rubygems/test_rubygems.rb +42 -12
  603. data/test/rubygems/utilities.rb +59 -37
  604. data/test/rubygems/wrong_key_cert.pem +15 -15
  605. data/test/rubygems/wrong_key_cert_32.pem +15 -15
  606. data/test/test_changelog_generator.rb +1 -0
  607. metadata +97 -41
  608. data/bundler/lib/bundler/dep_proxy.rb +0 -55
  609. data/bundler/lib/bundler/gemdeps.rb +0 -29
  610. data/bundler/lib/bundler/psyched_yaml.rb +0 -22
  611. data/bundler/lib/bundler/templates/gems.rb +0 -8
  612. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -6
  613. data/bundler/lib/bundler/vendor/molinillo/LICENSE +0 -9
  614. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +0 -57
  615. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +0 -88
  616. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +0 -36
  617. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +0 -66
  618. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +0 -62
  619. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +0 -63
  620. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +0 -61
  621. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +0 -126
  622. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +0 -46
  623. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +0 -36
  624. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +0 -164
  625. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +0 -255
  626. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +0 -143
  627. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +0 -6
  628. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +0 -112
  629. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +0 -67
  630. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +0 -839
  631. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +0 -46
  632. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +0 -58
  633. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -11
  634. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +0 -154
  635. data/bundler/lib/bundler/version_ranges.rb +0 -122
  636. data/lib/rubygems/psych_additions.rb +0 -10
  637. data/lib/rubygems/server.rb +0 -882
  638. data/test/rubygems/bogussources.rb +0 -9
  639. data/test/rubygems/data/null-type.gemspec.rz +0 -0
  640. data/test/rubygems/test_gem_server.rb +0 -608
  641. /data/bundler/lib/bundler/templates/newgem/ext/newgem/{extconf.rb.tt → extconf-c.rb.tt} +0 -0
@@ -19,7 +19,7 @@ require_relative "bundler/build_metadata"
19
19
  #
20
20
  # Since Ruby 2.6, Bundler is a part of Ruby's standard library.
21
21
  #
22
- # Bunder is used by creating _gemfiles_ listing all the project dependencies
22
+ # Bundler is used by creating _gemfiles_ listing all the project dependencies
23
23
  # and (optionally) their versions and then using
24
24
  #
25
25
  # require 'bundler/setup'
@@ -39,9 +39,18 @@ module Bundler
39
39
  environment_preserver.replace_with_backup
40
40
  SUDO_MUTEX = Thread::Mutex.new
41
41
 
42
+ SAFE_MARSHAL_CLASSES = [Symbol, TrueClass, String, Array, Hash, Gem::Version, Gem::Specification].freeze
43
+ SAFE_MARSHAL_ERROR = "Unexpected class %s present in marshaled data. Only %s are allowed."
44
+ SAFE_MARSHAL_PROC = proc do |object|
45
+ object.tap do
46
+ unless SAFE_MARSHAL_CLASSES.include?(object.class)
47
+ raise TypeError, format(SAFE_MARSHAL_ERROR, object.class, SAFE_MARSHAL_CLASSES.join(", "))
48
+ end
49
+ end
50
+ end
51
+
42
52
  autoload :Definition, File.expand_path("bundler/definition", __dir__)
43
53
  autoload :Dependency, File.expand_path("bundler/dependency", __dir__)
44
- autoload :DepProxy, File.expand_path("bundler/dep_proxy", __dir__)
45
54
  autoload :Deprecate, File.expand_path("bundler/deprecate", __dir__)
46
55
  autoload :Digest, File.expand_path("bundler/digest", __dir__)
47
56
  autoload :Dsl, File.expand_path("bundler/dsl", __dir__)
@@ -58,7 +67,7 @@ module Bundler
58
67
  autoload :Installer, File.expand_path("bundler/installer", __dir__)
59
68
  autoload :LazySpecification, File.expand_path("bundler/lazy_specification", __dir__)
60
69
  autoload :LockfileParser, File.expand_path("bundler/lockfile_parser", __dir__)
61
- autoload :MatchPlatform, File.expand_path("bundler/match_platform", __dir__)
70
+ autoload :MatchRemoteMetadata, File.expand_path("bundler/match_remote_metadata", __dir__)
62
71
  autoload :ProcessLock, File.expand_path("bundler/process_lock", __dir__)
63
72
  autoload :RemoteSpecification, File.expand_path("bundler/remote_specification", __dir__)
64
73
  autoload :Resolver, File.expand_path("bundler/resolver", __dir__)
@@ -66,6 +75,7 @@ module Bundler
66
75
  autoload :RubyDsl, File.expand_path("bundler/ruby_dsl", __dir__)
67
76
  autoload :RubyVersion, File.expand_path("bundler/ruby_version", __dir__)
68
77
  autoload :Runtime, File.expand_path("bundler/runtime", __dir__)
78
+ autoload :SelfManager, File.expand_path("bundler/self_manager", __dir__)
69
79
  autoload :Settings, File.expand_path("bundler/settings", __dir__)
70
80
  autoload :SharedHelpers, File.expand_path("bundler/shared_helpers", __dir__)
71
81
  autoload :Source, File.expand_path("bundler/source", __dir__)
@@ -75,7 +85,7 @@ module Bundler
75
85
  autoload :StubSpecification, File.expand_path("bundler/stub_specification", __dir__)
76
86
  autoload :UI, File.expand_path("bundler/ui", __dir__)
77
87
  autoload :URICredentialsFilter, File.expand_path("bundler/uri_credentials_filter", __dir__)
78
- autoload :VersionRanges, File.expand_path("bundler/version_ranges", __dir__)
88
+ autoload :URINormalizer, File.expand_path("bundler/uri_normalizer", __dir__)
79
89
 
80
90
  class << self
81
91
  def configure
@@ -96,6 +106,17 @@ module Bundler
96
106
  @bundle_path ||= Pathname.new(configured_bundle_path.path).expand_path(root)
97
107
  end
98
108
 
109
+ def create_bundle_path
110
+ SharedHelpers.filesystem_access(bundle_path.to_s) do |p|
111
+ mkdir_p(p)
112
+ end unless bundle_path.exist?
113
+
114
+ @bundle_path = bundle_path.realpath
115
+ rescue Errno::EEXIST
116
+ raise PathError, "Could not install to path `#{bundle_path}` " \
117
+ "because a file already exists at that path. Either remove or rename the file so the directory can be created."
118
+ end
119
+
99
120
  def configured_bundle_path
100
121
  @configured_bundle_path ||= settings.path.tap(&:validate!)
101
122
  end
@@ -319,9 +340,9 @@ module Bundler
319
340
  FileUtils.remove_entry_secure(path) if path && File.exist?(path)
320
341
  rescue ArgumentError
321
342
  message = <<EOF
322
- It is a security vulnerability to allow your home directory to be world-writable, and bundler can not continue.
343
+ It is a security vulnerability to allow your home directory to be world-writable, and bundler cannot continue.
323
344
  You should probably consider fixing this issue by running `chmod o-w ~` on *nix.
324
- Please refer to https://ruby-doc.org/stdlib-2.1.2/libdoc/fileutils/rdoc/FileUtils.html#method-c-remove_entry_secure for details.
345
+ Please refer to https://ruby-doc.org/stdlib-3.1.2/libdoc/fileutils/rdoc/FileUtils.html#method-c-remove_entry_secure for details.
325
346
  EOF
326
347
  File.world_writable?(path) ? Bundler.ui.warn(message) : raise
327
348
  raise PathError, "Please fix the world-writable issue with your #{path} directory"
@@ -369,7 +390,7 @@ EOF
369
390
 
370
391
  if env.key?("RUBYLIB")
371
392
  rubylib = env["RUBYLIB"].split(File::PATH_SEPARATOR)
372
- rubylib.delete(File.expand_path("..", __FILE__))
393
+ rubylib.delete(__dir__)
373
394
  env["RUBYLIB"] = rubylib.join(File::PATH_SEPARATOR)
374
395
  end
375
396
 
@@ -443,7 +464,7 @@ EOF
443
464
  end
444
465
 
445
466
  def local_platform
446
- return Gem::Platform::RUBY if settings[:force_ruby_platform] || Gem.platforms == [Gem::Platform::RUBY]
467
+ return Gem::Platform::RUBY if settings[:force_ruby_platform]
447
468
  Gem::Platform.local
448
469
  end
449
470
 
@@ -476,41 +497,9 @@ EOF
476
497
  configured_bundle_path.use_system_gems?
477
498
  end
478
499
 
479
- def requires_sudo?
480
- return @requires_sudo if defined?(@requires_sudo_ran)
481
-
482
- sudo_present = which "sudo" if settings.allow_sudo?
483
-
484
- if sudo_present
485
- # the bundle path and subdirectories need to be writable for RubyGems
486
- # to be able to unpack and install gems without exploding
487
- path = bundle_path
488
- path = path.parent until path.exist?
489
-
490
- # bins are written to a different location on OS X
491
- bin_dir = Pathname.new(Bundler.system_bindir)
492
- bin_dir = bin_dir.parent until bin_dir.exist?
493
-
494
- # if any directory is not writable, we need sudo
495
- files = [path, bin_dir] | Dir[bundle_path.join("build_info/*").to_s] | Dir[bundle_path.join("*").to_s]
496
- unwritable_files = files.reject {|f| File.writable?(f) }
497
- sudo_needed = !unwritable_files.empty?
498
- if sudo_needed
499
- Bundler.ui.warn "Following files may not be writable, so sudo is needed:\n #{unwritable_files.map(&:to_s).sort.join("\n ")}"
500
- end
501
- end
502
-
503
- @requires_sudo_ran = true
504
- @requires_sudo = settings.allow_sudo? && sudo_present && sudo_needed
505
- end
506
-
507
500
  def mkdir_p(path, options = {})
508
- if requires_sudo? && !options[:no_sudo]
509
- sudo "mkdir -p '#{path}'" unless File.exist?(path)
510
- else
511
- SharedHelpers.filesystem_access(path, :write) do |p|
512
- FileUtils.mkdir_p(p)
513
- end
501
+ SharedHelpers.filesystem_access(path, :write) do |p|
502
+ FileUtils.mkdir_p(p)
514
503
  end
515
504
  end
516
505
 
@@ -518,7 +507,7 @@ EOF
518
507
  if File.file?(executable) && File.executable?(executable)
519
508
  executable
520
509
  elsif paths = ENV["PATH"]
521
- quote = '"'.freeze
510
+ quote = '"'
522
511
  paths.split(File::PATH_SEPARATOR).find do |path|
523
512
  path = path[1..-2] if path.start_with?(quote) && path.end_with?(quote)
524
513
  executable_path = File.expand_path(executable, path)
@@ -527,41 +516,14 @@ EOF
527
516
  end
528
517
  end
529
518
 
530
- def sudo(str)
531
- SUDO_MUTEX.synchronize do
532
- prompt = "\n\n" + <<-PROMPT.gsub(/^ {6}/, "").strip + " "
533
- Your user account isn't allowed to install to the system RubyGems.
534
- You can cancel this installation and run:
535
-
536
- bundle config set --local path 'vendor/bundle'
537
- bundle install
538
-
539
- to install the gems into ./vendor/bundle/, or you can enter your password
540
- and install the bundled gems to RubyGems using sudo.
541
-
542
- Password:
543
- PROMPT
544
-
545
- unless @prompted_for_sudo ||= system(%(sudo -k -p "#{prompt}" true))
546
- raise SudoNotPermittedError,
547
- "Bundler requires sudo access to install at the moment. " \
548
- "Try installing again, granting Bundler sudo access when prompted, or installing into a different path."
549
- end
550
-
551
- `sudo -p "#{prompt}" #{str}`
552
- end
553
- end
554
-
555
519
  def read_file(file)
556
520
  SharedHelpers.filesystem_access(file, :read) do
557
521
  File.open(file, "r:UTF-8", &:read)
558
522
  end
559
523
  end
560
524
 
561
- def load_marshal(data)
562
- Marshal.load(data)
563
- rescue StandardError => e
564
- raise MarshalError, "#{e.class}: #{e.message}"
525
+ def safe_load_marshal(data)
526
+ load_marshal(data, :marshal_proc => SAFE_MARSHAL_PROC)
565
527
  end
566
528
 
567
529
  def load_gemspec(file, validate = false)
@@ -597,7 +559,7 @@ EOF
597
559
 
598
560
  def git_present?
599
561
  return @git_present if defined?(@git_present)
600
- @git_present = Bundler.which("git") || Bundler.which("git.exe")
562
+ @git_present = Bundler.which("git#{RbConfig::CONFIG["EXEEXT"]}")
601
563
  end
602
564
 
603
565
  def feature_flag
@@ -643,15 +605,26 @@ EOF
643
605
  Bundler.rubygems.clear_paths
644
606
  end
645
607
 
608
+ def self_manager
609
+ @self_manager ||= begin
610
+ require_relative "bundler/self_manager"
611
+ Bundler::SelfManager.new
612
+ end
613
+ end
614
+
646
615
  private
647
616
 
617
+ def load_marshal(data, marshal_proc: nil)
618
+ Marshal.load(data, marshal_proc)
619
+ rescue TypeError => e
620
+ raise MarshalError, "#{e.class}: #{e.message}"
621
+ end
622
+
648
623
  def eval_yaml_gemspec(path, contents)
649
- require_relative "bundler/psyched_yaml"
624
+ Kernel.require "psych"
650
625
 
651
- # If the YAML is invalid, Syck raises an ArgumentError, and Psych
652
- # raises a Psych::SyntaxError. See psyched_yaml.rb for more info.
653
626
  Gem::Specification.from_yaml(contents)
654
- rescue YamlLibrarySyntaxError, ArgumentError, Gem::EndOfYAMLException, Gem::Exception
627
+ rescue ::Psych::SyntaxError, ArgumentError, Gem::EndOfYAMLException, Gem::Exception
655
628
  eval_gemspec(path, contents)
656
629
  end
657
630
 
@@ -1,5 +1 @@
1
1
  This directory exists to prevent rubygems-update from being used as real code.
2
-
3
- If you haven't, you probably want to run `update_rubygems`.
4
-
5
- You can gem uninstall rubygems-update after doing that.
@@ -26,7 +26,7 @@ class Gem::AvailableSet
26
26
  s = o.set
27
27
  when Array
28
28
  s = o.map do |sp,so|
29
- if !sp.kind_of?(Gem::Specification) or !so.kind_of?(Gem::Source)
29
+ if !sp.kind_of?(Gem::Specification) || !so.kind_of?(Gem::Source)
30
30
  raise TypeError, "Array must be in [[spec, source], ...] form"
31
31
  end
32
32
 
@@ -149,8 +149,8 @@ class Gem::AvailableSet
149
149
  @set.reject! do |t|
150
150
  # already locally installed
151
151
  Gem::Specification.any? do |installed_spec|
152
- dep.name == installed_spec.name and
153
- dep.requirement.satisfied_by? installed_spec.version
152
+ dep.name == installed_spec.name &&
153
+ dep.requirement.satisfied_by?(installed_spec.version)
154
154
  end
155
155
  end
156
156
 
@@ -47,7 +47,7 @@ class Gem::BasicSpecification
47
47
  # directory.
48
48
 
49
49
  def gem_build_complete_path # :nodoc:
50
- File.join extension_dir, 'gem.build_complete'
50
+ File.join extension_dir, "gem.build_complete"
51
51
  end
52
52
 
53
53
  ##
@@ -77,7 +77,7 @@ class Gem::BasicSpecification
77
77
 
78
78
  if Gem::Platform::RUBY == platform || Gem::Platform.local === platform
79
79
  warn "Ignoring #{full_name} because its extensions are not built. " +
80
- "Try: gem pristine #{name} --version #{version}"
80
+ "Try: gem pristine #{name} --version #{version}"
81
81
  end
82
82
 
83
83
  return false
@@ -103,7 +103,7 @@ class Gem::BasicSpecification
103
103
 
104
104
  def extensions_dir
105
105
  Gem.default_ext_dir_for(base_dir) ||
106
- File.join(base_dir, 'extensions', Gem::Platform.local.to_s,
106
+ File.join(base_dir, "extensions", Gem::Platform.local.to_s,
107
107
  Gem.extension_api_version)
108
108
  end
109
109
 
@@ -131,7 +131,7 @@ class Gem::BasicSpecification
131
131
  # default Ruby platform.
132
132
 
133
133
  def full_name
134
- if platform == Gem::Platform::RUBY or platform.nil?
134
+ if platform == Gem::Platform::RUBY || platform.nil?
135
135
  "#{name}-#{version}".dup.tap(&Gem::UNTAINT)
136
136
  else
137
137
  "#{name}-#{version}-#{platform}".dup.tap(&Gem::UNTAINT)
@@ -289,14 +289,14 @@ class Gem::BasicSpecification
289
289
 
290
290
  def lib_dirs_glob
291
291
  dirs = if self.raw_require_paths
292
- if self.raw_require_paths.size > 1
293
- "{#{self.raw_require_paths.join(',')}}"
294
- else
295
- self.raw_require_paths.first
296
- end
297
- else
298
- "lib" # default value for require_paths for bundler/inline
299
- end
292
+ if self.raw_require_paths.size > 1
293
+ "{#{self.raw_require_paths.join(',')}}"
294
+ else
295
+ self.raw_require_paths.first
296
+ end
297
+ else
298
+ "lib" # default value for require_paths for bundler/inline
299
+ end
300
300
 
301
301
  "#{self.full_gem_path}/#{dirs}".dup.tap(&Gem::UNTAINT)
302
302
  end
@@ -2,48 +2,18 @@
2
2
 
3
3
  module Gem::BundlerVersionFinder
4
4
  def self.bundler_version
5
- version, _ = bundler_version_with_reason
5
+ v = ENV["BUNDLER_VERSION"]
6
6
 
7
- return unless version
7
+ v ||= bundle_update_bundler_version
8
+ return if v == true
8
9
 
9
- Gem::Version.new(version)
10
- end
11
-
12
- def self.bundler_version_with_reason
13
- if v = ENV["BUNDLER_VERSION"]
14
- return [v, "`$BUNDLER_VERSION`"]
15
- end
16
- if v = bundle_update_bundler_version
17
- return if v == true
18
- return [v, "`bundle update --bundler`"]
19
- end
20
- v, lockfile = lockfile_version
21
- if v
22
- return [v, "your #{lockfile}"]
23
- end
24
- end
10
+ v ||= lockfile_version
11
+ return unless v
25
12
 
26
- def self.missing_version_message
27
- return unless vr = bundler_version_with_reason
28
- <<-EOS
29
- Could not find 'bundler' (#{vr.first}) required by #{vr.last}.
30
- To update to the latest version installed on your system, run `bundle update --bundler`.
31
- To install the missing version, run `gem install bundler:#{vr.first}`
32
- EOS
13
+ Gem::Version.new(v)
33
14
  end
34
15
 
35
- def self.compatible?(spec)
36
- return true unless spec.name == "bundler".freeze
37
- return true unless bundler_version = self.bundler_version
38
-
39
- spec.version.segments.first == bundler_version.segments.first
40
- end
41
-
42
- def self.filter!(specs)
43
- return unless bundler_version = self.bundler_version
44
-
45
- specs.reject! {|spec| spec.version.segments.first != bundler_version.segments.first }
46
-
16
+ def self.prioritize!(specs)
47
17
  exact_match_index = specs.find_index {|spec| spec.version == bundler_version }
48
18
  return unless exact_match_index
49
19
 
@@ -51,7 +21,7 @@ To install the missing version, run `gem install bundler:#{vr.first}`
51
21
  end
52
22
 
53
23
  def self.bundle_update_bundler_version
54
- return unless File.basename($0) == "bundle".freeze
24
+ return unless File.basename($0) == "bundle"
55
25
  return unless "update".start_with?(ARGV.first || " ")
56
26
  bundler_version = nil
57
27
  update_index = nil
@@ -68,12 +38,10 @@ To install the missing version, run `gem install bundler:#{vr.first}`
68
38
  private_class_method :bundle_update_bundler_version
69
39
 
70
40
  def self.lockfile_version
71
- return unless lockfile = lockfile_contents
72
- lockfile, contents = lockfile
73
- lockfile ||= "lockfile"
41
+ return unless contents = lockfile_contents
74
42
  regexp = /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/
75
43
  return unless contents =~ regexp
76
- [$1, lockfile]
44
+ $1
77
45
  end
78
46
  private_class_method :lockfile_version
79
47
 
@@ -97,13 +65,13 @@ To install the missing version, run `gem install bundler:#{vr.first}`
97
65
  return unless gemfile
98
66
 
99
67
  lockfile = case gemfile
100
- when "gems.rb" then "gems.locked"
101
- else "#{gemfile}.lock"
102
- end.dup.tap(&Gem::UNTAINT)
68
+ when "gems.rb" then "gems.locked"
69
+ else "#{gemfile}.lock"
70
+ end.dup.tap(&Gem::UNTAINT)
103
71
 
104
72
  return unless File.file?(lockfile)
105
73
 
106
- [lockfile, File.read(lockfile)]
74
+ File.read(lockfile)
107
75
  end
108
76
  private_class_method :lockfile_contents
109
77
  end
@@ -5,9 +5,9 @@
5
5
  # See LICENSE.txt for permissions.
6
6
  #++
7
7
 
8
- require 'optparse'
9
- require_relative 'requirement'
10
- require_relative 'user_interaction'
8
+ require_relative "optparse"
9
+ require_relative "requirement"
10
+ require_relative "user_interaction"
11
11
 
12
12
  ##
13
13
  # Base class for all Gem commands. When creating a new gem command, define
@@ -19,7 +19,7 @@ require_relative 'user_interaction'
19
19
  class Gem::Command
20
20
  include Gem::UserInteraction
21
21
 
22
- OptionParser.accept Symbol do |value|
22
+ Gem::OptionParser.accept Symbol do |value|
23
23
  value.to_sym
24
24
  end
25
25
 
@@ -76,7 +76,7 @@ class Gem::Command
76
76
  when Array
77
77
  @extra_args = value
78
78
  when String
79
- @extra_args = value.split(' ')
79
+ @extra_args = value.split(" ")
80
80
  end
81
81
  end
82
82
 
@@ -159,11 +159,11 @@ class Gem::Command
159
159
  gem = "'#{gem_name}' (#{version})"
160
160
  msg = String.new "Could not find a valid gem #{gem}"
161
161
 
162
- if errors and !errors.empty?
162
+ if errors && !errors.empty?
163
163
  msg << ", here is why:\n"
164
164
  errors.each {|x| msg << " #{x.wordy}\n" }
165
165
  else
166
- if required_by and gem != required_by
166
+ if required_by && gem != required_by
167
167
  msg << " (required by #{required_by}) in any repository"
168
168
  else
169
169
  msg << " in any repository"
@@ -186,7 +186,7 @@ class Gem::Command
186
186
  def get_all_gem_names
187
187
  args = options[:args]
188
188
 
189
- if args.nil? or args.empty?
189
+ if args.nil? || args.empty?
190
190
  raise Gem::CommandLineError,
191
191
  "Please specify at least one gem name (e.g. gem build GEMNAME)"
192
192
  end
@@ -201,11 +201,15 @@ class Gem::Command
201
201
  # respectively.
202
202
  def get_all_gem_names_and_versions
203
203
  get_all_gem_names.map do |name|
204
- if /\A(.*):(#{Gem::Requirement::PATTERN_RAW})\z/ =~ name
205
- [$1, $2]
206
- else
207
- [name]
208
- end
204
+ extract_gem_name_and_version(name)
205
+ end
206
+ end
207
+
208
+ def extract_gem_name_and_version(name) # :nodoc:
209
+ if /\A(.*):(#{Gem::Requirement::PATTERN_RAW})\z/ =~ name
210
+ [$1, $2]
211
+ else
212
+ [name]
209
213
  end
210
214
  end
211
215
 
@@ -216,7 +220,7 @@ class Gem::Command
216
220
  def get_one_gem_name
217
221
  args = options[:args]
218
222
 
219
- if args.nil? or args.empty?
223
+ if args.nil? || args.empty?
220
224
  raise Gem::CommandLineError,
221
225
  "Please specify a gem name on the command line (e.g. gem build GEMNAME)"
222
226
  end
@@ -344,7 +348,7 @@ class Gem::Command
344
348
  ##
345
349
  # Add a command-line option and handler to the command.
346
350
  #
347
- # See OptionParser#make_switch for an explanation of +opts+.
351
+ # See Gem::OptionParser#make_switch for an explanation of +opts+.
348
352
  #
349
353
  # +handler+ will be called with two values, the value of the argument and
350
354
  # the options hash.
@@ -398,10 +402,10 @@ class Gem::Command
398
402
  version_to_expire = deprecation["rg_version_to_expire"]
399
403
 
400
404
  deprecate_option_msg = if version_to_expire
401
- "The \"#{option}\" option has been deprecated and will be removed in Rubygems #{version_to_expire}."
402
- else
403
- "The \"#{option}\" option has been deprecated and will be removed in future versions of Rubygems."
404
- end
405
+ "The \"#{option}\" option has been deprecated and will be removed in Rubygems #{version_to_expire}."
406
+ else
407
+ "The \"#{option}\" option has been deprecated and will be removed in future versions of Rubygems."
408
+ end
405
409
 
406
410
  extra_msg = deprecation["extra_msg"]
407
411
 
@@ -540,7 +544,7 @@ class Gem::Command
540
544
  # command.
541
545
 
542
546
  def create_option_parser
543
- @parser = OptionParser.new
547
+ @parser = Gem::OptionParser.new
544
548
 
545
549
  add_parser_options
546
550
 
@@ -554,9 +558,9 @@ class Gem::Command
554
558
  end
555
559
 
556
560
  def configure_options(header, option_list)
557
- return if option_list.nil? or option_list.empty?
561
+ return if option_list.nil? || option_list.empty?
558
562
 
559
- header = header.to_s.empty? ? '' : "#{header} "
563
+ header = header.to_s.empty? ? "" : "#{header} "
560
564
  @parser.separator " #{header}Options:"
561
565
 
562
566
  option_list.each do |args, handler|
@@ -565,7 +569,7 @@ class Gem::Command
565
569
  end
566
570
  end
567
571
 
568
- @parser.separator ''
572
+ @parser.separator ""
569
573
  end
570
574
 
571
575
  ##
@@ -578,22 +582,22 @@ class Gem::Command
578
582
  # ----------------------------------------------------------------
579
583
  # Add the options common to all commands.
580
584
 
581
- add_common_option('-h', '--help',
582
- 'Get help on this command') do |value, options|
585
+ add_common_option("-h", "--help",
586
+ "Get help on this command") do |value, options|
583
587
  options[:help] = true
584
588
  end
585
589
 
586
- add_common_option('-V', '--[no-]verbose',
587
- 'Set the verbose level of output') do |value, options|
590
+ add_common_option("-V", "--[no-]verbose",
591
+ "Set the verbose level of output") do |value, options|
588
592
  # Set us to "really verbose" so the progress meter works
589
- if Gem.configuration.verbose and value
593
+ if Gem.configuration.verbose && value
590
594
  Gem.configuration.verbose = 1
591
595
  else
592
596
  Gem.configuration.verbose = value
593
597
  end
594
598
  end
595
599
 
596
- add_common_option('-q', '--quiet', 'Silence command progress meter') do |value, options|
600
+ add_common_option("-q", "--quiet", "Silence command progress meter") do |value, options|
597
601
  Gem.configuration.verbose = false
598
602
  end
599
603
 
@@ -606,31 +610,35 @@ class Gem::Command
606
610
  # commands. Both options are actually handled before the other
607
611
  # options get parsed.
608
612
 
609
- add_common_option('--config-file FILE',
610
- 'Use this config file instead of default') do
613
+ add_common_option("--config-file FILE",
614
+ "Use this config file instead of default") do
611
615
  end
612
616
 
613
- add_common_option('--backtrace',
614
- 'Show stack backtrace on errors') do
617
+ add_common_option("--backtrace",
618
+ "Show stack backtrace on errors") do
615
619
  end
616
620
 
617
- add_common_option('--debug',
618
- 'Turn on Ruby debugging') do
621
+ add_common_option("--debug",
622
+ "Turn on Ruby debugging") do
619
623
  end
620
624
 
621
- add_common_option('--norc',
622
- 'Avoid loading any .gemrc file') do
625
+ add_common_option("--norc",
626
+ "Avoid loading any .gemrc file") do
623
627
  end
624
628
 
625
629
  # :stopdoc:
626
630
 
627
- HELP = <<-HELP.freeze
631
+ HELP = <<-HELP
628
632
  RubyGems is a package manager for Ruby.
629
633
 
630
634
  Usage:
631
635
  gem -h/--help
632
636
  gem -v/--version
633
- gem command [arguments...] [options...]
637
+ gem [global options...] command [arguments...] [options...]
638
+
639
+ Global options:
640
+ -C PATH run as if gem was started in <PATH>
641
+ instead of the current working directory
634
642
 
635
643
  Examples:
636
644
  gem install rake