rubygems-update 3.1.6 → 3.3.22

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 (703) hide show
  1. checksums.yaml +4 -4
  2. data/{History.txt → CHANGELOG.md} +1452 -514
  3. data/CODE_OF_CONDUCT.md +55 -19
  4. data/CONTRIBUTING.md +74 -27
  5. data/Manifest.txt +154 -117
  6. data/POLICIES.md +27 -19
  7. data/README.md +10 -8
  8. data/UPGRADING.md +5 -81
  9. data/bin/gem +3 -8
  10. data/bin/update_rubygems +5 -5
  11. data/bundler/CHANGELOG.md +2358 -1430
  12. data/bundler/README.md +7 -9
  13. data/bundler/UPGRADING.md +27 -34
  14. data/bundler/bundler.gemspec +8 -11
  15. data/bundler/exe/bundle +10 -8
  16. data/bundler/exe/bundler +1 -1
  17. data/bundler/lib/bundler/.document +1 -0
  18. data/bundler/lib/bundler/build_metadata.rb +4 -12
  19. data/bundler/lib/bundler/cli/add.rb +1 -1
  20. data/bundler/lib/bundler/cli/binstubs.rb +6 -2
  21. data/bundler/lib/bundler/cli/cache.rb +3 -8
  22. data/bundler/lib/bundler/cli/check.rb +4 -2
  23. data/bundler/lib/bundler/cli/clean.rb +1 -1
  24. data/bundler/lib/bundler/cli/common.rb +31 -3
  25. data/bundler/lib/bundler/cli/config.rb +10 -1
  26. data/bundler/lib/bundler/cli/console.rb +1 -1
  27. data/bundler/lib/bundler/cli/doctor.rb +25 -6
  28. data/bundler/lib/bundler/cli/exec.rb +5 -10
  29. data/bundler/lib/bundler/cli/fund.rb +36 -0
  30. data/bundler/lib/bundler/cli/gem.rb +219 -28
  31. data/bundler/lib/bundler/cli/info.rb +38 -6
  32. data/bundler/lib/bundler/cli/init.rb +3 -3
  33. data/bundler/lib/bundler/cli/inject.rb +1 -1
  34. data/bundler/lib/bundler/cli/install.rb +25 -54
  35. data/bundler/lib/bundler/cli/issue.rb +5 -4
  36. data/bundler/lib/bundler/cli/list.rb +19 -11
  37. data/bundler/lib/bundler/cli/lock.rb +5 -1
  38. data/bundler/lib/bundler/cli/open.rb +1 -2
  39. data/bundler/lib/bundler/cli/outdated.rb +105 -76
  40. data/bundler/lib/bundler/cli/platform.rb +2 -2
  41. data/bundler/lib/bundler/cli/plugin.rb +10 -0
  42. data/bundler/lib/bundler/cli/pristine.rb +5 -0
  43. data/bundler/lib/bundler/cli/remove.rb +1 -2
  44. data/bundler/lib/bundler/cli/show.rb +2 -2
  45. data/bundler/lib/bundler/cli/update.rb +20 -9
  46. data/bundler/lib/bundler/cli.rb +106 -83
  47. data/bundler/lib/bundler/compact_index_client/cache.rb +6 -23
  48. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
  49. data/bundler/lib/bundler/compact_index_client/updater.rb +29 -25
  50. data/bundler/lib/bundler/compact_index_client.rb +3 -9
  51. data/bundler/lib/bundler/current_ruby.rb +17 -6
  52. data/bundler/lib/bundler/definition.rb +297 -396
  53. data/bundler/lib/bundler/dep_proxy.rb +16 -9
  54. data/bundler/lib/bundler/dependency.rb +22 -77
  55. data/bundler/lib/bundler/digest.rb +71 -0
  56. data/bundler/lib/bundler/dsl.rb +76 -83
  57. data/bundler/lib/bundler/endpoint_specification.rb +16 -14
  58. data/bundler/lib/bundler/env.rb +2 -2
  59. data/bundler/lib/bundler/environment_preserver.rb +29 -2
  60. data/bundler/lib/bundler/errors.rb +30 -3
  61. data/bundler/lib/bundler/feature_flag.rb +0 -9
  62. data/bundler/lib/bundler/fetcher/base.rb +7 -9
  63. data/bundler/lib/bundler/fetcher/compact_index.rb +11 -16
  64. data/bundler/lib/bundler/fetcher/downloader.rb +10 -7
  65. data/bundler/lib/bundler/fetcher/index.rb +2 -30
  66. data/bundler/lib/bundler/fetcher.rb +24 -25
  67. data/bundler/lib/bundler/friendly_errors.rb +46 -47
  68. data/bundler/lib/bundler/gem_helper.rb +53 -31
  69. data/bundler/lib/bundler/gem_helpers.rb +43 -24
  70. data/bundler/lib/bundler/gem_version_promoter.rb +10 -20
  71. data/bundler/lib/bundler/graph.rb +1 -1
  72. data/bundler/lib/bundler/index.rb +19 -25
  73. data/bundler/lib/bundler/injector.rb +38 -6
  74. data/bundler/lib/bundler/inline.rb +4 -13
  75. data/bundler/lib/bundler/installer/gem_installer.rb +19 -24
  76. data/bundler/lib/bundler/installer/parallel_installer.rb +46 -25
  77. data/bundler/lib/bundler/installer/standalone.rb +58 -11
  78. data/bundler/lib/bundler/installer.rb +51 -81
  79. data/bundler/lib/bundler/lazy_specification.rb +79 -36
  80. data/bundler/lib/bundler/lockfile_generator.rb +3 -3
  81. data/bundler/lib/bundler/lockfile_parser.rb +19 -44
  82. data/bundler/lib/bundler/man/.document +1 -0
  83. data/bundler/{man → lib/bundler/man}/bundle-add.1 +21 -5
  84. data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +16 -4
  85. data/bundler/{man → lib/bundler/man}/bundle-binstubs.1 +5 -3
  86. data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
  87. data/bundler/{man → lib/bundler/man}/bundle-cache.1 +7 -1
  88. data/bundler/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +7 -0
  89. data/bundler/{man → lib/bundler/man}/bundle-check.1 +1 -1
  90. data/bundler/{man → lib/bundler/man}/bundle-clean.1 +1 -1
  91. data/bundler/{man → lib/bundler/man}/bundle-config.1 +65 -47
  92. data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +74 -65
  93. data/bundler/lib/bundler/man/bundle-console.1 +53 -0
  94. data/bundler/lib/bundler/man/bundle-console.1.ronn +44 -0
  95. data/bundler/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
  96. data/bundler/{man → lib/bundler/man}/bundle-exec.1 +2 -2
  97. data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +1 -1
  98. data/bundler/{man → lib/bundler/man}/bundle-gem.1 +38 -3
  99. data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +46 -7
  100. data/bundler/lib/bundler/man/bundle-help.1 +13 -0
  101. data/bundler/lib/bundler/man/bundle-help.1.ronn +12 -0
  102. data/bundler/{man → lib/bundler/man}/bundle-info.1 +1 -1
  103. data/bundler/{man → lib/bundler/man}/bundle-init.1 +1 -1
  104. data/bundler/{man → lib/bundler/man}/bundle-inject.1 +5 -2
  105. data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +3 -1
  106. data/bundler/{man → lib/bundler/man}/bundle-install.1 +35 -4
  107. data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +33 -5
  108. data/bundler/{man → lib/bundler/man}/bundle-list.1 +7 -7
  109. data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
  110. data/bundler/{man → lib/bundler/man}/bundle-lock.1 +1 -1
  111. data/bundler/{man → lib/bundler/man}/bundle-open.1 +1 -1
  112. data/bundler/{man → lib/bundler/man}/bundle-outdated.1 +3 -10
  113. data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +1 -10
  114. data/bundler/{man → lib/bundler/man}/bundle-platform.1 +16 -6
  115. data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +14 -7
  116. data/bundler/lib/bundler/man/bundle-plugin.1 +81 -0
  117. data/bundler/lib/bundler/man/bundle-plugin.1.ronn +59 -0
  118. data/bundler/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
  119. data/bundler/{man → lib/bundler/man}/bundle-remove.1 +1 -1
  120. data/bundler/{man → lib/bundler/man}/bundle-show.1 +1 -1
  121. data/bundler/{man → lib/bundler/man}/bundle-update.1 +5 -5
  122. data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +5 -4
  123. data/bundler/lib/bundler/man/bundle-version.1 +35 -0
  124. data/bundler/lib/bundler/man/bundle-version.1.ronn +24 -0
  125. data/bundler/{man → lib/bundler/man}/bundle-viz.1 +4 -1
  126. data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +2 -0
  127. data/bundler/{man → lib/bundler/man}/bundle.1 +15 -10
  128. data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +12 -7
  129. data/bundler/{man → lib/bundler/man}/gemfile.5 +106 -80
  130. data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +94 -83
  131. data/bundler/{man → lib/bundler/man}/index.txt +4 -0
  132. data/bundler/lib/bundler/match_metadata.rb +13 -0
  133. data/bundler/lib/bundler/match_platform.rb +0 -1
  134. data/bundler/lib/bundler/match_remote_metadata.rb +29 -0
  135. data/bundler/lib/bundler/mirror.rb +2 -2
  136. data/bundler/lib/bundler/plugin/api/source.rb +25 -9
  137. data/bundler/lib/bundler/plugin/dsl.rb +1 -1
  138. data/bundler/lib/bundler/plugin/index.rb +13 -1
  139. data/bundler/lib/bundler/plugin/installer/git.rb +0 -4
  140. data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -5
  141. data/bundler/lib/bundler/plugin/installer.rb +11 -11
  142. data/bundler/lib/bundler/plugin/source_list.rb +5 -1
  143. data/bundler/lib/bundler/plugin.rb +58 -11
  144. data/bundler/lib/bundler/process_lock.rb +1 -1
  145. data/bundler/lib/bundler/remote_specification.rb +11 -6
  146. data/bundler/lib/bundler/resolver/base.rb +50 -0
  147. data/bundler/lib/bundler/resolver/spec_group.rb +64 -57
  148. data/bundler/lib/bundler/resolver.rb +234 -230
  149. data/bundler/lib/bundler/retry.rb +2 -2
  150. data/bundler/lib/bundler/ruby_dsl.rb +1 -1
  151. data/bundler/lib/bundler/ruby_version.rb +6 -19
  152. data/bundler/lib/bundler/rubygems_ext.rb +194 -33
  153. data/bundler/lib/bundler/rubygems_gem_installer.rb +87 -16
  154. data/bundler/lib/bundler/rubygems_integration.rb +71 -153
  155. data/bundler/lib/bundler/runtime.rb +22 -26
  156. data/bundler/lib/bundler/self_manager.rb +168 -0
  157. data/bundler/lib/bundler/settings.rb +145 -66
  158. data/bundler/lib/bundler/setup.rb +2 -2
  159. data/bundler/lib/bundler/shared_helpers.rb +17 -32
  160. data/bundler/lib/bundler/similarity_detector.rb +1 -1
  161. data/bundler/lib/bundler/source/git/git_proxy.rb +88 -84
  162. data/bundler/lib/bundler/source/git.rb +50 -32
  163. data/bundler/lib/bundler/source/metadata.rb +3 -7
  164. data/bundler/lib/bundler/source/path/installer.rb +10 -10
  165. data/bundler/lib/bundler/source/path.rb +10 -4
  166. data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
  167. data/bundler/lib/bundler/source/rubygems.rb +201 -179
  168. data/bundler/lib/bundler/source/rubygems_aggregate.rb +68 -0
  169. data/bundler/lib/bundler/source.rb +25 -5
  170. data/bundler/lib/bundler/source_list.rb +105 -63
  171. data/bundler/lib/bundler/source_map.rb +71 -0
  172. data/bundler/lib/bundler/spec_set.rb +62 -57
  173. data/bundler/lib/bundler/stub_specification.rb +30 -10
  174. data/bundler/lib/bundler/templates/Executable +2 -4
  175. data/bundler/lib/bundler/templates/Executable.bundler +8 -8
  176. data/bundler/lib/bundler/templates/Executable.standalone +2 -4
  177. data/bundler/lib/bundler/templates/Gemfile +0 -2
  178. data/bundler/lib/bundler/templates/gems.rb +0 -3
  179. data/bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
  180. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  181. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +12 -1
  182. data/bundler/lib/bundler/templates/newgem/README.md.tt +9 -14
  183. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +32 -5
  184. data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
  185. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
  186. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
  187. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +27 -0
  188. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
  189. data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  190. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
  191. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +27 -17
  192. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
  193. data/bundler/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
  194. data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  195. data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  196. data/bundler/lib/bundler/templates/newgem/standard.yml.tt +3 -0
  197. data/bundler/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
  198. data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/test_newgem.rb.tt} +3 -1
  199. data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  200. data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  201. data/bundler/lib/bundler/ui/shell.rb +6 -6
  202. data/bundler/lib/bundler/uri_credentials_filter.rb +3 -1
  203. data/bundler/lib/bundler/vendor/.document +1 -0
  204. data/bundler/lib/bundler/vendor/connection_pool/LICENSE +20 -0
  205. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +19 -21
  206. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +1 -1
  207. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +57 -0
  208. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +39 -74
  209. data/bundler/lib/bundler/vendor/fileutils/LICENSE.txt +22 -0
  210. data/bundler/lib/bundler/vendor/molinillo/LICENSE +9 -0
  211. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +7 -0
  212. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
  213. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +11 -5
  214. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +37 -5
  215. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +34 -28
  216. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  217. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +12 -1
  218. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +49 -47
  219. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
  220. data/bundler/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
  221. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +82 -189
  222. data/bundler/lib/bundler/vendor/thor/LICENSE.md +20 -0
  223. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
  224. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +9 -7
  225. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +1 -2
  226. data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +7 -3
  227. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
  228. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +6 -0
  229. data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +10 -5
  230. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +5 -1
  231. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +28 -9
  232. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +27 -6
  233. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +5 -1
  234. data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
  235. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +1 -1
  236. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  237. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +5 -13
  238. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
  239. data/bundler/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
  240. data/bundler/lib/bundler/vendor/tsort/lib/tsort.rb +452 -0
  241. data/bundler/lib/bundler/vendor/uri/LICENSE.txt +22 -0
  242. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +17 -80
  243. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +0 -1
  244. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +5 -6
  245. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +0 -1
  246. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +0 -1
  247. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +1 -1
  248. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +0 -1
  249. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +1 -14
  250. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +1 -12
  251. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +1 -1
  252. data/bundler/lib/bundler/vendor/uri/lib/uri/ws.rb +84 -0
  253. data/bundler/lib/bundler/vendor/uri/lib/uri/wss.rb +22 -0
  254. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +0 -1
  255. data/bundler/lib/bundler/vendored_persistent.rb +0 -7
  256. data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
  257. data/bundler/lib/bundler/vendored_tsort.rb +4 -0
  258. data/bundler/lib/bundler/version.rb +1 -1
  259. data/bundler/lib/bundler/worker.rb +20 -5
  260. data/bundler/lib/bundler/yaml_serializer.rb +1 -1
  261. data/bundler/lib/bundler.rb +79 -47
  262. data/hide_lib_for_update/note.txt +0 -4
  263. data/lib/rubygems/available_set.rb +7 -9
  264. data/lib/rubygems/basic_specification.rb +23 -21
  265. data/lib/rubygems/bundler_version_finder.rb +26 -53
  266. data/lib/rubygems/command.rb +48 -45
  267. data/lib/rubygems/command_manager.rb +20 -14
  268. data/lib/rubygems/commands/build_command.rb +47 -27
  269. data/lib/rubygems/commands/cert_command.rb +78 -75
  270. data/lib/rubygems/commands/check_command.rb +20 -22
  271. data/lib/rubygems/commands/cleanup_command.rb +30 -26
  272. data/lib/rubygems/commands/contents_command.rb +16 -18
  273. data/lib/rubygems/commands/dependency_command.rb +39 -51
  274. data/lib/rubygems/commands/environment_command.rb +11 -10
  275. data/lib/rubygems/commands/fetch_command.rb +33 -16
  276. data/lib/rubygems/commands/generate_index_command.rb +17 -19
  277. data/lib/rubygems/commands/help_command.rb +6 -6
  278. data/lib/rubygems/commands/info_command.rb +10 -7
  279. data/lib/rubygems/commands/install_command.rb +29 -27
  280. data/lib/rubygems/commands/list_command.rb +9 -8
  281. data/lib/rubygems/commands/lock_command.rb +5 -7
  282. data/lib/rubygems/commands/mirror_command.rb +3 -5
  283. data/lib/rubygems/commands/open_command.rb +10 -14
  284. data/lib/rubygems/commands/outdated_command.rb +5 -7
  285. data/lib/rubygems/commands/owner_command.rb +26 -16
  286. data/lib/rubygems/commands/pristine_command.rb +61 -49
  287. data/lib/rubygems/commands/push_command.rb +22 -59
  288. data/lib/rubygems/commands/query_command.rb +21 -351
  289. data/lib/rubygems/commands/rdoc_command.rb +23 -25
  290. data/lib/rubygems/commands/search_command.rb +8 -8
  291. data/lib/rubygems/commands/server_command.rb +16 -77
  292. data/lib/rubygems/commands/setup_command.rb +255 -229
  293. data/lib/rubygems/commands/signin_command.rb +9 -11
  294. data/lib/rubygems/commands/signout_command.rb +7 -9
  295. data/lib/rubygems/commands/sources_command.rb +27 -25
  296. data/lib/rubygems/commands/specification_command.rb +25 -21
  297. data/lib/rubygems/commands/stale_command.rb +3 -5
  298. data/lib/rubygems/commands/uninstall_command.rb +41 -43
  299. data/lib/rubygems/commands/unpack_command.rb +13 -15
  300. data/lib/rubygems/commands/update_command.rb +132 -74
  301. data/lib/rubygems/commands/which_command.rb +7 -9
  302. data/lib/rubygems/commands/yank_command.rb +16 -19
  303. data/lib/rubygems/compatibility.rb +4 -2
  304. data/lib/rubygems/config_file.rb +42 -26
  305. data/lib/rubygems/core_ext/kernel_gem.rb +1 -1
  306. data/lib/rubygems/core_ext/kernel_require.rb +6 -3
  307. data/lib/rubygems/core_ext/kernel_warn.rb +12 -13
  308. data/lib/rubygems/core_ext/tcpsocket_init.rb +52 -0
  309. data/lib/rubygems/defaults.rb +108 -32
  310. data/lib/rubygems/dependency.rb +21 -22
  311. data/lib/rubygems/dependency_installer.rb +19 -91
  312. data/lib/rubygems/dependency_list.rb +13 -15
  313. data/lib/rubygems/deprecate.rb +102 -8
  314. data/lib/rubygems/doctor.rb +22 -22
  315. data/lib/rubygems/errors.rb +6 -21
  316. data/lib/rubygems/exceptions.rb +33 -34
  317. data/lib/rubygems/ext/build_error.rb +2 -0
  318. data/lib/rubygems/ext/builder.rb +48 -54
  319. data/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +23 -0
  320. data/lib/rubygems/ext/cargo_builder.rb +321 -0
  321. data/lib/rubygems/ext/cmake_builder.rb +6 -9
  322. data/lib/rubygems/ext/configure_builder.rb +5 -8
  323. data/lib/rubygems/ext/ext_conf_builder.rb +42 -66
  324. data/lib/rubygems/ext/rake_builder.rb +7 -10
  325. data/lib/rubygems/ext.rb +7 -6
  326. data/lib/rubygems/gem_runner.rb +15 -26
  327. data/lib/rubygems/gemcutter_utilities.rb +153 -32
  328. data/lib/rubygems/indexer.rb +30 -49
  329. data/lib/rubygems/install_default_message.rb +2 -2
  330. data/lib/rubygems/install_message.rb +2 -2
  331. data/lib/rubygems/install_update_options.rb +73 -64
  332. data/lib/rubygems/installer.rb +194 -151
  333. data/lib/rubygems/installer_uninstaller_utils.rb +29 -0
  334. data/lib/rubygems/local_remote_options.rb +22 -24
  335. data/lib/rubygems/mock_gem_ui.rb +2 -8
  336. data/lib/rubygems/name_tuple.rb +9 -14
  337. data/lib/rubygems/openssl.rb +7 -0
  338. data/lib/rubygems/optparse/.document +1 -0
  339. data/lib/rubygems/optparse/COPYING +56 -0
  340. data/lib/rubygems/optparse/lib/optionparser.rb +2 -0
  341. data/lib/rubygems/optparse/lib/optparse/ac.rb +54 -0
  342. data/lib/rubygems/optparse/lib/optparse/date.rb +18 -0
  343. data/lib/rubygems/optparse/lib/optparse/kwargs.rb +22 -0
  344. data/lib/rubygems/optparse/lib/optparse/shellwords.rb +7 -0
  345. data/lib/rubygems/optparse/lib/optparse/time.rb +11 -0
  346. data/lib/rubygems/optparse/lib/optparse/uri.rb +7 -0
  347. data/lib/rubygems/optparse/lib/optparse/version.rb +71 -0
  348. data/lib/rubygems/optparse/lib/optparse.rb +2303 -0
  349. data/lib/rubygems/optparse.rb +3 -0
  350. data/lib/rubygems/package/digest_io.rb +0 -2
  351. data/lib/rubygems/package/file_source.rb +2 -4
  352. data/lib/rubygems/package/io_source.rb +4 -2
  353. data/lib/rubygems/package/old.rb +9 -11
  354. data/lib/rubygems/package/tar_header.rb +54 -56
  355. data/lib/rubygems/package/tar_reader/entry.rb +2 -5
  356. data/lib/rubygems/package/tar_reader.rb +1 -4
  357. data/lib/rubygems/package/tar_writer.rb +8 -18
  358. data/lib/rubygems/package.rb +101 -117
  359. data/lib/rubygems/package_task.rb +5 -11
  360. data/lib/rubygems/path_support.rb +2 -9
  361. data/lib/rubygems/platform.rb +101 -76
  362. data/lib/rubygems/psych_tree.rb +1 -3
  363. data/lib/rubygems/query_utils.rb +351 -0
  364. data/lib/rubygems/rdoc.rb +2 -14
  365. data/lib/rubygems/remote_fetcher.rb +48 -74
  366. data/lib/rubygems/request/connection_pools.rb +6 -10
  367. data/lib/rubygems/request/http_pool.rb +2 -4
  368. data/lib/rubygems/request/https_pool.rb +0 -2
  369. data/lib/rubygems/request.rb +26 -31
  370. data/lib/rubygems/request_set/gem_dependency_api.rb +23 -25
  371. data/lib/rubygems/request_set/lockfile/parser.rb +26 -28
  372. data/lib/rubygems/request_set/lockfile/tokenizer.rb +5 -7
  373. data/lib/rubygems/request_set/lockfile.rb +17 -21
  374. data/lib/rubygems/request_set.rb +27 -40
  375. data/lib/rubygems/requirement.rb +28 -48
  376. data/lib/rubygems/resolver/activation_request.rb +12 -6
  377. data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
  378. data/lib/rubygems/resolver/api_set.rb +32 -25
  379. data/lib/rubygems/resolver/api_specification.rb +29 -15
  380. data/lib/rubygems/resolver/best_set.rb +7 -9
  381. data/lib/rubygems/resolver/composed_set.rb +3 -5
  382. data/lib/rubygems/resolver/conflict.rb +12 -14
  383. data/lib/rubygems/resolver/current_set.rb +0 -2
  384. data/lib/rubygems/resolver/dependency_request.rb +3 -5
  385. data/lib/rubygems/resolver/git_set.rb +2 -4
  386. data/lib/rubygems/resolver/git_specification.rb +6 -8
  387. data/lib/rubygems/resolver/index_set.rb +4 -6
  388. data/lib/rubygems/resolver/index_specification.rb +38 -7
  389. data/lib/rubygems/resolver/installed_specification.rb +4 -6
  390. data/lib/rubygems/resolver/installer_set.rb +66 -24
  391. data/lib/rubygems/resolver/local_specification.rb +2 -4
  392. data/lib/rubygems/resolver/lock_set.rb +6 -8
  393. data/lib/rubygems/resolver/lock_specification.rb +4 -6
  394. data/lib/rubygems/resolver/molinillo/LICENSE +9 -0
  395. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
  396. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +8 -0
  397. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
  398. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
  399. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
  400. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
  401. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
  402. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
  403. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
  404. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
  405. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +51 -12
  406. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +41 -8
  407. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +76 -8
  408. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
  409. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +13 -1
  410. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
  411. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +510 -165
  412. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
  413. data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
  414. data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
  415. data/lib/rubygems/resolver/molinillo.rb +1 -1
  416. data/lib/rubygems/resolver/requirement_list.rb +0 -2
  417. data/lib/rubygems/resolver/set.rb +0 -3
  418. data/lib/rubygems/resolver/source_set.rb +0 -2
  419. data/lib/rubygems/resolver/spec_specification.rb +14 -2
  420. data/lib/rubygems/resolver/specification.rb +14 -4
  421. data/lib/rubygems/resolver/stats.rb +0 -2
  422. data/lib/rubygems/resolver/vendor_set.rb +1 -3
  423. data/lib/rubygems/resolver/vendor_specification.rb +3 -5
  424. data/lib/rubygems/resolver.rb +53 -51
  425. data/lib/rubygems/s3_uri_signer.rb +7 -15
  426. data/lib/rubygems/safe_yaml.rb +14 -16
  427. data/lib/rubygems/security/policies.rb +11 -11
  428. data/lib/rubygems/security/policy.rb +25 -29
  429. data/lib/rubygems/security/signer.rb +13 -16
  430. data/lib/rubygems/security/trust_dir.rb +4 -5
  431. data/lib/rubygems/security.rb +103 -69
  432. data/lib/rubygems/security_option.rb +7 -7
  433. data/lib/rubygems/source/git.rb +30 -30
  434. data/lib/rubygems/source/installed.rb +1 -3
  435. data/lib/rubygems/source/local.rb +4 -6
  436. data/lib/rubygems/source/lock.rb +0 -2
  437. data/lib/rubygems/source/specific_file.rb +1 -3
  438. data/lib/rubygems/source/vendor.rb +0 -2
  439. data/lib/rubygems/source.rb +44 -38
  440. data/lib/rubygems/source_list.rb +9 -16
  441. data/lib/rubygems/spec_fetcher.rb +49 -48
  442. data/lib/rubygems/specification.rb +338 -295
  443. data/lib/rubygems/specification_policy.rb +112 -61
  444. data/lib/rubygems/stub_specification.rb +21 -28
  445. data/lib/rubygems/text.rb +21 -20
  446. data/lib/rubygems/tsort/.document +1 -0
  447. data/lib/rubygems/tsort/LICENSE.txt +22 -0
  448. data/lib/rubygems/tsort/lib/tsort.rb +454 -0
  449. data/lib/rubygems/tsort.rb +3 -0
  450. data/lib/rubygems/uninstaller.rb +98 -45
  451. data/lib/rubygems/unknown_command_spell_checker.rb +21 -0
  452. data/lib/rubygems/uri.rb +126 -0
  453. data/lib/rubygems/uri_formatter.rb +2 -3
  454. data/lib/rubygems/user_interaction.rb +43 -54
  455. data/lib/rubygems/util/licenses.rb +115 -10
  456. data/lib/rubygems/util/list.rb +0 -2
  457. data/lib/rubygems/util.rb +18 -12
  458. data/lib/rubygems/validator.rb +6 -8
  459. data/lib/rubygems/version.rb +29 -20
  460. data/lib/rubygems/version_option.rb +11 -5
  461. data/lib/rubygems.rb +192 -289
  462. data/rubygems-update.gemspec +4 -4
  463. data/setup.rb +11 -22
  464. data/test/rubygems/data/excon-0.7.7.gemspec.rz +0 -0
  465. data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
  466. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  467. data/test/rubygems/data/pry-0.4.7.gemspec.rz +0 -0
  468. data/test/rubygems/encrypted_private_key.pem +26 -26
  469. data/{lib/rubygems/test_case.rb → test/rubygems/helper.rb} +380 -314
  470. data/{lib → test}/rubygems/installer_test_case.rb +38 -24
  471. data/{lib → test}/rubygems/package/tar_test_case.rb +4 -6
  472. data/test/rubygems/packages/ascii_binder-0.1.10.1.gem +0 -0
  473. data/test/rubygems/packages/ill-formatted-platform-1.0.0.10.gem +0 -0
  474. data/test/rubygems/plugin/exception/rubygems_plugin.rb +1 -1
  475. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
  476. data/test/rubygems/plugin/standarderror/rubygems_plugin.rb +1 -1
  477. data/test/rubygems/private_ec_key.pem +9 -0
  478. data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
  479. data/test/rubygems/rubygems_plugin.rb +2 -4
  480. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
  481. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +4 -6
  482. data/test/rubygems/test_bundled_ca.rb +43 -50
  483. data/test/rubygems/test_config.rb +5 -7
  484. data/test/rubygems/test_deprecate.rb +87 -10
  485. data/test/rubygems/test_exit.rb +11 -0
  486. data/test/rubygems/test_gem.rb +719 -639
  487. data/test/rubygems/test_gem_available_set.rb +24 -26
  488. data/test/rubygems/test_gem_bundler_version_finder.rb +37 -44
  489. data/test/rubygems/test_gem_command.rb +78 -49
  490. data/test/rubygems/test_gem_command_manager.rb +98 -35
  491. data/test/rubygems/test_gem_commands_build_command.rb +275 -57
  492. data/test/rubygems/test_gem_commands_cert_command.rb +180 -125
  493. data/test/rubygems/test_gem_commands_check_command.rb +9 -11
  494. data/test/rubygems/test_gem_commands_cleanup_command.rb +78 -69
  495. data/test/rubygems/test_gem_commands_contents_command.rb +73 -42
  496. data/test/rubygems/test_gem_commands_dependency_command.rb +38 -40
  497. data/test/rubygems/test_gem_commands_environment_command.rb +60 -38
  498. data/test/rubygems/test_gem_commands_fetch_command.rb +163 -32
  499. data/test/rubygems/test_gem_commands_generate_index_command.rb +8 -14
  500. data/test/rubygems/test_gem_commands_help_command.rb +34 -16
  501. data/test/rubygems/test_gem_commands_info_command.rb +33 -9
  502. data/test/rubygems/test_gem_commands_install_command.rb +401 -198
  503. data/test/rubygems/test_gem_commands_list_command.rb +5 -7
  504. data/test/rubygems/test_gem_commands_lock_command.rb +11 -13
  505. data/test/rubygems/test_gem_commands_mirror.rb +3 -5
  506. data/test/rubygems/test_gem_commands_open_command.rb +16 -19
  507. data/test/rubygems/test_gem_commands_outdated_command.rb +23 -7
  508. data/test/rubygems/test_gem_commands_owner_command.rb +100 -46
  509. data/test/rubygems/test_gem_commands_pristine_command.rb +131 -99
  510. data/test/rubygems/test_gem_commands_push_command.rb +134 -66
  511. data/test/rubygems/test_gem_commands_query_command.rb +91 -91
  512. data/test/rubygems/test_gem_commands_search_command.rb +2 -4
  513. data/test/rubygems/test_gem_commands_server_command.rb +6 -50
  514. data/test/rubygems/test_gem_commands_setup_command.rb +288 -179
  515. data/test/rubygems/test_gem_commands_signin_command.rb +162 -28
  516. data/test/rubygems/test_gem_commands_signout_command.rb +3 -10
  517. data/test/rubygems/test_gem_commands_sources_command.rb +139 -32
  518. data/test/rubygems/test_gem_commands_specification_command.rb +81 -55
  519. data/test/rubygems/test_gem_commands_stale_command.rb +4 -6
  520. data/test/rubygems/test_gem_commands_uninstall_command.rb +80 -82
  521. data/test/rubygems/test_gem_commands_unpack_command.rb +32 -34
  522. data/test/rubygems/test_gem_commands_update_command.rb +335 -88
  523. data/test/rubygems/test_gem_commands_which_command.rb +12 -14
  524. data/test/rubygems/test_gem_commands_yank_command.rb +80 -44
  525. data/test/rubygems/test_gem_config_file.rb +114 -97
  526. data/test/rubygems/test_gem_dependency.rb +87 -87
  527. data/test/rubygems/test_gem_dependency_installer.rb +277 -391
  528. data/test/rubygems/test_gem_dependency_list.rb +57 -59
  529. data/test/rubygems/test_gem_dependency_resolution_error.rb +5 -7
  530. data/test/rubygems/test_gem_doctor.rb +73 -47
  531. data/test/rubygems/test_gem_ext_builder.rb +115 -109
  532. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/.gitignore +1 -0
  533. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.lock +243 -0
  534. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/Cargo.toml +10 -0
  535. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/build.rb +21 -0
  536. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/custom_name.gemspec +10 -0
  537. data/test/rubygems/test_gem_ext_cargo_builder/custom_name/src/lib.rs +27 -0
  538. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/.gitignore +1 -0
  539. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.lock +243 -0
  540. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/Cargo.toml +10 -0
  541. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/build.rb +21 -0
  542. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/rust_ruby_example.gemspec +8 -0
  543. data/test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example/src/lib.rs +39 -0
  544. data/test/rubygems/test_gem_ext_cargo_builder.rb +178 -0
  545. data/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +33 -0
  546. data/test/rubygems/test_gem_ext_cargo_builder_unit.rb +75 -0
  547. data/test/rubygems/test_gem_ext_cmake_builder.rb +31 -38
  548. data/test/rubygems/test_gem_ext_configure_builder.rb +23 -39
  549. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +66 -82
  550. data/test/rubygems/test_gem_ext_rake_builder.rb +49 -32
  551. data/test/rubygems/test_gem_gem_runner.rb +51 -8
  552. data/test/rubygems/test_gem_gemcutter_utilities.rb +87 -76
  553. data/test/rubygems/test_gem_impossible_dependencies_error.rb +4 -6
  554. data/test/rubygems/test_gem_indexer.rb +62 -64
  555. data/test/rubygems/test_gem_install_update_options.rb +31 -21
  556. data/test/rubygems/test_gem_installer.rb +798 -491
  557. data/test/rubygems/test_gem_local_remote_options.rb +11 -13
  558. data/test/rubygems/test_gem_name_tuple.rb +4 -6
  559. data/test/rubygems/test_gem_package.rb +318 -283
  560. data/test/rubygems/test_gem_package_old.rb +18 -20
  561. data/test/rubygems/test_gem_package_tar_header.rb +64 -47
  562. data/test/rubygems/test_gem_package_tar_reader.rb +8 -10
  563. data/test/rubygems/test_gem_package_tar_reader_entry.rb +18 -20
  564. data/test/rubygems/test_gem_package_tar_writer.rb +96 -100
  565. data/test/rubygems/test_gem_package_task.rb +58 -25
  566. data/test/rubygems/test_gem_path_support.rb +15 -21
  567. data/test/rubygems/test_gem_platform.rb +354 -201
  568. data/test/rubygems/test_gem_rdoc.rb +19 -21
  569. data/test/rubygems/test_gem_remote_fetcher.rb +376 -337
  570. data/test/rubygems/test_gem_request.rb +114 -86
  571. data/test/rubygems/test_gem_request_connection_pools.rb +30 -34
  572. data/test/rubygems/test_gem_request_set.rb +123 -124
  573. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +222 -226
  574. data/test/rubygems/test_gem_request_set_lockfile.rb +93 -95
  575. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +68 -70
  576. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +136 -138
  577. data/test/rubygems/test_gem_requirement.rb +133 -54
  578. data/test/rubygems/test_gem_resolver.rb +149 -117
  579. data/test/rubygems/test_gem_resolver_activation_request.rb +6 -8
  580. data/test/rubygems/test_gem_resolver_api_set.rb +79 -78
  581. data/test/rubygems/test_gem_resolver_api_specification.rb +47 -49
  582. data/test/rubygems/test_gem_resolver_best_set.rb +43 -22
  583. data/test/rubygems/test_gem_resolver_composed_set.rb +1 -3
  584. data/test/rubygems/test_gem_resolver_conflict.rb +12 -14
  585. data/test/rubygems/test_gem_resolver_dependency_request.rb +15 -17
  586. data/test/rubygems/test_gem_resolver_git_set.rb +22 -24
  587. data/test/rubygems/test_gem_resolver_git_specification.rb +22 -23
  588. data/test/rubygems/test_gem_resolver_index_set.rb +14 -16
  589. data/test/rubygems/test_gem_resolver_index_specification.rb +16 -18
  590. data/test/rubygems/test_gem_resolver_installed_specification.rb +5 -7
  591. data/test/rubygems/test_gem_resolver_installer_set.rb +104 -44
  592. data/test/rubygems/test_gem_resolver_local_specification.rb +7 -9
  593. data/test/rubygems/test_gem_resolver_lock_set.rb +15 -17
  594. data/test/rubygems/test_gem_resolver_lock_specification.rb +17 -19
  595. data/test/rubygems/test_gem_resolver_requirement_list.rb +1 -3
  596. data/test/rubygems/test_gem_resolver_specification.rb +8 -12
  597. data/test/rubygems/test_gem_resolver_vendor_set.rb +9 -11
  598. data/test/rubygems/test_gem_resolver_vendor_specification.rb +10 -12
  599. data/test/rubygems/test_gem_security.rb +104 -78
  600. data/test/rubygems/test_gem_security_policy.rb +92 -97
  601. data/test/rubygems/test_gem_security_signer.rb +45 -47
  602. data/test/rubygems/test_gem_security_trust_dir.rb +12 -14
  603. data/test/rubygems/test_gem_silent_ui.rb +46 -42
  604. data/test/rubygems/test_gem_source.rb +53 -52
  605. data/test/rubygems/test_gem_source_fetch_problem.rb +16 -8
  606. data/test/rubygems/test_gem_source_git.rb +69 -69
  607. data/test/rubygems/test_gem_source_installed.rb +16 -18
  608. data/test/rubygems/test_gem_source_list.rb +5 -6
  609. data/test/rubygems/test_gem_source_local.rb +15 -17
  610. data/test/rubygems/test_gem_source_lock.rb +31 -33
  611. data/test/rubygems/test_gem_source_specific_file.rb +18 -20
  612. data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
  613. data/test/rubygems/test_gem_source_vendor.rb +13 -15
  614. data/test/rubygems/test_gem_spec_fetcher.rb +74 -67
  615. data/test/rubygems/test_gem_specification.rb +888 -1024
  616. data/test/rubygems/test_gem_stream_ui.rb +23 -23
  617. data/test/rubygems/test_gem_stub_specification.rb +39 -57
  618. data/test/rubygems/test_gem_text.rb +8 -4
  619. data/test/rubygems/test_gem_uninstaller.rb +233 -104
  620. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +3 -5
  621. data/test/rubygems/test_gem_uri.rb +39 -0
  622. data/test/rubygems/test_gem_uri_formatter.rb +14 -16
  623. data/test/rubygems/test_gem_util.rb +37 -35
  624. data/test/rubygems/test_gem_validator.rb +10 -12
  625. data/test/rubygems/test_gem_version.rb +31 -31
  626. data/test/rubygems/test_gem_version_option.rb +16 -18
  627. data/test/rubygems/test_kernel.rb +46 -60
  628. data/test/rubygems/test_project_sanity.rb +8 -3
  629. data/test/rubygems/test_remote_fetch_error.rb +7 -9
  630. data/test/rubygems/test_require.rb +240 -167
  631. data/test/rubygems/test_rubygems.rb +74 -0
  632. data/{lib/rubygems/test_utilities.rb → test/rubygems/utilities.rb} +30 -39
  633. data/test/test_changelog_generator.rb +17 -0
  634. metadata +158 -146
  635. data/.bundle/config +0 -2
  636. data/.rubocop.yml +0 -91
  637. data/Gemfile +0 -8
  638. data/Gemfile.lock +0 -43
  639. data/Rakefile +0 -428
  640. data/bundler/CODE_OF_CONDUCT.md +0 -136
  641. data/bundler/lib/bundler/gemdeps.rb +0 -29
  642. data/bundler/lib/bundler/psyched_yaml.rb +0 -37
  643. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +0 -66
  644. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
  645. data/bundler/man/bundle-add.1.txt +0 -58
  646. data/bundler/man/bundle-binstubs.1.txt +0 -48
  647. data/bundler/man/bundle-cache.1.txt +0 -78
  648. data/bundler/man/bundle-check.1.txt +0 -33
  649. data/bundler/man/bundle-clean.1.txt +0 -26
  650. data/bundler/man/bundle-config.1.txt +0 -528
  651. data/bundler/man/bundle-doctor.1.txt +0 -44
  652. data/bundler/man/bundle-exec.1.txt +0 -178
  653. data/bundler/man/bundle-gem.1.txt +0 -91
  654. data/bundler/man/bundle-info.1.txt +0 -21
  655. data/bundler/man/bundle-init.1.txt +0 -34
  656. data/bundler/man/bundle-inject.1.txt +0 -32
  657. data/bundler/man/bundle-install.1.txt +0 -401
  658. data/bundler/man/bundle-list.1.txt +0 -43
  659. data/bundler/man/bundle-lock.1.txt +0 -93
  660. data/bundler/man/bundle-open.1.txt +0 -29
  661. data/bundler/man/bundle-outdated.1.txt +0 -131
  662. data/bundler/man/bundle-platform.1.txt +0 -57
  663. data/bundler/man/bundle-pristine.1.txt +0 -44
  664. data/bundler/man/bundle-remove.1.txt +0 -34
  665. data/bundler/man/bundle-show.1.txt +0 -27
  666. data/bundler/man/bundle-update.1.txt +0 -390
  667. data/bundler/man/bundle-viz.1.txt +0 -39
  668. data/bundler/man/bundle.1.txt +0 -116
  669. data/bundler/man/gemfile.5.txt +0 -649
  670. data/lib/rubygems/psych_additions.rb +0 -10
  671. data/lib/rubygems/server.rb +0 -879
  672. data/lib/rubygems/source_local.rb +0 -7
  673. data/lib/rubygems/source_specific_file.rb +0 -6
  674. data/lib/rubygems/syck_hack.rb +0 -79
  675. data/lib/rubygems/uri_parser.rb +0 -36
  676. data/lib/rubygems/uri_parsing.rb +0 -23
  677. data/lib/ubygems.rb +0 -14
  678. data/test/rubygems/bogussources.rb +0 -9
  679. data/test/rubygems/data/null-type.gemspec.rz +0 -0
  680. data/test/rubygems/test_gem_server.rb +0 -612
  681. data/tmp/.keep +0 -0
  682. data/util/CL2notes +0 -55
  683. data/util/bisect +0 -10
  684. data/util/ci.sh +0 -62
  685. data/util/cops/deprecations.rb +0 -52
  686. data/util/create_certs.rb +0 -171
  687. data/util/create_certs.sh +0 -27
  688. data/util/create_encrypted_key.rb +0 -16
  689. data/util/generate_spdx_license_list.rb +0 -63
  690. data/util/patch_with_prs.rb +0 -77
  691. data/util/rubocop +0 -8
  692. data/util/update_bundled_ca_certificates.rb +0 -137
  693. data/util/update_changelog.rb +0 -64
  694. /data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
  695. /data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
  696. /data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
  697. /data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
  698. /data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
  699. /data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
  700. /data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
  701. /data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
  702. /data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
  703. /data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
