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
@@ -5,13 +5,12 @@
5
5
  # See LICENSE.txt for permissions.
6
6
  #++
7
7
 
8
- require_relative 'command'
9
- require_relative 'installer_uninstaller_utils'
10
- require_relative 'exceptions'
11
- require_relative 'deprecate'
12
- require_relative 'package'
13
- require_relative 'ext'
14
- require_relative 'user_interaction'
8
+ require_relative "installer_uninstaller_utils"
9
+ require_relative "exceptions"
10
+ require_relative "deprecate"
11
+ require_relative "package"
12
+ require_relative "ext"
13
+ require_relative "user_interaction"
15
14
 
16
15
  ##
17
16
  # The installer installs the files contained in the .gem into the Gem.home.
@@ -68,19 +67,28 @@ class Gem::Installer
68
67
 
69
68
  @path_warning = false
70
69
 
71
- @install_lock = Thread::Mutex.new
72
-
73
70
  class << self
74
- ##
75
- # True if we've warned about PATH not including Gem.bindir
71
+ #
72
+ # Changes in rubygems to lazily loading `rubygems/command` (in order to
73
+ # lazily load `optparse` as a side effect) affect bundler's custom installer
74
+ # which uses `Gem::Command` without requiring it (up until bundler 2.2.29).
75
+ # This hook is to compensate for that missing require.
76
+ #
77
+ # TODO: Remove when rubygems no longer supports running on bundler older
78
+ # than 2.2.29.
76
79
 
77
- attr_accessor :path_warning
80
+ def inherited(klass)
81
+ if klass.name == "Bundler::RubyGemsGemInstaller"
82
+ require "rubygems/command"
83
+ end
84
+
85
+ super(klass)
86
+ end
78
87
 
79
88
  ##
80
- # Certain aspects of the install process are not thread-safe. This lock is
81
- # used to allow multiple threads to install Gems at the same time.
89
+ # True if we've warned about PATH not including Gem.bindir
82
90
 
83
- attr_reader :install_lock
91
+ attr_accessor :path_warning
84
92
 
85
93
  ##
86
94
  # Overrides the executable format.
@@ -117,14 +125,14 @@ class Gem::Installer
117
125
  @spec = spec
118
126
  end
119
127
 
120
- def extract_files(destination_dir, pattern = '*')
128
+ def extract_files(destination_dir, pattern = "*")
121
129
  FileUtils.mkdir_p destination_dir
122
130
 
123
131
  spec.files.each do |file|
124
132
  file = File.join destination_dir, file
125
133
  next if File.exist? file
126
134
  FileUtils.mkdir_p File.dirname(file)
127
- File.open file, 'w' do |fp|
135
+ File.open file, "w" do |fp|
128
136
  fp.puts "# #{file}"
129
137
  end
130
138
  end
@@ -169,7 +177,7 @@ class Gem::Installer
169
177
  # :post_install_message:: Print gem post install message if true
170
178
 
171
179
  def initialize(package, options={})
172
- require 'fileutils'
180
+ require "fileutils"
173
181
 
174
182
  @options = options
175
183
  @package = package
@@ -193,8 +201,8 @@ class Gem::Installer
193
201
  #
194
202
  # If +@force+ is set +filename+ is overwritten.
195
203
  #
196
- # If +filename+ exists and is a RubyGems wrapper for different gem the user
197
- # is consulted.
204
+ # If +filename+ exists and it is a RubyGems wrapper for a different gem, then
205
+ # the user is consulted.
198
206
  #
199
207
  # If +filename+ exists and +@bin_dir+ is Gem.default_bindir (/usr/local) the
200
208
  # user is consulted.
@@ -211,13 +219,23 @@ class Gem::Installer
211
219
  ruby_executable = false
212
220
  existing = nil
213
221
 
214
- File.open generated_bin, 'rb' do |io|
215
- next unless io.gets =~ /^#!/ # shebang
222
+ File.open generated_bin, "rb" do |io|
223
+ line = io.gets
224
+ shebang = /^#!.*ruby/
225
+
226
+ if load_relative_enabled?
227
+ until line.nil? || line =~ shebang do
228
+ line = io.gets
229
+ end
230
+ end
231
+
232
+ next unless line =~ shebang
233
+
216
234
  io.gets # blankline
217
235
 