@@ -1,102 +1,105 @@
1
1
  # frozen_string_literal: true
2
- require 'rubygems/command'
2
+ require_relative "../command"
3
3
 
4
4
  ##
5
5
  # Installs RubyGems itself. This command is ordinarily only available from a
6
6
  # RubyGems checkout or tarball.
7
7
 
8
8
  class Gem::Commands::SetupCommand < Gem::Command
9
-
10
- HISTORY_HEADER = /^===\s*[\d.a-zA-Z]+\s*\/\s*\d{4}-\d{2}-\d{2}\s*$/.freeze
11
- VERSION_MATCHER = /^===\s*([\d.a-zA-Z]+)\s*\/\s*\d{4}-\d{2}-\d{2}\s*$/.freeze
9
+ HISTORY_HEADER = /^#\s*[\d.a-zA-Z]+\s*\/\s*\d{4}-\d{2}-\d{2}\s*$/.freeze
10
+ VERSION_MATCHER = /^#\s*([\d.a-zA-Z]+)\s*\/\s*\d{4}-\d{2}-\d{2}\s*$/.freeze
12
11
 
13
12
  ENV_PATHS = %w[/usr/bin/env /bin/env].freeze
14
13
 
15
14
  def initialize
16
- require 'tmpdir'
17
-
18
- super 'setup', 'Install RubyGems',
19
- :format_executable => true, :document => %w[ri],
15
+ super "setup", "Install RubyGems",
16
+ :format_executable => false, :document => %w[ri],
20
17
  :force => true,