218
236
  # TODO detect a specially formatted comment instead of trying
219
- # to run a regexp against Ruby code.
220
- next unless io.gets =~ /This file was generated by RubyGems/
237
+ # to find a string inside Ruby code.
238
+ next unless io.gets.to_s.include?("This file was generated by RubyGems")
221
239
 
222
240
  ruby_executable = true
223
241
  existing = io.read.slice(%r{
@@ -233,12 +251,12 @@ class Gem::Installer
233
251
  return if spec.name == existing
234
252
 
235
253
  # somebody has written to RubyGems' directory, overwrite, too bad
236
- return if Gem.default_bindir != @bin_dir and not ruby_executable
254
+ return if Gem.default_bindir != @bin_dir && !ruby_executable
237
255
 
238
256
  question = "#{spec.name}'s executable \"#{filename}\" conflicts with ".dup
239
257
 
240
258
  if ruby_executable
241
- question << (existing || 'an unknown executable')
259
+ question << (existing || "an unknown executable")
242
260
 
243
261
  return if ask_yes_no "#{question}\nOverwrite the executable?", false
244
262
 
@@ -267,8 +285,6 @@ class Gem::Installer
267
285
 
268
286
  def spec
269
287
  @package.spec
270
- rescue Gem::Package::Error => e
271
- raise Gem::InstallError, "invalid gem: #{e.message}"
272
288
  end
273
289
 
274
290
  ##
@@ -285,8 +301,6 @@ class Gem::Installer
285
301
  def install
286
302
  pre_install_checks
287
303
 
288
- FileUtils.rm_f File.join gem_home, 'specifications', spec.spec_name
289
-
290
304
  run_pre_install_hooks
291
305
 
292
306
  # Set loaded_from to ensure extension_dir is correct
@@ -326,7 +340,7 @@ class Gem::Installer
326
340
 
327
341
  say spec.post_install_message if options[:post_install_message] && !spec.post_install_message.nil?
328
342
 
329
- Gem::Installer.install_lock.synchronize { Gem::Specification.reset }
343
+ Gem::Specification.add_spec(spec)
330
344
 
331
345
  run_post_install_hooks
332
346
 
@@ -404,10 +418,10 @@ class Gem::Installer
404
418
  # True if the gems in the system satisfy +dependency+.
405
419
 
406
420
  def installation_satisfies_dependency?(dependency)
407
- return true if @options[:development] and dependency.type == :development
421
+ return true if @options[:development] && dependency.type == :development
408
422
  return true if installed_specs.detect {|s| dependency.matches_spec? s }
409
423
  return false if @only_install_dir
410
- not dependency.matching_specs.empty?
424
+ !dependency.matching_specs.empty?
411
425
  end
412
426
 
413
427
  ##
@@ -440,13 +454,9 @@ class Gem::Installer
440
454
  # specifications directory.
441
455
 
442
456
  def write_spec
443
- File.open spec_file, 'w' do |file|
444
- spec.installed_by_version = Gem.rubygems_version
445
-
446
- file.puts spec.to_ruby_for_cache
457
+ spec.installed_by_version = Gem.rubygems_version
447
458
 
448
- file.fsync rescue nil # for filesystems without fsync(2)
449
- end
459
+ Gem.write_binary(spec_file, spec.to_ruby_for_cache)
450
460
  end
451
461
 
452
462
  ##
@@ -454,9 +464,7 @@ class Gem::Installer
454
464
  # specifications/default directory.
455
465
 
456
466
  def write_default_spec
457
- File.open(default_spec_file, "w") do |file|
458
- file.puts spec.to_ruby
459
- end
467
+ Gem.write_binary(default_spec_file, spec.to_ruby)
460
468
  end
461
469
 
462
470
  ##
@@ -466,7 +474,7 @@ class Gem::Installer
466
474
  if Gem.win_platform?
467
475
  script_name = formatted_program_filename(filename) + ".bat"
468
476
  script_path = File.join bindir, File.basename(script_name)
469
- File.open script_path, 'w' do |file|
477
+ File.open script_path, "w" do |file|
470
478
  file.puts windows_stub_script(bindir, filename)
471
479
  end
472
480
 
@@ -475,28 +483,20 @@ class Gem::Installer
475
483
  end
476
484
 
477
485
  def generate_bin # :nodoc:
478
- return if spec.executables.nil? or spec.executables.empty?
486
+ return if spec.executables.nil? || spec.executables.empty?
479
487
 
480
488
  ensure_writable_dir @bin_dir
481
489
 
482
490
  spec.executables.each do |filename|
483
491
  filename.tap(&Gem::UNTAINT)
484
492
  bin_path = File.join gem_dir, spec.bindir, filename
485
-
486
- unless File.exist? bin_path
487
- if File.symlink? bin_path
488
- alert_warning "`#{bin_path}` is dangling symlink pointing to `#{File.readlink bin_path}`"
489
- else
490
- alert_warning "`#{bin_path}` does not exist, maybe `gem pristine #{spec.name}` will fix it?"
491
- end
492
- next
493
- end
493
+ next unless File.exist? bin_path
494
494
 
495
495
  mode = File.stat(bin_path).mode
496
496
  dir_mode = options[:prog_mode] || (mode | 0111)
497
497
 
498
498
  unless dir_mode == mode
499
- require 'fileutils'
499
+ require "fileutils"
500
500
  FileUtils.chmod dir_mode, bin_path
501
501
  end
502
502
 
@@ -511,7 +511,7 @@ class Gem::Installer
511
511
  end
512
512
 
513
513
  def generate_plugins # :nodoc:
514
- latest = Gem::Installer.install_lock.synchronize { Gem::Specification.latest_spec_for(spec.name) }
514
+ latest = Gem::Specification.latest_spec_for(spec.name)
515
515
  return if latest && latest.version > spec.version
516
516
 
517
517
  ensure_writable_dir @plugins_dir
@@ -533,10 +533,10 @@ class Gem::Installer
533
533
  def generate_bin_script(filename, bindir)
534
534
  bin_script_path = File.join bindir, formatted_program_filename(filename)
535
535
 
536
- require 'fileutils'
536
+ require "fileutils"
537
537
  FileUtils.rm_f bin_script_path # prior install may have been --no-wrappers
538
538
 
539
- File.open bin_script_path, 'wb', 0755 do |file|
539
+ File.open bin_script_path, "wb", 0755 do |file|
540
540
  file.print app_script_text(filename)
541
541
  file.chmod(options[:prog_mode] || 0755)
542
542
  end
@@ -557,7 +557,7 @@ class Gem::Installer
557
557
  if File.exist? dst
558
558
  if File.symlink? dst
559
559
  link = File.readlink(dst).split File::SEPARATOR
560
- cur_version = Gem::Version.create(link[-3].sub(/^.*-/, ''))
560
+ cur_version = Gem::Version.create(link[-3].sub(/^.*-/, ""))
561
561
  return if spec.version < cur_version
562
562
  end
563
563
  File.unlink dst
@@ -585,7 +585,6 @@ class Gem::Installer
585
585
  #
586
586
 
587
587
  def shebang(bin_file_name)
588
- ruby_name = RbConfig::CONFIG['ruby_install_name'] if @env_shebang
589
588
  path = File.join gem_dir, spec.bindir, bin_file_name
590
589
  first_line = File.open(path, "rb") {|file| file.gets } || ""
591
590
 
@@ -598,7 +597,7 @@ class Gem::Installer
598
597
 
599
598
  if which = Gem.configuration[:custom_shebang]
600
599
  # replace bin_file_name with "ruby" to avoid endless loops
601
- which = which.gsub(/ #{bin_file_name}$/," #{RbConfig::CONFIG['ruby_install_name']}")
600
+ which = which.gsub(/ #{bin_file_name}$/," #{ruby_install_name}")
602
601
 
603
602
  which = which.gsub(/\$(\w+)/) do
604
603
  case $1
@@ -614,14 +613,12 @@ class Gem::Installer
614
613
  end
615
614
 
616
615
  "#!#{which}"
617
- elsif not ruby_name
618
- "#!#{Gem.ruby}#{opts}"
619
- elsif opts
620
- "#!/bin/sh\n'exec' #{ruby_name.dump} '-x' \"$0\" \"$@\"\n#{shebang}"
621
- else
616
+ elsif @env_shebang
622
617
  # Create a plain shebang line.
623
618
  @env_path ||= ENV_PATHS.find {|env_path| File.executable? env_path }
624
- "#!#{@env_path} #{ruby_name}"
619
+ "#!#{@env_path} #{ruby_install_name}"
620
+ else
621
+ "#{bash_prolog_script}#!#{Gem.ruby}#{opts}"
625
622
  end
626
623
  end
627
624
 
@@ -652,9 +649,9 @@ class Gem::Installer
652
649
 
653
650
  def process_options # :nodoc:
654
651
  @options = {
655
- :bin_dir => nil,
656
- :env_shebang => false,
657
- :force => false,
652
+ :bin_dir => nil,
653
+ :env_shebang => false,
654
+ :force => false,
658
655
  :only_install_dir => false,
659
656
  :post_install_message => true,
660
657
  }.merge options
@@ -676,12 +673,12 @@ class Gem::Installer
676
673
  @development = options[:development]
677
674
  @build_root = options[:build_root]
678
675
 
679
- @build_args = options[:build_args] || Gem::Command.build_args
676
+ @build_args = options[:build_args]
680
677
 
681
678
  unless @build_root.nil?
682
- @bin_dir = File.join(@build_root, @bin_dir.gsub(/^[a-zA-Z]:/, ''))
683
- @gem_home = File.join(@build_root, @gem_home.gsub(/^[a-zA-Z]:/, ''))
684
- @plugins_dir = File.join(@build_root, @plugins_dir.gsub(/^[a-zA-Z]:/, ''))
679
+ @bin_dir = File.join(@build_root, @bin_dir.gsub(/^[a-zA-Z]:/, ""))
680
+ @gem_home = File.join(@build_root, @gem_home.gsub(/^[a-zA-Z]:/, ""))
681
+ @plugins_dir = File.join(@build_root, @plugins_dir.gsub(/^[a-zA-Z]:/, ""))
685
682
  alert_warning "You build with buildroot.\n Build root: #{@build_root}\n Bin dir: #{@bin_dir}\n Gem home: #{@gem_home}\n Plugins dir: #{@plugins_dir}"
686
683
  end
687
684
  end
@@ -692,7 +689,7 @@ class Gem::Installer
692
689
  user_bin_dir = @bin_dir || Gem.bindir(gem_home)
693
690
  user_bin_dir = user_bin_dir.tr(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
694
691
 
695
- path = ENV['PATH']
692
+ path = ENV["PATH"]
696
693
  path = path.tr(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
697
694
 
698
695
  if Gem.win_platform?
@@ -703,7 +700,7 @@ class Gem::Installer
703
700
  path = path.split(File::PATH_SEPARATOR)
704
701
 
705
702
  unless path.include? user_bin_dir
706
- unless !Gem.win_platform? && (path.include? user_bin_dir.sub(ENV['HOME'], '~'))
703
+ unless !Gem.win_platform? && (path.include? user_bin_dir.sub(ENV["HOME"], "~"))
707
704
  alert_warning "You don't have #{user_bin_dir} in your PATH,\n\t gem executables will not run."
708
705
  self.class.path_warning = true
709
706
  end
@@ -720,11 +717,11 @@ class Gem::Installer
720
717
  raise Gem::InstallError, "#{spec} has an invalid name"
721
718
  end
722
719
 
723
- if spec.raw_require_paths.any?{|path| path =~ /\R/ }
720
+ if spec.raw_require_paths.any? {|path| path =~ /\R/ }
724
721
  raise Gem::InstallError, "#{spec} has an invalid require_paths"
725
722
  end
726
723
 
727
- if spec.extensions.any?{|ext| ext =~ /\R/ }
724
+ if spec.extensions.any? {|ext| ext =~ /\R/ }
728
725
  raise Gem::InstallError, "#{spec} has an invalid extensions"
729
726
  end
730
727
 
@@ -768,7 +765,7 @@ str = ARGV.first
768
765
  if str
769
766
  str = str.b[/\\A_(.*)_\\z/, 1]
770
767
  if str and Gem::Version.correct?(str)
771
- version = str
768
+ #{explicit_version_requirement(spec.name)}
772
769
  ARGV.shift
773
770
  end
774
771
  end
@@ -783,7 +780,7 @@ TEXT
783
780
  end
784
781
 
785
782
  def gemdeps_load(name)
786
- return '' if name == "bundler"
783
+ return "" if name == "bundler"
787
784
 
788
785
  <<-TEXT
789
786
 
@@ -791,11 +788,20 @@ Gem.use_gemdeps
791
788
  TEXT
792
789
  end
793
790
 
791
+ def explicit_version_requirement(name)
792
+ code = "version = str"
793
+ return code unless name == "bundler"
794
+
795
+ code += <<-TEXT
796
+
797
+ ENV['BUNDLER_VERSION'] = str
798
+ TEXT
799
+ end
800
+
794
801
  ##
795
802
  # return the stub script text used to launch the true Ruby script
796
803
 
797
804
  def windows_stub_script(bindir, bin_file_name)
798
- rb_config = RbConfig::CONFIG
799
805
  rb_topdir = RbConfig::TOPDIR || File.dirname(rb_config["bindir"])
800
806
 
801
807
  # get ruby executable file name from RbConfig
@@ -810,7 +816,7 @@ TEXT
810
816
  TEXT
811
817
  elsif bindir.downcase.start_with? rb_topdir.downcase
812
818
  # stub within ruby folder, but not standard bin. Portable
813
- require 'pathname'
819
+ require "pathname"
814
820
  from = Pathname.new bindir
815
821
  to = Pathname.new "#{rb_topdir}/bin"
816
822
  rel = to.relative_path_from from
@@ -832,7 +838,7 @@ TEXT
832
838
  # configure scripts and rakefiles or mkrf_conf files.
833
839
 
834
840
  def build_extensions
835
- builder = Gem::Ext::Builder.new spec, @build_args
841
+ builder = Gem::Ext::Builder.new spec, build_args
836
842
 
837
843
  builder.build_extensions
838
844
  end
@@ -919,17 +925,17 @@ TEXT
919
925
  # extensions.
920
926
 
921
927
  def write_build_info_file
922
- return if @build_args.empty?
928
+ return if build_args.empty?
923
929
 
924
- build_info_dir = File.join gem_home, 'build_info'
930
+ build_info_dir = File.join gem_home, "build_info"
925
931
 
926
932
  dir_mode = options[:dir_mode]
927
933
  FileUtils.mkdir_p build_info_dir, :mode => dir_mode && 0755
928
934
 
929
935
  build_info_file = File.join build_info_dir, "#{spec.full_name}.info"
930
936
 
931
- File.open build_info_file, 'w' do |io|
932
- @build_args.each do |arg|
937
+ File.open build_info_file, "w" do |io|
938
+ build_args.each do |arg|
933
939
  io.puts arg
934
940
  end
935
941
  end
@@ -941,7 +947,7 @@ TEXT
941
947
  # Writes the .gem file to the cache directory
942
948
 
943
949
  def write_cache_file
944
- cache_file = File.join gem_home, 'cache', spec.file_name
950
+ cache_file = File.join gem_home, "cache", spec.file_name
945
951
  @package.copy_to cache_file
946
952
  end
947
953
 
@@ -954,4 +960,46 @@ TEXT
954
960
 
955
961
  raise Gem::FilePermissionError.new(dir) unless File.writable? dir
956
962
  end
963
+
964
+ private
965
+
966
+ def build_args
967
+ @build_args ||= begin
968
+ require_relative "command"
969
+ Gem::Command.build_args
970
+ end
971
+ end
972
+
973
+ def rb_config
974
+ RbConfig::CONFIG
975
+ end
976
+
977
+ def ruby_install_name
978
+ rb_config["ruby_install_name"]
979
+ end
980
+
981
+ def load_relative_enabled?
982
+ rb_config["LIBRUBY_RELATIVE"] == "yes"
983
+ end
984
+
985
+ def bash_prolog_script
986
+ if load_relative_enabled?
987
+ script = +<<~EOS
988
+ bindir="${0%/*}"
989
+ EOS
990
+
991
+ script << %Q(exec "$bindir/#{ruby_install_name}" "-x" "$0" "$@"\n)
992
+
993
+ <<~EOS
994
+ #!/bin/sh
995
+ # -*- ruby -*-
996
+ _=_\\
997
+ =begin
998
+ #{script.chomp}
999
+ =end
1000
+ EOS
1001
+ else
1002
+ ""
1003
+ end
1004
+ end
957
1005
  end
@@ -9,12 +9,12 @@ module Gem::InstallerUninstallerUtils
9
9
  plugins = spec.plugins
10
10
  return if plugins.empty?
11
11
 
12
- require 'pathname'
12
+ require "pathname"
13
13
 
14
14
  spec.plugins.each do |plugin|
15
15
  plugin_script_path = File.join plugins_dir, "#{spec.name}_plugin#{File.extname(plugin)}"
16
16
 
17
- File.open plugin_script_path, 'wb' do |file|
17
+ File.open plugin_script_path, "wb" do |file|
18
18
  file.puts "require_relative '#{Pathname.new(plugin).relative_path_from(Pathname.new(plugins_dir))}'"
19
19
  end
20
20
 
@@ -5,8 +5,8 @@
5
5
  # See LICENSE.txt for permissions.
6
6
  #++
7
7
 
8
- require 'uri'
9
- require_relative '../rubygems'
8
+ require "uri"
9
+ require_relative "../rubygems"
10
10
 
11
11
  ##
12
12
  # Mixin methods for local and remote Gem::Command options.
@@ -14,19 +14,19 @@ require_relative '../rubygems'
14
14
  module Gem::LocalRemoteOptions
15
15
 
16
16
  ##
17
- # Allows OptionParser to handle HTTP URIs.
17
+ # Allows Gem::OptionParser to handle HTTP URIs.
18
18
 
19
19
  def accept_uri_http
20
- OptionParser.accept URI::HTTP do |value|
20
+ Gem::OptionParser.accept URI::HTTP do |value|
21
21
  begin
22
22
  uri = URI.parse value
23
23
  rescue URI::InvalidURIError
24
- raise OptionParser::InvalidArgument, value
24
+ raise Gem::OptionParser::InvalidArgument, value
25
25
  end
26
26
 
27
27
  valid_uri_schemes = ["http", "https", "file", "s3"]
28
28
  unless valid_uri_schemes.include?(uri.scheme)
29
- msg = "Invalid uri scheme for #{value}\nPreface URLs with one of #{valid_uri_schemes.map{|s| "#{s}://" }}"
29
+ msg = "Invalid uri scheme for #{value}\nPreface URLs with one of #{valid_uri_schemes.map {|s| "#{s}://" }}"
30
30
  raise ArgumentError, msg
31
31
  end
32
32
 
@@ -38,18 +38,18 @@ module Gem::LocalRemoteOptions
38
38
  # Add local/remote options to the command line parser.
39
39
 
40
40
  def add_local_remote_options
41
- add_option(:"Local/Remote", '-l', '--local',
42
- 'Restrict operations to the LOCAL domain') do |value, options|
41
+ add_option(:"Local/Remote", "-l", "--local",
42
+ "Restrict operations to the LOCAL domain") do |value, options|
43
43
  options[:domain] = :local
44
44
  end
45
45
 
46
- add_option(:"Local/Remote", '-r', '--remote',
47
- 'Restrict operations to the REMOTE domain') do |value, options|
46
+ add_option(:"Local/Remote", "-r", "--remote",
47
+ "Restrict operations to the REMOTE domain") do |value, options|
48
48
  options[:domain] = :remote
49
49
  end
50
50
 
51
- add_option(:"Local/Remote", '-b', '--both',
52
- 'Allow LOCAL and REMOTE operations') do |value, options|
51
+ add_option(:"Local/Remote", "-b", "--both",
52
+ "Allow LOCAL and REMOTE operations") do |value, options|
53
53
  options[:domain] = :both
54
54
  end
55
55
 
@@ -64,7 +64,7 @@ module Gem::LocalRemoteOptions
64
64
  # Add the --bulk-threshold option
65
65
 
66
66
  def add_bulk_threshold_option
67
- add_option(:"Local/Remote", '-B', '--bulk-threshold COUNT',
67
+ add_option(:"Local/Remote", "-B", "--bulk-threshold COUNT",
68
68
  "Threshold for switching to bulk",
69
69
  "synchronization (default #{Gem.configuration.bulk_threshold})") do
70
70
  |value, options|
@@ -76,9 +76,8 @@ module Gem::LocalRemoteOptions
76
76
  # Add the --clear-sources option
77
77
 
78
78
  def add_clear_sources_option
79
- add_option(:"Local/Remote", '--clear-sources',
80
- 'Clear the gem sources') do |value, options|
81
-
79
+ add_option(:"Local/Remote", "--clear-sources",
80
+ "Clear the gem sources") do |value, options|
82
81
  Gem.sources = nil
83
82
  options[:sources_cleared] = true
84
83
  end
@@ -90,8 +89,8 @@ module Gem::LocalRemoteOptions
90
89
  def add_proxy_option
91
90
  accept_uri_http
92
91
 
93
- add_option(:"Local/Remote", '-p', '--[no-]http-proxy [URL]', URI::HTTP,
94
- 'Use HTTP proxy for remote operations') do |value, options|
92
+ add_option(:"Local/Remote", "-p", "--[no-]http-proxy [URL]", URI::HTTP,
93
+ "Use HTTP proxy for remote operations") do |value, options|
95
94
  options[:http_proxy] = (value == false) ? :no_proxy : value
96
95
  Gem.configuration[:http_proxy] = options[:http_proxy]
97
96
  end
@@ -103,10 +102,9 @@ module Gem::LocalRemoteOptions
103
102
  def add_source_option
104
103
  accept_uri_http
105
104
 
106
- add_option(:"Local/Remote", '-s', '--source URL', URI::HTTP,
107
- 'Append URL to list of remote gem sources') do |source, options|
108
-
109
- source << '/' if source !~ /\/\z/
105
+ add_option(:"Local/Remote", "-s", "--source URL", URI::HTTP,
106
+ "Append URL to list of remote gem sources") do |source, options|
107
+ source << "/" if source !~ /\/\z/
110
108
 
111
109
  if options.delete :sources_cleared
112
110
  Gem.sources = [source]
@@ -120,8 +118,8 @@ module Gem::LocalRemoteOptions
120
118
  # Add the --update-sources option
121
119
 
122
120
  def add_update_sources_option
123
- add_option(:Deprecated, '-u', '--[no-]update-sources',
124
- 'Update local source cache') do |value, options|
121
+ add_option(:Deprecated, "-u", "--[no-]update-sources",
122
+ "Update local source cache") do |value, options|
125
123
  Gem.configuration.update_sources = value
126
124
  end
127
125
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'user_interaction'
2
+ require_relative "user_interaction"
3
3
 
4
4
  ##
5
5
  # This Gem::StreamUI subclass records input and output to StringIO for
@@ -40,7 +40,7 @@ class Gem::MockGemUi < Gem::StreamUI
40
40
  end
41
41
 
42
42
  def initialize(input = "")
43
- require 'stringio'
43
+ require "stringio"
44
44
  ins = StringIO.new input
45
45
  outs = StringIO.new
46
46
  errs = StringIO.new
@@ -10,7 +10,7 @@ class Gem::NameTuple
10
10
  @version = version
11
11
 
12
12
  unless platform.kind_of? Gem::Platform
13
- platform = "ruby" if !platform or platform.empty?
13
+ platform = "ruby" if !platform || platform.empty?
14
14
  end
15
15
 
16
16
  @platform = platform
@@ -48,7 +48,7 @@ class Gem::NameTuple
48
48
 
49
49
  def full_name
50
50
  case @platform
51
- when nil, 'ruby', ''
51
+ when nil, "ruby", ""
52
52
  "#{@name}-#{@version}"
53
53
  else
54
54
  "#{@name}-#{@version}-#{@platform}"
@@ -89,9 +89,8 @@ class Gem::NameTuple
89
89
  alias to_s inspect # :nodoc:
90
90
 
91
91
  def <=>(other)
92
- [@name, @version, @platform == Gem::Platform::RUBY ? -1 : 1] <=>
93
- [other.name, other.version,
94
- other.platform == Gem::Platform::RUBY ? -1 : 1]
92
+ [@name, @version, Gem::Platform.sort_priority(@platform)] <=>
93
+ [other.name, other.version, Gem::Platform.sort_priority(other.platform)]
95
94
  end
96
95
 
97
96
  include Comparable
@@ -103,8 +102,8 @@ class Gem::NameTuple
103
102
  def ==(other)
104
103
  case other
105
104
  when self.class
106
- @name == other.name and
107
- @version == other.version and
105
+ @name == other.name &&
106
+ @version == other.version &&
108
107
  @platform == other.platform
109
108
  when Array
110
109
  to_a == other
@@ -0,0 +1 @@
1
+ # Vendored files do not need to be documented