21
- :site_or_vendor => 'sitelibdir',
22
- :destdir => '', :prefix => '', :previous_version => '',
23
- :regenerate_binstubs => true
24
-
25
- add_option '--previous-version=VERSION',
26
- 'Previous version of RubyGems',
27
- 'Used for changelog processing' do |version, options|
18
+ :site_or_vendor => "sitelibdir",
19
+ :destdir => "", :prefix => "", :previous_version => "",
20
+ :regenerate_binstubs => true,
21
+ :regenerate_plugins => true
22
+
23
+ add_option "--previous-version=VERSION",
24
+ "Previous version of RubyGems",
25
+ "Used for changelog processing" do |version, options|
28
26
  options[:previous_version] = version
29
27
  end
30
28
 
31
- add_option '--prefix=PREFIX',
32
- 'Prefix path for installing RubyGems',
33
- 'Will not affect gem repository location' do |prefix, options|
29
+ add_option "--prefix=PREFIX",
30
+ "Prefix path for installing RubyGems",
31
+ "Will not affect gem repository location" do |prefix, options|
34
32
  options[:prefix] = File.expand_path prefix
35
33
  end
36
34
 
37
- add_option '--destdir=DESTDIR',
38
- 'Root directory to install RubyGems into',
39
- 'Mainly used for packaging RubyGems' do |destdir, options|
35
+ add_option "--destdir=DESTDIR",
36
+ "Root directory to install RubyGems into",
37
+ "Mainly used for packaging RubyGems" do |destdir, options|
40
38
  options[:destdir] = File.expand_path destdir
41
39
  end
42
40
 
43
- add_option '--[no-]vendor',
44
- 'Install into vendorlibdir not sitelibdir' do |vendor, options|
45
- options[:site_or_vendor] = vendor ? 'vendorlibdir' : 'sitelibdir'
41
+ add_option "--[no-]vendor",
42
+ "Install into vendorlibdir not sitelibdir" do |vendor, options|
43
+ options[:site_or_vendor] = vendor ? "vendorlibdir" : "sitelibdir"
46
44
  end
47
45
 
48
- add_option '--[no-]format-executable',
49
- 'Makes `gem` match ruby',
50
- 'If Ruby is ruby18, gem will be gem18' do |value, options|
46
+ add_option "--[no-]format-executable",
47
+ "Makes `gem` match ruby",
48
+ "If Ruby is ruby18, gem will be gem18" do |value, options|
51
49
  options[:format_executable] = value
52
50
  end
53
51
 
54
- add_option '--[no-]document [TYPES]', Array,
55
- 'Generate documentation for RubyGems',
56
- 'List the documentation types you wish to',
57
- 'generate. For example: rdoc,ri' do |value, options|
52
+ add_option "--[no-]document [TYPES]", Array,
53
+ "Generate documentation for RubyGems",
54
+ "List the documentation types you wish to",
55
+ "generate. For example: rdoc,ri" do |value, options|
58
56
  options[:document] = case value
59
- when nil then %w[rdoc ri]
60
- when false then []
61
- else value
62
- end
57
+ when nil then %w[rdoc ri]
58
+ when false then []
59
+ else value
60
+ end
63
61
  end
64
62
 
65
- add_option '--[no-]rdoc',
66
- 'Generate RDoc documentation for RubyGems' do |value, options|
63
+ add_option "--[no-]rdoc",
64
+ "Generate RDoc documentation for RubyGems" do |value, options|
67
65
  if value
68
- options[:document] << 'rdoc'
66
+ options[:document] << "rdoc"
69
67
  else
70
- options[:document].delete 'rdoc'
68
+ options[:document].delete "rdoc"
71
69
  end
72
70
 
73
71
  options[:document].uniq!
74
72
  end
75
73
 
76
- add_option '--[no-]ri',
77
- 'Generate RI documentation for RubyGems' do |value, options|
74
+ add_option "--[no-]ri",
75
+ "Generate RI documentation for RubyGems" do |value, options|
78
76
  if value
79
- options[:document] << 'ri'
77
+ options[:document] << "ri"
80
78
  else
81
- options[:document].delete 'ri'
79
+ options[:document].delete "ri"
82
80
  end
83
81
 
84
82
  options[:document].uniq!
85
83
  end
86
84
 
87
- add_option '--[no-]regenerate-binstubs',
88
- 'Regenerate gem binstubs' do |value, options|
85
+ add_option "--[no-]regenerate-binstubs",
86
+ "Regenerate gem binstubs" do |value, options|
89
87
  options[:regenerate_binstubs] = value
90
88
  end
91
89
 
92
- add_option '-f', '--[no-]force',
93
- 'Forcefully overwrite binstubs' do |value, options|
90
+ add_option "--[no-]regenerate-plugins",
91
+ "Regenerate gem plugins" do |value, options|
92
+ options[:regenerate_plugins] = value
93
+ end
94
+
95
+ add_option "-f", "--[no-]force",
96
+ "Forcefully overwrite binstubs" do |value, options|
94
97
  options[:force] = value
95
98
  end
96
99
 
97
- add_option('-E', '--[no-]env-shebang',
98
- 'Rewrite executables with a shebang',
99
- 'of /usr/bin/env') do |value, options|
100
+ add_option("-E", "--[no-]env-shebang",
101
+ "Rewrite executables with a shebang",
102
+ "of /usr/bin/env") do |value, options|
100
103
  options[:env_shebang] = value
101
104
  end
102
105
 
@@ -104,7 +107,7 @@ class Gem::Commands::SetupCommand < Gem::Command
104
107
  end
105
108
 
106
109
  def check_ruby_version
107
- required_version = Gem::Requirement.new '>= 2.3.0'
110
+ required_version = Gem::Requirement.new ">= 2.3.0"
108
111
 
109
112
  unless required_version.satisfied_by? Gem.ruby_version
110
113
  alert_error "Expected Ruby version #{required_version}, is #{Gem.ruby_version}"
@@ -144,16 +147,9 @@ By default, this RubyGems will install gem as:
144
147
  def execute
145
148
  @verbose = Gem.configuration.really_verbose
146
149
 
147
- install_destdir = options[:destdir]
148
-
149
- unless install_destdir.empty?
150
- ENV['GEM_HOME'] ||= File.join(install_destdir,
151
- Gem.default_dir.gsub(/^[a-zA-Z]:/, ''))
152
- end
153
-
154
150
  check_ruby_version
155
151
 
156
- require 'fileutils'
152
+ require "fileutils"
157
153
  if Gem.configuration.really_verbose
158
154
  extend FileUtils::Verbose
159
155
  else
@@ -161,7 +157,8 @@ By default, this RubyGems will install gem as:
161
157
  end
162
158
  extend MakeDirs
163
159
 
164
- lib_dir, bin_dir = make_destination_dirs install_destdir
160
+ lib_dir, bin_dir = make_destination_dirs
161
+ man_dir = generate_default_man_dir
165
162
 
166
163
  install_lib lib_dir
167
164
 
@@ -171,6 +168,9 @@ By default, this RubyGems will install gem as:
171
168
 
172
169
  remove_old_lib_files lib_dir
173
170
 
171
+ # Can be removed one we drop support for bundler 2.2.3 (the last version installing man files to man_dir)
172
+ remove_old_man_files man_dir if man_dir && File.exist?(man_dir)
173
+
174
174
  install_default_bundler_gem bin_dir
175
175
 
176
176
  if mode = options[:dir_mode]
@@ -180,7 +180,8 @@ By default, this RubyGems will install gem as:
180
180
 
181
181
  say "RubyGems #{Gem::VERSION} installed"
182
182
 
183
- regenerate_binstubs if options[:regenerate_binstubs]
183
+ regenerate_binstubs(bin_dir) if options[:regenerate_binstubs]
184
+ regenerate_plugins(bin_dir) if options[:regenerate_plugins]
184
185
 
185
186
  uninstall_old_gemcutter
186
187
 
@@ -193,7 +194,7 @@ By default, this RubyGems will install gem as:
193
194
  end
194
195
 
195
196
  if options[:previous_version].empty?
196
- options[:previous_version] = Gem::VERSION.sub(/[0-9]+$/, '0')
197
+ options[:previous_version] = Gem::VERSION.sub(/[0-9]+$/, "0")
197
198
  end
198
199
 
199
200
  options[:previous_version] = Gem::Version.new(options[:previous_version])
@@ -205,7 +206,7 @@ By default, this RubyGems will install gem as:
205
206
  say
206
207
 
207
208
  say "RubyGems installed the following executables:"
208
- say bin_file_names.map { |name| "\t#{name}\n" }
209
+ say bin_file_names.map {|name| "\t#{name}\n" }
209
210
  say
210
211
 
211
212
  unless bin_file_names.grep(/#{File::SEPARATOR}gem$/)
@@ -215,7 +216,7 @@ By default, this RubyGems will install gem as:
215
216
  end
216
217
 
217
218
  if documentation_success
218
- if options[:document].include? 'rdoc'
219
+ if options[:document].include? "rdoc"
219
220
  say "Rdoc documentation was installed. You may now invoke:"
220
221
  say " gem server"
221
222
  say "and then peruse beautifully formatted documentation for your gems"
@@ -226,7 +227,7 @@ By default, this RubyGems will install gem as:
226
227
  say
227
228
  end
228
229
 
229
- if options[:document].include? 'ri'
230
+ if options[:document].include? "ri"
230
231
  say "Ruby Interactive (ri) documentation was installed. ri is kind of like man "
231
232
  say "pages for Ruby libraries. You may access it like this:"
232
233
  say " ri Classname"
@@ -243,40 +244,39 @@ By default, this RubyGems will install gem as:
243
244
  def install_executables(bin_dir)
244
245
  prog_mode = options[:prog_mode] || 0755
245
246
 
246
- executables = { 'gem' => 'bin' }
247
+ executables = { "gem" => "bin" }
247
248
  executables.each do |tool, path|
248
249
  say "Installing #{tool} executable" if @verbose
249
250
 
250
251
  Dir.chdir path do
251
- bin_files = Dir['*']
252
+ bin_file = "gem"
252
253
 
253
- bin_files -= %w[update_rubygems]
254
+ require "tmpdir"
254
255
 
255
- bin_files.each do |bin_file|
256
- dest_file = target_bin_path(bin_dir, bin_file)
257
- bin_tmp_file = File.join Dir.tmpdir, "#{bin_file}.#{$$}"
256
+ dest_file = target_bin_path(bin_dir, bin_file)
257
+ bin_tmp_file = File.join Dir.tmpdir, "#{bin_file}.#{$$}"
258
258
 
259
- begin
260
- bin = File.readlines bin_file
261
- bin[0] = shebang
259
+ begin
260
+ bin = File.readlines bin_file
261
+ bin[0] = shebang
262
262
 
263
- File.open bin_tmp_file, 'w' do |fp|
264
- fp.puts bin.join
265
- end
266
-
267
- install bin_tmp_file, dest_file, :mode => prog_mode
268
- bin_file_names << dest_file
269
- ensure
270
- rm bin_tmp_file
263
+ File.open bin_tmp_file, "w" do |fp|
264
+ fp.puts bin.join
271
265
  end
272
266
 
273
- next unless Gem.win_platform?
267
+ install bin_tmp_file, dest_file, :mode => prog_mode
268
+ bin_file_names << dest_file
269
+ ensure
270
+ rm bin_tmp_file
271
+ end
272
+
273
+ next unless Gem.win_platform?
274
274
 
275
- begin
276
- bin_cmd_file = File.join Dir.tmpdir, "#{bin_file}.bat"
275
+ begin
276
+ bin_cmd_file = File.join Dir.tmpdir, "#{bin_file}.bat"
277
277
 
278
- File.open bin_cmd_file, 'w' do |file|
279
- file.puts <<-TEXT
278
+ File.open bin_cmd_file, "w" do |file|
279
+ file.puts <<-TEXT
280
280
  @ECHO OFF
281
281
  IF NOT "%~f0" == "~f0" GOTO :WinNT
282
282
  @"#{File.basename(Gem.ruby).chomp('"')}" "#{dest_file}" %1 %2 %3 %4 %5 %6 %7 %8 %9
@@ -284,12 +284,11 @@ By default, this RubyGems will install gem as:
284
284
  :WinNT
285
285
  @"#{File.basename(Gem.ruby).chomp('"')}" "%~dpn0" %*
286
286
  TEXT
287
- end
288
-
289
- install bin_cmd_file, "#{dest_file}.bat", :mode => prog_mode
290
- ensure
291
- rm bin_cmd_file
292
287
  end
288
+
289
+ install bin_cmd_file, "#{dest_file}.bat", :mode => prog_mode
290
+ ensure
291
+ rm bin_cmd_file
293
292
  end
294
293
  end
295
294
  end
@@ -297,7 +296,7 @@ By default, this RubyGems will install gem as:
297
296
 
298
297
  def shebang
299
298
  if options[:env_shebang]
300
- ruby_name = RbConfig::CONFIG['ruby_install_name']
299
+ ruby_name = RbConfig::CONFIG["ruby_install_name"]
301
300
  @env_path ||= ENV_PATHS.find {|env_path| File.executable? env_path }
302
301
  "#!#{@env_path} #{ruby_name}\n"
303
302
  else
@@ -305,41 +304,22 @@ By default, this RubyGems will install gem as:
305
304
  end
306
305
  end
307
306
 
308
- def install_file(file, dest_dir)
309
- dest_file = File.join dest_dir, file
310
- dest_dir = File.dirname dest_file
311
- unless File.directory? dest_dir
312
- mkdir_p dest_dir, :mode => 0755
313
- end
314
-
315
- install file, dest_file, :mode => options[:data_mode] || 0644
316
- end
317
-
318
307
  def install_lib(lib_dir)
319
- libs = { 'RubyGems' => 'lib' }
320
- libs['Bundler'] = 'bundler/lib'
308
+ libs = { "RubyGems" => "lib" }
309
+ libs["Bundler"] = "bundler/lib"
321
310
  libs.each do |tool, path|
322
311
  say "Installing #{tool}" if @verbose
323
312
 
324
- lib_files = rb_files_in path
325
- lib_files.concat(template_files) if tool == 'Bundler'
326
-
327
- pem_files = pem_files_in path
313
+ lib_files = files_in path
328
314
 
329
315
  Dir.chdir path do
330
- lib_files.each do |lib_file|
331
- install_file lib_file, lib_dir
332
- end
333
-
334
- pem_files.each do |pem_file|
335
- install_file pem_file, lib_dir
336
- end
316
+ install_file_list(lib_files, lib_dir)
337
317
  end
338
318
  end
339
319
  end
340
320
 
341
321
  def install_rdoc
342
- gem_doc_dir = File.join Gem.dir, 'doc'
322
+ gem_doc_dir = File.join Gem.dir, "doc"
343
323
  rubygems_name = "rubygems-#{Gem::VERSION}"
344
324
  rubygems_doc_dir = File.join gem_doc_dir, rubygems_name
345
325
 
@@ -349,23 +329,23 @@ By default, this RubyGems will install gem as:
349
329
  # ignore
350
330
  end
351
331
 
352
- if File.writable? gem_doc_dir and
353
- (not File.exist? rubygems_doc_dir or
354
- File.writable? rubygems_doc_dir)
332
+ if File.writable?(gem_doc_dir) &&
333
+ (!File.exist?(rubygems_doc_dir) ||
334
+ File.writable?(rubygems_doc_dir))
355
335
  say "Removing old RubyGems RDoc and ri" if @verbose
356
- Dir[File.join(Gem.dir, 'doc', 'rubygems-[0-9]*')].each do |dir|
336
+ Dir[File.join(Gem.dir, "doc", "rubygems-[0-9]*")].each do |dir|
357
337
  rm_rf dir
358
338
  end
359
339
 
360
- require 'rubygems/rdoc'
340
+ require_relative "../rdoc"
361
341
 
362
- fake_spec = Gem::Specification.new 'rubygems', Gem::VERSION
342
+ fake_spec = Gem::Specification.new "rubygems", Gem::VERSION
363
343
  def fake_spec.full_gem_path
364
- File.expand_path '../../../..', __FILE__
344
+ File.expand_path "../../..", __dir__
365
345
  end
366
346
 
367
- generate_ri = options[:document].include? 'ri'
368
- generate_rdoc = options[:document].include? 'rdoc'
347
+ generate_ri = options[:document].include? "ri"
348
+ generate_rdoc = options[:document].include? "rdoc"
369
349
 
370
350
  rdoc = Gem::RDoc.new fake_spec, generate_rdoc, generate_ri
371
351
  rdoc.generate
@@ -380,30 +360,26 @@ By default, this RubyGems will install gem as:
380
360
  end
381
361
 
382
362
  def install_default_bundler_gem(bin_dir)
383
- specs_dir = Gem.default_specifications_dir
384
- specs_dir = File.join(options[:destdir], specs_dir) unless Gem.win_platform?
385
- mkdir_p specs_dir, :mode => 0755
386
-
387
- # Workaround for non-git environment.
388
- gemspec = File.open('bundler/bundler.gemspec', 'rb'){|f| f.read.gsub(/`git ls-files -z`/, "''") }
389
- File.open('bundler/bundler.gemspec', 'w'){|f| f.write gemspec }
390
-
391
- bundler_spec = Gem::Specification.load("bundler/bundler.gemspec")
392
- bundler_spec.files = Dir.chdir("bundler") { Dir["{*.md,{lib,exe,man}/**/*}"] }
393
- bundler_spec.executables -= %w[bundler bundle_ruby]
394
-
395
- # Remove bundler-*.gemspec in default specification directory.
396
- Dir.entries(specs_dir).
397
- select {|gs| gs.start_with?("bundler-") }.
398
- each {|gs| File.delete(File.join(specs_dir, gs)) }
363
+ current_default_spec = Gem::Specification.default_stubs.find {|s| s.name == "bundler" }
364
+ specs_dir = if current_default_spec && default_dir == Gem.default_dir
365
+ Gem::Specification.remove_spec current_default_spec
366
+ loaded_from = current_default_spec.loaded_from
367
+ File.delete(loaded_from)
368
+ File.dirname(loaded_from)
369
+ else
370
+ target_specs_dir = File.join(default_dir, "specifications", "default")
371
+ mkdir_p target_specs_dir, :mode => 0755
372
+ target_specs_dir
373
+ end
399
374
 
375
+ bundler_spec = Dir.chdir("bundler") { Gem::Specification.load("bundler.gemspec") }
400
376
  default_spec_path = File.join(specs_dir, "#{bundler_spec.full_name}.gemspec")
401
377
  Gem.write_binary(default_spec_path, bundler_spec.to_ruby)
402
378
 
403
379
  bundler_spec = Gem::Specification.load(default_spec_path)
404
380
 
405
381
  # Remove gemspec that was same version of vendored bundler.
406
- normal_gemspec = File.join(Gem.default_dir, "specifications", "bundler-#{bundler_spec.version}.gemspec")
382
+ normal_gemspec = File.join(default_dir, "specifications", "bundler-#{bundler_spec.version}.gemspec")
407
383
  if File.file? normal_gemspec
408
384
  File.delete normal_gemspec
409
385
  end
@@ -416,19 +392,26 @@ By default, this RubyGems will install gem as:
416
392
  end
417
393
 
418
394
  bundler_bin_dir = bundler_spec.bin_dir
419
- bundler_bin_dir = File.join(options[:destdir], bundler_bin_dir) unless Gem.win_platform?
420
395
  mkdir_p bundler_bin_dir, :mode => 0755
421
396
  bundler_spec.executables.each do |e|
422
397
  cp File.join("bundler", bundler_spec.bindir, e), File.join(bundler_bin_dir, e)
423
398
  end
424
399
 
425
- require 'rubygems/installer'
400
+ require_relative "../installer"
426
401
 
427
402
  Dir.chdir("bundler") do
428
403
  built_gem = Gem::Package.build(bundler_spec)
429
404
  begin
430
- installer = Gem::Installer.at(built_gem, env_shebang: options[:env_shebang], format_executable: options[:format_executable], force: options[:force], install_as_default: true, bin_dir: bin_dir, wrappers: true)
431
- installer.install
405
+ Gem::Installer.at(
406
+ built_gem,
407
+ env_shebang: options[:env_shebang],
408
+ format_executable: options[:format_executable],
409
+ force: options[:force],
410
+ install_as_default: true,
411
+ bin_dir: bin_dir,
412
+ install_dir: default_dir,
413
+ wrappers: true
414
+ ).install
432
415
  ensure
433
416
  FileUtils.rm_f built_gem
434
417
  end
@@ -439,11 +422,11 @@ By default, this RubyGems will install gem as:
439
422
  say "Bundler #{bundler_spec.version} installed"
440
423
  end
441
424
 
442
- def make_destination_dirs(install_destdir)
425
+ def make_destination_dirs
443
426
  lib_dir, bin_dir = Gem.default_rubygems_dirs
444
427
 
445
428
  unless lib_dir
446
- lib_dir, bin_dir = generate_default_dirs(install_destdir)
429
+ lib_dir, bin_dir = generate_default_dirs
447
430
  end
448
431
 
449
432
  mkdir_p lib_dir, :mode => 0755
@@ -452,74 +435,49 @@ By default, this RubyGems will install gem as:
452
435
  return lib_dir, bin_dir
453
436
  end
454
437
 
455
- def generate_default_dirs(install_destdir)
438
+ def generate_default_man_dir
456
439
  prefix = options[:prefix]
457
- site_or_vendor = options[:site_or_vendor]
458
440
 
459
441
  if prefix.empty?
460
- lib_dir = RbConfig::CONFIG[site_or_vendor]
461
- bin_dir = RbConfig::CONFIG['bindir']
442
+ man_dir = RbConfig::CONFIG["mandir"]
443
+ return unless man_dir
462
444
  else
463
- # Apple installed RubyGems into libdir, and RubyGems <= 1.1.0 gets
464
- # confused about installation location, so switch back to
465
- # sitelibdir/vendorlibdir.
466
- if defined?(APPLE_GEM_HOME) and
467
- # just in case Apple and RubyGems don't get this patched up proper.
468
- (prefix == RbConfig::CONFIG['libdir'] or
469
- # this one is important
470
- prefix == File.join(RbConfig::CONFIG['libdir'], 'ruby'))
471
- lib_dir = RbConfig::CONFIG[site_or_vendor]
472
- bin_dir = RbConfig::CONFIG['bindir']
473
- else
474
- lib_dir = File.join prefix, 'lib'
475
- bin_dir = File.join prefix, 'bin'
476
- end
445
+ man_dir = File.join prefix, "man"
477
446
  end
478
447
 
479
- unless install_destdir.empty?
480
- lib_dir = File.join install_destdir, lib_dir.gsub(/^[a-zA-Z]:/, '')
481
- bin_dir = File.join install_destdir, bin_dir.gsub(/^[a-zA-Z]:/, '')
482
- end
483
-
484
- [lib_dir, bin_dir]
448
+ prepend_destdir_if_present(man_dir)
485
449
  end
486
450
 
487
- def pem_files_in(dir)
488
- Dir.chdir dir do
489
- Dir[File.join('**', '*pem')]
490
- end
491
- end
451
+ def generate_default_dirs
452
+ prefix = options[:prefix]
453
+ site_or_vendor = options[:site_or_vendor]
492
454
 
493
- def rb_files_in(dir)
494
- Dir.chdir dir do
495
- Dir[File.join('**', '*rb')]
455
+ if prefix.empty?
456
+ lib_dir = RbConfig::CONFIG[site_or_vendor]
457
+ bin_dir = RbConfig::CONFIG["bindir"]
458
+ else
459
+ lib_dir = File.join prefix, "lib"
460
+ bin_dir = File.join prefix, "bin"
496
461
  end
497
- end
498
462
 
499
- # for installation of bundler as default gems
500
- def template_files
501
- Dir.chdir "bundler/lib" do
502
- (Dir[File.join('bundler', 'templates', '**', '{*,.*}')]).
503
- select{|f| !File.directory?(f)}
504
- end
463
+ [prepend_destdir_if_present(lib_dir), prepend_destdir_if_present(bin_dir)]
505
464
  end
506
465
 
507
- # for cleanup old bundler files
508
- def template_files_in(dir)
466
+ def files_in(dir)
509
467
  Dir.chdir dir do
510
- (Dir[File.join('templates', '**', '{*,.*}')]).
511
- select{|f| !File.directory?(f)}
468
+ Dir.glob(File.join("**", "*"), File::FNM_DOTMATCH).
469
+ select {|f| !File.directory?(f) }
512
470
  end
513
471
  end
514
472
 
515
473
  def remove_old_bin_files(bin_dir)
516
474
  old_bin_files = {
517
- 'gem_mirror' => 'gem mirror',
518
- 'gem_server' => 'gem server',
519
- 'gemlock' => 'gem lock',
520
- 'gemri' => 'ri',
521
- 'gemwhich' => 'gem which',
522
- 'index_gem_repository.rb' => 'gem generate_index',
475
+ "gem_mirror" => "gem mirror",
476
+ "gem_server" => "gem server",
477
+ "gemlock" => "gem lock",
478
+ "gemri" => "ri",
479
+ "gemwhich" => "gem which",
480
+ "index_gem_repository.rb" => "gem generate_index",
523
481
  }
524
482
 
525
483
  old_bin_files.each do |old_bin_file, new_name|
@@ -528,7 +486,7 @@ By default, this RubyGems will install gem as:
528
486
 
529
487
  deprecation_message = "`#{old_bin_file}` has been deprecated. Use `#{new_name}` instead."
530
488
 
531
- File.open old_bin_path, 'w' do |fp|
489
+ File.open old_bin_path, "w" do |fp|
532
490
  fp.write <<-EOF
533
491
  #!#{Gem.ruby}
534
492
 
@@ -538,41 +496,53 @@ abort "#{deprecation_message}"
538
496
 
539
497
  next unless Gem.win_platform?
540
498
 
541
- File.open "#{old_bin_path}.bat", 'w' do |fp|
542
- fp.puts %{@ECHO.#{deprecation_message}}
499
+ File.open "#{old_bin_path}.bat", "w" do |fp|
500
+ fp.puts %(@ECHO.#{deprecation_message})
543
501
  end
544
502
  end
545
503
  end
546
504
 
547
505
  def remove_old_lib_files(lib_dir)
548
- lib_dirs = { File.join(lib_dir, 'rubygems') => 'lib/rubygems' }
549
- lib_dirs[File.join(lib_dir, 'bundler')] = 'bundler/lib/bundler'
506
+ lib_dirs = { File.join(lib_dir, "rubygems") => "lib/rubygems" }
507
+ lib_dirs[File.join(lib_dir, "bundler")] = "bundler/lib/bundler"
550
508
  lib_dirs.each do |old_lib_dir, new_lib_dir|
551
- lib_files = rb_files_in(new_lib_dir)
552
- lib_files.concat(template_files_in(new_lib_dir)) if new_lib_dir =~ /bundler/
509
+ lib_files = files_in(new_lib_dir)
553
510
 
554
- old_lib_files = rb_files_in(old_lib_dir)
555
- old_lib_files.concat(template_files_in(old_lib_dir)) if old_lib_dir =~ /bundler/
511
+ old_lib_files = files_in(old_lib_dir)
556
512
 
557
513
  to_remove = old_lib_files - lib_files
558
514
 
515
+ gauntlet_rubygems = File.join(lib_dir, "gauntlet_rubygems.rb")
516
+ to_remove << gauntlet_rubygems if File.exist? gauntlet_rubygems
517
+
559
518
  to_remove.delete_if do |file|
560
- file.start_with? 'defaults'
519
+ file.start_with? "defaults"
561
520
  end
562
521
 
563
- Dir.chdir old_lib_dir do
564
- to_remove.each do |file|
565
- FileUtils.rm_f file
522
+ remove_file_list(to_remove, old_lib_dir)
523
+ end
524
+ end
566
525
 
567
- warn "unable to remove old file #{file} please remove it by hand" if
568
- File.exist? file
569
- end
570
- end
526
+ def remove_old_man_files(old_man_dir)
527
+ old_man1_dir = "#{old_man_dir}/man1"
528
+
529
+ if File.exist?(old_man1_dir)
530
+ man1_to_remove = Dir.chdir(old_man1_dir) { Dir["bundle*.1{,.txt,.ronn}"] }
531
+
532
+ remove_file_list(man1_to_remove, old_man1_dir)
533
+ end
534
+
535
+ old_man5_dir = "#{old_man_dir}/man5"
536
+
537
+ if File.exist?(old_man5_dir)
538
+ man5_to_remove = Dir.chdir(old_man5_dir) { Dir["gemfile.5{,.txt,.ronn}"] }
539
+
540
+ remove_file_list(man5_to_remove, old_man5_dir)
571
541
  end
572
542
  end
573
543
 
574
544
  def show_release_notes
575
- release_notes = File.join Dir.pwd, 'History.txt'
545
+ release_notes = File.join Dir.pwd, "CHANGELOG.md"
576
546
 
577
547
  release_notes =
578
548
  if File.exist? release_notes
@@ -580,8 +550,6 @@ abort "#{deprecation_message}"
580
550
 
581
551
  history.force_encoding Encoding::UTF_8
582
552
 
583
- history = history.sub(/^# coding:.*?(?=^=)/m, '')
584
-
585
553
  text = history.split(HISTORY_HEADER)
586
554
  text.shift # correct an off-by-one generated by split
587
555
  version_lines = history.scan(HISTORY_HEADER)
@@ -591,7 +559,7 @@ abort "#{deprecation_message}"
591
559
 
592
560
  history_string = ""
593
561
 
594
- until versions.length == 0 or
562
+ until versions.length == 0 ||
595
563
  versions.shift <= options[:previous_version] do
596
564
  history_string += version_lines.shift + text.shift
597
565
  end
@@ -605,19 +573,20 @@ abort "#{deprecation_message}"
605
573
  end
606
574
 
607
575
  def uninstall_old_gemcutter
608
- require 'rubygems/uninstaller'
576
+ require_relative "../uninstaller"
609
577
 
610
- ui = Gem::Uninstaller.new('gemcutter', :all => true, :ignore => true,
611
- :version => '< 0.4')
578
+ ui = Gem::Uninstaller.new("gemcutter", :all => true, :ignore => true,
579
+ :version => "< 0.4")
612
580
  ui.uninstall
613
581
  rescue Gem::InstallError
614
582
  end
615
583
 
616
- def regenerate_binstubs
617
- require "rubygems/commands/pristine_command"
584
+ def regenerate_binstubs(bindir)
585
+ require_relative "pristine_command"
618
586
  say "Regenerating binstubs"
619
587
 
620
588
  args = %w[--all --only-executables --silent]
589
+ args << "--bindir=#{bindir}"
621
590
  if options[:env_shebang]
622
591
  args << "--env-shebang"
623
592
  end
@@ -626,19 +595,76 @@ abort "#{deprecation_message}"
626
595
  command.invoke(*args)
627
596
  end
628
597
 
598
+ def regenerate_plugins(bindir)
599
+ require_relative "pristine_command"
600
+ say "Regenerating plugins"
601
+
602
+ args = %w[--all --only-plugins --silent]
603
+ args << "--bindir=#{bindir}"
604
+ args << "--install-dir=#{default_dir}"
605
+
606
+ command = Gem::Commands::PristineCommand.new
607
+ command.invoke(*args)
608
+ end
609
+
629
610
  private
630
611
 
612
+ def default_dir
613
+ prefix = options[:prefix]
614
+
615
+ if prefix.empty?
616
+ dir = Gem.default_dir
617
+ else
618
+ dir = prefix
619
+ end
620
+
621
+ prepend_destdir_if_present(dir)
622
+ end
623
+
624
+ def prepend_destdir_if_present(path)
625
+ destdir = options[:destdir]
626
+ return path if destdir.empty?
627
+
628
+ File.join(options[:destdir], path.gsub(/^[a-zA-Z]:/, ""))
629
+ end
630
+
631
+ def install_file_list(files, dest_dir)
632
+ files.each do |file|
633
+ install_file file, dest_dir
634
+ end
635
+ end
636
+
637
+ def install_file(file, dest_dir)
638
+ dest_file = File.join dest_dir, file
639
+ dest_dir = File.dirname dest_file
640
+ unless File.directory? dest_dir
641
+ mkdir_p dest_dir, :mode => 0755
642
+ end
643
+
644
+ install file, dest_file, :mode => options[:data_mode] || 0644
645
+ end
646
+
647
+ def remove_file_list(files, dir)
648
+ Dir.chdir dir do
649
+ files.each do |file|
650
+ FileUtils.rm_f file
651
+
652
+ warn "unable to remove old file #{file} please remove it by hand" if
653
+ File.exist? file
654
+ end
655
+ end
656
+ end
657
+
631
658
  def target_bin_path(bin_dir, bin_file)
632
659
  bin_file_formatted = if options[:format_executable]
633
- Gem.default_exec_format % bin_file
634
- else
635
- bin_file
636
- end
660
+ Gem.default_exec_format % bin_file
661
+ else
662
+ bin_file
663
+ end
637
664
  File.join bin_dir, bin_file_formatted
638
665
  end
639
666
 
640
667
  def bin_file_names
641
668
  @bin_file_names ||= []
642
669
  end
643
-
644
670
  end