rubygems-update 3.0.6 → 3.2.14

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 (628) hide show
  1. checksums.yaml +4 -4
  2. data/{History.txt → CHANGELOG.md} +1100 -436
  3. data/CODE_OF_CONDUCT.md +55 -19
  4. data/CONTRIBUTING.md +37 -10
  5. data/MAINTAINERS.txt +1 -6
  6. data/Manifest.txt +104 -64
  7. data/POLICIES.md +6 -12
  8. data/README.md +6 -6
  9. data/Rakefile +121 -111
  10. data/bin/gem +0 -6
  11. data/bin/update_rubygems +2 -2
  12. data/bundler/CHANGELOG.md +1788 -1251
  13. data/bundler/LICENSE.md +18 -19
  14. data/bundler/README.md +9 -10
  15. data/bundler/UPGRADING.md +215 -0
  16. data/bundler/bundler.gemspec +9 -26
  17. data/bundler/exe/bundle +22 -3
  18. data/bundler/lib/bundler.rb +233 -94
  19. data/bundler/lib/bundler/build_metadata.rb +5 -13
  20. data/bundler/lib/bundler/capistrano.rb +4 -4
  21. data/bundler/lib/bundler/cli.rb +221 -148
  22. data/bundler/lib/bundler/cli/add.rb +28 -16
  23. data/bundler/lib/bundler/cli/binstubs.rb +6 -2
  24. data/bundler/lib/bundler/cli/cache.rb +24 -17
  25. data/bundler/lib/bundler/cli/clean.rb +1 -1
  26. data/bundler/lib/bundler/cli/common.rb +25 -12
  27. data/bundler/lib/bundler/cli/config.rb +161 -86
  28. data/bundler/lib/bundler/cli/console.rb +1 -1
  29. data/bundler/lib/bundler/cli/doctor.rb +5 -5
  30. data/bundler/lib/bundler/cli/exec.rb +8 -20
  31. data/bundler/lib/bundler/cli/fund.rb +36 -0
  32. data/bundler/lib/bundler/cli/gem.rb +125 -32
  33. data/bundler/lib/bundler/cli/info.rb +29 -6
  34. data/bundler/lib/bundler/cli/init.rb +2 -2
  35. data/bundler/lib/bundler/cli/inject.rb +1 -1
  36. data/bundler/lib/bundler/cli/install.rb +27 -23
  37. data/bundler/lib/bundler/cli/issue.rb +5 -5
  38. data/bundler/lib/bundler/cli/list.rb +12 -10
  39. data/bundler/lib/bundler/cli/open.rb +10 -6
  40. data/bundler/lib/bundler/cli/outdated.rb +134 -109
  41. data/bundler/lib/bundler/cli/plugin.rb +19 -2
  42. data/bundler/lib/bundler/cli/pristine.rb +6 -1
  43. data/bundler/lib/bundler/cli/show.rb +2 -2
  44. data/bundler/lib/bundler/cli/update.rb +34 -12
  45. data/bundler/lib/bundler/compact_index_client.rb +26 -10
  46. data/bundler/lib/bundler/compact_index_client/cache.rb +6 -14
  47. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
  48. data/bundler/lib/bundler/compact_index_client/updater.rb +8 -20
  49. data/bundler/lib/bundler/current_ruby.rb +9 -7
  50. data/bundler/lib/bundler/definition.rb +133 -132
  51. data/bundler/lib/bundler/dep_proxy.rb +16 -9
  52. data/bundler/lib/bundler/dependency.rb +19 -14
  53. data/bundler/lib/bundler/deployment.rb +1 -1
  54. data/bundler/lib/bundler/dsl.rb +54 -71
  55. data/bundler/lib/bundler/endpoint_specification.rb +1 -1
  56. data/bundler/lib/bundler/env.rb +9 -14
  57. data/bundler/lib/bundler/environment_preserver.rb +26 -3
  58. data/bundler/lib/bundler/errors.rb +1 -0
  59. data/bundler/lib/bundler/feature_flag.rb +19 -34
  60. data/bundler/lib/bundler/fetcher.rb +19 -16
  61. data/bundler/lib/bundler/fetcher/base.rb +1 -1
  62. data/bundler/lib/bundler/fetcher/compact_index.rb +27 -13
  63. data/bundler/lib/bundler/fetcher/dependency.rb +1 -1
  64. data/bundler/lib/bundler/fetcher/downloader.rb +6 -3
  65. data/bundler/lib/bundler/fetcher/index.rb +8 -7
  66. data/bundler/lib/bundler/friendly_errors.rb +27 -19
  67. data/bundler/lib/bundler/gem_helper.rb +68 -37
  68. data/bundler/lib/bundler/gem_helpers.rb +38 -29
  69. data/bundler/lib/bundler/gem_tasks.rb +1 -1
  70. data/bundler/lib/bundler/gem_version_promoter.rb +5 -5
  71. data/bundler/lib/bundler/graph.rb +3 -3
  72. data/bundler/lib/bundler/index.rb +12 -7
  73. data/bundler/lib/bundler/injector.rb +32 -12
  74. data/bundler/lib/bundler/inline.rb +41 -30
  75. data/bundler/lib/bundler/installer.rb +41 -60
  76. data/bundler/lib/bundler/installer/gem_installer.rb +8 -4
  77. data/bundler/lib/bundler/installer/parallel_installer.rb +20 -26
  78. data/bundler/lib/bundler/installer/standalone.rb +18 -4
  79. data/bundler/lib/bundler/lazy_specification.rb +41 -27
  80. data/bundler/lib/bundler/lockfile_generator.rb +1 -1
  81. data/bundler/lib/bundler/lockfile_parser.rb +16 -33
  82. data/bundler/lib/bundler/{ssl_certs → man}/.document +0 -0
  83. data/bundler/lib/bundler/man/bundle-add.1 +66 -0
  84. data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +7 -1
  85. data/bundler/lib/bundler/man/bundle-binstubs.1 +42 -0
  86. data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +3 -5
  87. data/bundler/lib/bundler/man/bundle-cache.1 +55 -0
  88. data/bundler/{man/bundle-package.ronn → lib/bundler/man/bundle-cache.1.ronn} +15 -15
  89. data/bundler/lib/bundler/man/bundle-check.1 +31 -0
  90. data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
  91. data/bundler/lib/bundler/man/bundle-clean.1 +24 -0
  92. data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
  93. data/bundler/lib/bundler/man/bundle-config.1 +488 -0
  94. data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +59 -67
  95. data/bundler/lib/bundler/man/bundle-doctor.1 +44 -0
  96. data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
  97. data/bundler/lib/bundler/man/bundle-exec.1 +165 -0
  98. data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +1 -1
  99. data/bundler/lib/bundler/man/bundle-gem.1 +102 -0
  100. data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
  101. data/bundler/lib/bundler/man/bundle-info.1 +20 -0
  102. data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
  103. data/bundler/lib/bundler/man/bundle-init.1 +25 -0
  104. data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +1 -1
  105. data/bundler/lib/bundler/man/bundle-inject.1 +33 -0
  106. data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
  107. data/bundler/lib/bundler/man/bundle-install.1 +338 -0
  108. data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +34 -7
  109. data/bundler/lib/bundler/man/bundle-list.1 +50 -0
  110. data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
  111. data/bundler/lib/bundler/man/bundle-lock.1 +84 -0
  112. data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
  113. data/bundler/lib/bundler/man/bundle-open.1 +32 -0
  114. data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
  115. data/bundler/lib/bundler/man/bundle-outdated.1 +155 -0
  116. data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
  117. data/bundler/lib/bundler/man/bundle-platform.1 +61 -0
  118. data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
  119. data/bundler/lib/bundler/man/bundle-pristine.1 +34 -0
  120. data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
  121. data/bundler/lib/bundler/man/bundle-remove.1 +31 -0
  122. data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
  123. data/bundler/lib/bundler/man/bundle-show.1 +23 -0
  124. data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
  125. data/bundler/lib/bundler/man/bundle-update.1 +394 -0
  126. data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +3 -3
  127. data/bundler/lib/bundler/man/bundle-viz.1 +39 -0
  128. data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
  129. data/bundler/lib/bundler/man/bundle.1 +136 -0
  130. data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +2 -2
  131. data/bundler/lib/bundler/man/gemfile.5 +686 -0
  132. data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +16 -20
  133. data/bundler/lib/bundler/man/index.txt +25 -0
  134. data/bundler/lib/bundler/match_platform.rb +1 -1
  135. data/bundler/lib/bundler/mirror.rb +5 -5
  136. data/bundler/lib/bundler/plugin.rb +75 -36
  137. data/bundler/lib/bundler/plugin/api.rb +1 -1
  138. data/bundler/lib/bundler/plugin/api/source.rb +12 -7
  139. data/bundler/lib/bundler/plugin/dsl.rb +1 -1
  140. data/bundler/lib/bundler/plugin/index.rb +24 -4
  141. data/bundler/lib/bundler/plugin/installer.rb +33 -22
  142. data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
  143. data/bundler/lib/bundler/plugin/source_list.rb +5 -1
  144. data/bundler/lib/bundler/psyched_yaml.rb +0 -15
  145. data/bundler/lib/bundler/remote_specification.rb +5 -4
  146. data/bundler/lib/bundler/resolver.rb +191 -87
  147. data/bundler/lib/bundler/resolver/spec_group.rb +76 -48
  148. data/bundler/lib/bundler/retry.rb +3 -3
  149. data/bundler/lib/bundler/ruby_version.rb +5 -20
  150. data/bundler/lib/bundler/rubygems_ext.rb +76 -72
  151. data/bundler/lib/bundler/rubygems_gem_installer.rb +47 -13
  152. data/bundler/lib/bundler/rubygems_integration.rb +159 -444
  153. data/bundler/lib/bundler/runtime.rb +6 -23
  154. data/bundler/lib/bundler/settings.rb +67 -93
  155. data/bundler/lib/bundler/setup.rb +11 -12
  156. data/bundler/lib/bundler/shared_helpers.rb +54 -80
  157. data/bundler/lib/bundler/similarity_detector.rb +3 -3
  158. data/bundler/lib/bundler/source.rb +12 -6
  159. data/bundler/lib/bundler/source/git.rb +47 -38
  160. data/bundler/lib/bundler/source/git/git_proxy.rb +101 -102
  161. data/bundler/lib/bundler/source/metadata.rb +7 -6
  162. data/bundler/lib/bundler/source/path.rb +20 -11
  163. data/bundler/lib/bundler/source/path/installer.rb +10 -10
  164. data/bundler/lib/bundler/source/rubygems.rb +56 -29
  165. data/bundler/lib/bundler/source/rubygems/remote.rb +3 -4
  166. data/bundler/lib/bundler/source_list.rb +32 -30
  167. data/bundler/lib/bundler/spec_set.rb +37 -25
  168. data/bundler/lib/bundler/stub_specification.rb +40 -34
  169. data/bundler/lib/bundler/templates/Executable.bundler +23 -14
  170. data/bundler/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
  171. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  172. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +16 -2
  173. data/bundler/lib/bundler/templates/newgem/README.md.tt +7 -5
  174. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +19 -5
  175. data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
  176. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
  177. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
  178. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
  179. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
  180. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
  181. data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  182. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +18 -31
  183. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
  184. data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  185. data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  186. data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
  187. data/bundler/lib/bundler/templates/newgem/test/minitest/test_helper.rb.tt +6 -0
  188. data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  189. data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  190. data/bundler/lib/bundler/templates/newgem/travis.yml.tt +0 -1
  191. data/bundler/lib/bundler/ui.rb +3 -3
  192. data/bundler/lib/bundler/ui/rg_proxy.rb +1 -1
  193. data/bundler/lib/bundler/ui/shell.rb +7 -11
  194. data/bundler/lib/bundler/uri_credentials_filter.rb +10 -4
  195. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +161 -0
  196. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +66 -0
  197. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +176 -0
  198. data/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
  199. data/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +273 -147
  200. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +5 -6
  201. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +7 -0
  202. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +36 -4
  203. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
  204. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
  205. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
  206. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
  207. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +6 -6
  208. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
  209. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +3 -3
  210. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +39 -11
  211. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +4 -4
  212. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  213. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +11 -0
  214. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +53 -51
  215. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +2 -2
  216. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +302 -462
  217. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +40 -0
  218. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +53 -0
  219. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
  220. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +16 -9
  221. data/bundler/lib/bundler/vendor/thor/lib/thor/actions.rb +28 -13
  222. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +1 -1
  223. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +3 -2
  224. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +7 -17
  225. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +20 -9
  226. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +19 -8
  227. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +63 -43
  228. data/bundler/lib/bundler/vendor/thor/lib/thor/command.rb +21 -14
  229. data/bundler/lib/bundler/vendor/thor/lib/thor/error.rb +78 -0
  230. data/bundler/lib/bundler/vendor/thor/lib/thor/group.rb +3 -3
  231. data/bundler/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -0
  232. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor.rb +2 -2
  233. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +1 -1
  234. data/bundler/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +6 -6
  235. data/bundler/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
  236. data/bundler/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
  237. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +7 -3
  238. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/option.rb +20 -7
  239. data/bundler/lib/bundler/vendor/thor/lib/thor/parser/options.rb +21 -5
  240. data/bundler/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +1 -0
  241. data/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +15 -14
  242. data/bundler/lib/bundler/vendor/thor/lib/thor/shell.rb +4 -4
  243. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +65 -8
  244. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb +10 -2
  245. data/bundler/lib/bundler/vendor/thor/lib/thor/shell/html.rb +3 -3
  246. data/bundler/lib/bundler/vendor/thor/lib/thor/util.rb +18 -2
  247. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  248. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
  249. data/bundler/lib/bundler/vendor/uri/lib/uri.rb +104 -0
  250. data/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +744 -0
  251. data/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +94 -0
  252. data/bundler/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
  253. data/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +1568 -0
  254. data/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +88 -0
  255. data/bundler/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
  256. data/bundler/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
  257. data/bundler/lib/bundler/vendor/uri/lib/uri/ldaps.rb +21 -0
  258. data/bundler/lib/bundler/vendor/uri/lib/uri/mailto.rb +294 -0
  259. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +546 -0
  260. data/bundler/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +125 -0
  261. data/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
  262. data/bundler/lib/bundler/vendored_fileutils.rb +1 -6
  263. data/bundler/lib/bundler/vendored_molinillo.rb +1 -1
  264. data/bundler/lib/bundler/vendored_persistent.rb +7 -12
  265. data/bundler/lib/bundler/vendored_thor.rb +2 -2
  266. data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
  267. data/bundler/lib/bundler/vendored_uri.rb +4 -0
  268. data/bundler/lib/bundler/version.rb +1 -20
  269. data/bundler/lib/bundler/version_ranges.rb +51 -5
  270. data/bundler/lib/bundler/vlad.rb +2 -2
  271. data/bundler/lib/bundler/worker.rb +2 -4
  272. data/bundler/lib/bundler/yaml_serializer.rb +3 -4
  273. data/lib/rubygems.rb +198 -222
  274. data/lib/rubygems/available_set.rb +4 -5
  275. data/lib/rubygems/basic_specification.rb +32 -19
  276. data/lib/rubygems/bundler_version_finder.rb +19 -9
  277. data/lib/rubygems/command.rb +73 -21
  278. data/lib/rubygems/command_manager.rb +5 -12
  279. data/lib/rubygems/commands/build_command.rb +51 -18
  280. data/lib/rubygems/commands/cert_command.rb +2 -11
  281. data/lib/rubygems/commands/check_command.rb +0 -2
  282. data/lib/rubygems/commands/cleanup_command.rb +17 -13
  283. data/lib/rubygems/commands/contents_command.rb +7 -9
  284. data/lib/rubygems/commands/dependency_command.rb +9 -10
  285. data/lib/rubygems/commands/environment_command.rb +1 -6
  286. data/lib/rubygems/commands/fetch_command.rb +2 -4
  287. data/lib/rubygems/commands/generate_index_command.rb +3 -2
  288. data/lib/rubygems/commands/help_command.rb +4 -4
  289. data/lib/rubygems/commands/info_command.rb +9 -4
  290. data/lib/rubygems/commands/install_command.rb +12 -54
  291. data/lib/rubygems/commands/list_command.rb +8 -7
  292. data/lib/rubygems/commands/lock_command.rb +3 -5
  293. data/lib/rubygems/commands/mirror_command.rb +0 -1
  294. data/lib/rubygems/commands/open_command.rb +1 -4
  295. data/lib/rubygems/commands/outdated_command.rb +0 -1
  296. data/lib/rubygems/commands/owner_command.rb +10 -10
  297. data/lib/rubygems/commands/pristine_command.rb +13 -9
  298. data/lib/rubygems/commands/push_command.rb +12 -51
  299. data/lib/rubygems/commands/query_command.rb +14 -330
  300. data/lib/rubygems/commands/rdoc_command.rb +0 -1
  301. data/lib/rubygems/commands/search_command.rb +7 -7
  302. data/lib/rubygems/commands/server_command.rb +3 -1
  303. data/lib/rubygems/commands/setup_command.rb +143 -101
  304. data/lib/rubygems/commands/signin_command.rb +0 -1
  305. data/lib/rubygems/commands/signout_command.rb +0 -2
  306. data/lib/rubygems/commands/sources_command.rb +22 -6
  307. data/lib/rubygems/commands/specification_command.rb +8 -3
  308. data/lib/rubygems/commands/stale_command.rb +1 -1
  309. data/lib/rubygems/commands/uninstall_command.rb +2 -3
  310. data/lib/rubygems/commands/unpack_command.rb +3 -32
  311. data/lib/rubygems/commands/update_command.rb +73 -28
  312. data/lib/rubygems/commands/which_command.rb +0 -1
  313. data/lib/rubygems/commands/yank_command.rb +10 -7
  314. data/lib/rubygems/compatibility.rb +4 -4
  315. data/lib/rubygems/config_file.rb +48 -27
  316. data/lib/rubygems/core_ext/kernel_gem.rb +7 -6
  317. data/lib/rubygems/core_ext/kernel_require.rb +44 -6
  318. data/lib/rubygems/core_ext/kernel_warn.rb +22 -13
  319. data/lib/rubygems/core_ext/tcpsocket_init.rb +52 -0
  320. data/lib/rubygems/defaults.rb +110 -23
  321. data/lib/rubygems/dependency.rb +28 -14
  322. data/lib/rubygems/dependency_installer.rb +11 -166
  323. data/lib/rubygems/dependency_list.rb +17 -18
  324. data/lib/rubygems/deprecate.rb +51 -6
  325. data/lib/rubygems/doctor.rb +4 -4
  326. data/lib/rubygems/errors.rb +5 -7
  327. data/lib/rubygems/exceptions.rb +2 -24
  328. data/lib/rubygems/ext.rb +6 -6
  329. data/lib/rubygems/ext/build_error.rb +2 -0
  330. data/lib/rubygems/ext/builder.rb +45 -82
  331. data/lib/rubygems/ext/cmake_builder.rb +6 -7
  332. data/lib/rubygems/ext/configure_builder.rb +5 -8
  333. data/lib/rubygems/ext/ext_conf_builder.rb +27 -23
  334. data/lib/rubygems/ext/rake_builder.rb +4 -6
  335. data/lib/rubygems/gem_runner.rb +3 -10
  336. data/lib/rubygems/gemcutter_utilities.rb +111 -37
  337. data/lib/rubygems/indexer.rb +9 -26
  338. data/lib/rubygems/install_update_options.rb +7 -7
  339. data/lib/rubygems/installer.rb +91 -98
  340. data/lib/rubygems/installer_test_case.rb +104 -42
  341. data/lib/rubygems/installer_uninstaller_utils.rb +29 -0
  342. data/lib/rubygems/local_remote_options.rb +1 -1
  343. data/lib/rubygems/mock_gem_ui.rb +1 -4
  344. data/lib/rubygems/name_tuple.rb +4 -7
  345. data/lib/rubygems/openssl.rb +7 -0
  346. data/lib/rubygems/package.rb +49 -32
  347. data/lib/rubygems/package/digest_io.rb +0 -2
  348. data/lib/rubygems/package/file_source.rb +0 -2
  349. data/lib/rubygems/package/io_source.rb +0 -2
  350. data/lib/rubygems/package/old.rb +1 -3
  351. data/lib/rubygems/package/tar_header.rb +4 -6
  352. data/lib/rubygems/package/tar_reader.rb +15 -12
  353. data/lib/rubygems/package/tar_reader/entry.rb +0 -3
  354. data/lib/rubygems/package/tar_test_case.rb +2 -4
  355. data/lib/rubygems/package/tar_writer.rb +6 -16
  356. data/lib/rubygems/package_task.rb +1 -7
  357. data/lib/rubygems/path_support.rb +2 -2
  358. data/lib/rubygems/platform.rb +22 -16
  359. data/lib/rubygems/query_utils.rb +353 -0
  360. data/lib/rubygems/rdoc.rb +0 -12
  361. data/lib/rubygems/remote_fetcher.rb +33 -59
  362. data/lib/rubygems/request.rb +11 -14
  363. data/lib/rubygems/request/connection_pools.rb +3 -7
  364. data/lib/rubygems/request/http_pool.rb +0 -1
  365. data/lib/rubygems/request_set.rb +10 -23
  366. data/lib/rubygems/request_set/gem_dependency_api.rb +9 -11
  367. data/lib/rubygems/request_set/lockfile.rb +13 -12
  368. data/lib/rubygems/request_set/lockfile/parser.rb +2 -2
  369. data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -1
  370. data/lib/rubygems/requirement.rb +36 -35
  371. data/lib/rubygems/resolver.rb +20 -16
  372. data/lib/rubygems/resolver/activation_request.rb +27 -51
  373. data/lib/rubygems/resolver/api_set.rb +31 -24
  374. data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
  375. data/lib/rubygems/resolver/api_specification.rb +24 -10
  376. data/lib/rubygems/resolver/best_set.rb +4 -6
  377. data/lib/rubygems/resolver/composed_set.rb +3 -5
  378. data/lib/rubygems/resolver/conflict.rb +2 -9
  379. data/lib/rubygems/resolver/current_set.rb +0 -2
  380. data/lib/rubygems/resolver/dependency_request.rb +1 -3
  381. data/lib/rubygems/resolver/git_set.rb +0 -2
  382. data/lib/rubygems/resolver/git_specification.rb +0 -2
  383. data/lib/rubygems/resolver/index_set.rb +1 -3
  384. data/lib/rubygems/resolver/index_specification.rb +32 -2
  385. data/lib/rubygems/resolver/installed_specification.rb +0 -2
  386. data/lib/rubygems/resolver/installer_set.rb +63 -16
  387. data/lib/rubygems/resolver/local_specification.rb +0 -2
  388. data/lib/rubygems/resolver/lock_set.rb +3 -5
  389. data/lib/rubygems/resolver/lock_specification.rb +2 -4
  390. data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
  391. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
  392. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +8 -0
  393. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +39 -6
  394. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
  395. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
  396. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
  397. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
  398. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
  399. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
  400. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
  401. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
  402. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +51 -12
  403. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +76 -8
  404. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
  405. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +12 -0
  406. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
  407. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +510 -165
  408. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
  409. data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
  410. data/lib/rubygems/resolver/requirement_list.rb +0 -1
  411. data/lib/rubygems/resolver/set.rb +0 -2
  412. data/lib/rubygems/resolver/source_set.rb +0 -2
  413. data/lib/rubygems/resolver/spec_specification.rb +14 -2
  414. data/lib/rubygems/resolver/specification.rb +13 -2
  415. data/lib/rubygems/resolver/vendor_set.rb +0 -2
  416. data/lib/rubygems/resolver/vendor_specification.rb +0 -2
  417. data/lib/rubygems/s3_uri_signer.rb +15 -13
  418. data/lib/rubygems/safe_yaml.rb +4 -4
  419. data/lib/rubygems/security.rb +27 -34
  420. data/lib/rubygems/security/policy.rb +4 -8
  421. data/lib/rubygems/security/signer.rb +8 -9
  422. data/lib/rubygems/security/trust_dir.rb +1 -3
  423. data/lib/rubygems/server.rb +20 -16
  424. data/lib/rubygems/source.rb +30 -13
  425. data/lib/rubygems/source/git.rb +7 -8
  426. data/lib/rubygems/source/installed.rb +0 -2
  427. data/lib/rubygems/source/local.rb +2 -4
  428. data/lib/rubygems/source/lock.rb +0 -2
  429. data/lib/rubygems/source/specific_file.rb +0 -2
  430. data/lib/rubygems/source/vendor.rb +0 -2
  431. data/lib/rubygems/source_list.rb +6 -6
  432. data/lib/rubygems/spec_fetcher.rb +22 -34
  433. data/lib/rubygems/specification.rb +207 -278
  434. data/lib/rubygems/specification_policy.rb +135 -57
  435. data/{bundler/lib/bundler/ssl_certs/index.rubygems.org → lib/rubygems/ssl_certs/rubygems.org}/GlobalSignRootCA.pem +0 -0
  436. data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
  437. data/lib/rubygems/stub_specification.rb +4 -5
  438. data/lib/rubygems/test_case.rb +221 -341
  439. data/lib/rubygems/test_utilities.rb +22 -18
  440. data/lib/rubygems/text.rb +2 -3
  441. data/lib/rubygems/uninstaller.rb +49 -30
  442. data/lib/rubygems/uri_formatter.rb +2 -4
  443. data/lib/rubygems/uri_parser.rb +34 -0
  444. data/lib/rubygems/uri_parsing.rb +23 -0
  445. data/lib/rubygems/user_interaction.rb +3 -20
  446. data/lib/rubygems/util.rb +20 -44
  447. data/lib/rubygems/util/licenses.rb +400 -400
  448. data/lib/rubygems/validator.rb +9 -31
  449. data/lib/rubygems/version.rb +29 -21
  450. data/lib/rubygems/version_option.rb +6 -0
  451. data/rubygems-update.gemspec +4 -11
  452. data/setup.rb +2 -7
  453. data/test/rubygems/data/null-required-ruby-version.gemspec.rz +0 -0
  454. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  455. data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
  456. data/test/rubygems/rubygems_plugin.rb +0 -2
  457. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
  458. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
  459. data/test/rubygems/test_bundled_ca.rb +42 -45
  460. data/test/rubygems/test_config.rb +0 -2
  461. data/test/rubygems/test_deprecate.rb +41 -5
  462. data/test/rubygems/test_gem.rb +405 -236
  463. data/test/rubygems/test_gem_available_set.rb +5 -6
  464. data/test/rubygems/test_gem_bundler_version_finder.rb +20 -2
  465. data/test/rubygems/test_gem_command.rb +144 -9
  466. data/test/rubygems/test_gem_command_manager.rb +40 -17
  467. data/test/rubygems/test_gem_commands_build_command.rb +386 -13
  468. data/test/rubygems/test_gem_commands_cert_command.rb +18 -6
  469. data/test/rubygems/test_gem_commands_check_command.rb +0 -2
  470. data/test/rubygems/test_gem_commands_cleanup_command.rb +35 -10
  471. data/test/rubygems/test_gem_commands_contents_command.rb +50 -19
  472. data/test/rubygems/test_gem_commands_dependency_command.rb +1 -3
  473. data/test/rubygems/test_gem_commands_environment_command.rb +21 -33
  474. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
  475. data/test/rubygems/test_gem_commands_generate_index_command.rb +32 -2
  476. data/test/rubygems/test_gem_commands_help_command.rb +16 -8
  477. data/test/rubygems/test_gem_commands_info_command.rb +6 -7
  478. data/test/rubygems/test_gem_commands_install_command.rb +368 -34
  479. data/test/rubygems/test_gem_commands_list_command.rb +0 -2
  480. data/test/rubygems/test_gem_commands_lock_command.rb +0 -2
  481. data/test/rubygems/test_gem_commands_mirror.rb +1 -2
  482. data/test/rubygems/test_gem_commands_open_command.rb +4 -6
  483. data/test/rubygems/test_gem_commands_outdated_command.rb +18 -1
  484. data/test/rubygems/test_gem_commands_owner_command.rb +62 -9
  485. data/test/rubygems/test_gem_commands_pristine_command.rb +148 -16
  486. data/test/rubygems/test_gem_commands_push_command.rb +94 -21
  487. data/test/rubygems/test_gem_commands_query_command.rb +35 -10
  488. data/test/rubygems/test_gem_commands_search_command.rb +0 -2
  489. data/test/rubygems/test_gem_commands_server_command.rb +6 -4
  490. data/test/rubygems/test_gem_commands_setup_command.rb +228 -128
  491. data/test/rubygems/test_gem_commands_signin_command.rb +36 -11
  492. data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
  493. data/test/rubygems/test_gem_commands_sources_command.rb +193 -9
  494. data/test/rubygems/test_gem_commands_specification_command.rb +46 -20
  495. data/test/rubygems/test_gem_commands_stale_command.rb +0 -2
  496. data/test/rubygems/test_gem_commands_uninstall_command.rb +108 -52
  497. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
  498. data/test/rubygems/test_gem_commands_update_command.rb +201 -29
  499. data/test/rubygems/test_gem_commands_which_command.rb +3 -5
  500. data/test/rubygems/test_gem_commands_yank_command.rb +86 -5
  501. data/test/rubygems/test_gem_config_file.rb +25 -13
  502. data/test/rubygems/test_gem_dependency.rb +6 -2
  503. data/test/rubygems/test_gem_dependency_installer.rb +169 -252
  504. data/test/rubygems/test_gem_dependency_list.rb +31 -26
  505. data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -3
  506. data/test/rubygems/test_gem_doctor.rb +28 -2
  507. data/test/rubygems/test_gem_ext_builder.rb +51 -44
  508. data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -23
  509. data/test/rubygems/test_gem_ext_configure_builder.rb +6 -14
  510. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +21 -29
  511. data/test/rubygems/test_gem_ext_rake_builder.rb +39 -22
  512. data/test/rubygems/test_gem_gem_runner.rb +47 -2
  513. data/test/rubygems/test_gem_gemcutter_utilities.rb +16 -13
  514. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
  515. data/test/rubygems/test_gem_indexer.rb +40 -55
  516. data/test/rubygems/test_gem_install_update_options.rb +45 -21
  517. data/test/rubygems/test_gem_installer.rb +661 -338
  518. data/test/rubygems/test_gem_local_remote_options.rb +0 -2
  519. data/test/rubygems/test_gem_name_tuple.rb +0 -2
  520. data/test/rubygems/test_gem_package.rb +132 -45
  521. data/test/rubygems/test_gem_package_old.rb +56 -55
  522. data/test/rubygems/test_gem_package_tar_header.rb +18 -1
  523. data/test/rubygems/test_gem_package_tar_reader.rb +0 -2
  524. data/test/rubygems/test_gem_package_tar_reader_entry.rb +6 -7
  525. data/test/rubygems/test_gem_package_tar_writer.rb +20 -12
  526. data/test/rubygems/test_gem_package_task.rb +46 -13
  527. data/test/rubygems/test_gem_path_support.rb +17 -13
  528. data/test/rubygems/test_gem_platform.rb +74 -7
  529. data/test/rubygems/test_gem_rdoc.rb +0 -1
  530. data/test/rubygems/test_gem_remote_fetcher.rb +223 -209
  531. data/test/rubygems/test_gem_request.rb +30 -19
  532. data/test/rubygems/test_gem_request_connection_pools.rb +2 -2
  533. data/test/rubygems/test_gem_request_set.rb +104 -29
  534. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +4 -6
  535. data/test/rubygems/test_gem_request_set_lockfile.rb +4 -5
  536. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -10
  537. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -118
  538. data/test/rubygems/test_gem_requirement.rb +50 -4
  539. data/test/rubygems/test_gem_resolver.rb +73 -31
  540. data/test/rubygems/test_gem_resolver_activation_request.rb +3 -34
  541. data/test/rubygems/test_gem_resolver_api_set.rb +60 -59
  542. data/test/rubygems/test_gem_resolver_api_specification.rb +3 -5
  543. data/test/rubygems/test_gem_resolver_best_set.rb +27 -6
  544. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -2
  545. data/test/rubygems/test_gem_resolver_conflict.rb +1 -7
  546. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -2
  547. data/test/rubygems/test_gem_resolver_git_set.rb +0 -2
  548. data/test/rubygems/test_gem_resolver_git_specification.rb +1 -2
  549. data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
  550. data/test/rubygems/test_gem_resolver_index_specification.rb +7 -4
  551. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -3
  552. data/test/rubygems/test_gem_resolver_installer_set.rb +10 -10
  553. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -2
  554. data/test/rubygems/test_gem_resolver_lock_set.rb +3 -5
  555. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -2
  556. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -2
  557. data/test/rubygems/test_gem_resolver_specification.rb +0 -2
  558. data/test/rubygems/test_gem_resolver_vendor_set.rb +1 -3
  559. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -2
  560. data/test/rubygems/test_gem_security.rb +27 -25
  561. data/test/rubygems/test_gem_security_policy.rb +7 -12
  562. data/test/rubygems/test_gem_security_signer.rb +11 -12
  563. data/test/rubygems/test_gem_security_trust_dir.rb +4 -6
  564. data/test/rubygems/test_gem_server.rb +13 -12
  565. data/test/rubygems/test_gem_silent_ui.rb +0 -1
  566. data/test/rubygems/test_gem_source.rb +32 -17
  567. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -1
  568. data/test/rubygems/test_gem_source_git.rb +12 -18
  569. data/test/rubygems/test_gem_source_installed.rb +11 -13
  570. data/test/rubygems/test_gem_source_list.rb +1 -1
  571. data/test/rubygems/test_gem_source_local.rb +8 -9
  572. data/test/rubygems/test_gem_source_lock.rb +17 -19
  573. data/test/rubygems/test_gem_source_specific_file.rb +9 -10
  574. data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
  575. data/test/rubygems/test_gem_source_vendor.rb +7 -9
  576. data/test/rubygems/test_gem_spec_fetcher.rb +11 -4
  577. data/test/rubygems/test_gem_specification.rb +363 -245
  578. data/test/rubygems/test_gem_stream_ui.rb +3 -1
  579. data/test/rubygems/test_gem_stub_specification.rb +6 -7
  580. data/test/rubygems/test_gem_text.rb +1 -2
  581. data/test/rubygems/test_gem_uninstaller.rb +165 -22
  582. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -2
  583. data/test/rubygems/test_gem_uri_formatter.rb +0 -2
  584. data/test/rubygems/test_gem_util.rb +17 -15
  585. data/test/rubygems/test_gem_validator.rb +4 -7
  586. data/test/rubygems/test_gem_version.rb +23 -10
  587. data/test/rubygems/test_gem_version_option.rb +1 -3
  588. data/test/rubygems/test_kernel.rb +25 -9
  589. data/test/rubygems/test_project_sanity.rb +20 -0
  590. data/test/rubygems/test_remote_fetch_error.rb +1 -2
  591. data/test/rubygems/test_require.rb +394 -56
  592. data/test/test_changelog_generator.rb +17 -0
  593. metadata +109 -155
  594. data/.rubocop.yml +0 -67
  595. data/.travis.yml +0 -38
  596. data/appveyor.yml +0 -43
  597. data/bundler/CODE_OF_CONDUCT.md +0 -42
  598. data/bundler/CONTRIBUTING.md +0 -17
  599. data/bundler/exe/bundle_ruby +0 -60
  600. data/bundler/lib/bundler/cli/package.rb +0 -49
  601. data/bundler/lib/bundler/compatibility_guard.rb +0 -14
  602. data/bundler/lib/bundler/gem_remote_fetcher.rb +0 -43
  603. data/bundler/lib/bundler/ssl_certs/certificate_manager.rb +0 -66
  604. data/bundler/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  605. data/bundler/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
  606. data/bundler/lib/bundler/templates/newgem/test/test_helper.rb.tt +0 -4
  607. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
  608. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +0 -27
  609. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb +0 -129
  610. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb +0 -12
  611. data/bundler/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb +0 -129
  612. data/lib/rubygems/source_local.rb +0 -7
  613. data/lib/rubygems/source_specific_file.rb +0 -6
  614. data/lib/rubygems/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +0 -21
  615. data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  616. data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
  617. data/lib/ubygems.rb +0 -14
  618. data/util/CL2notes +0 -55
  619. data/util/ci +0 -82
  620. data/util/cops/deprecations.rb +0 -52
  621. data/util/create_certs.rb +0 -171
  622. data/util/create_certs.sh +0 -27
  623. data/util/create_encrypted_key.rb +0 -16
  624. data/util/generate_spdx_license_list.rb +0 -61
  625. data/util/patch_with_prs.rb +0 -77
  626. data/util/rubocop +0 -8
  627. data/util/update_bundled_ca_certificates.rb +0 -139
  628. data/util/update_changelog.rb +0 -67
@@ -1,15 +1,21 @@
1
1
  # frozen_string_literal: true
2
2
  require 'rubygems/command'
3
- require 'rubygems/local_remote_options'
4
- require 'rubygems/spec_fetcher'
5
- require 'rubygems/version_option'
6
- require 'rubygems/text'
3
+ require 'rubygems/query_utils'
4
+ require 'rubygems/deprecate'
7
5
 
8
6
  class Gem::Commands::QueryCommand < Gem::Command
7
+ extend Gem::Deprecate
8
+ rubygems_deprecate_command
9
9
 
10
- include Gem::Text
11
- include Gem::LocalRemoteOptions
12
- include Gem::VersionOption
10
+ include Gem::QueryUtils
11
+
12
+ alias warning_without_suggested_alternatives deprecation_warning
13
+ def deprecation_warning
14
+ warning_without_suggested_alternatives
15
+
16
+ message = "It is recommended that you use `gem search` or `gem list` instead.\n"
17
+ alert_warning message unless Gem::Deprecate.skip
18
+ end
13
19
 
14
20
  def initialize(name = 'query',
15
21
  summary = 'Query gem information in local or remote repositories')
@@ -17,55 +23,13 @@ class Gem::Commands::QueryCommand < Gem::Command
17
23
  :name => //, :domain => :local, :details => false, :versions => true,
18
24
  :installed => nil, :version => Gem::Requirement.default
19
25
 
20
- add_option('-i', '--[no-]installed',
21
- 'Check for installed gem') do |value, options|
22
- options[:installed] = value
23
- end
24
-
25
- add_option('-I', 'Equivalent to --no-installed') do |value, options|
26
- options[:installed] = false
27
- end
28
-
29
- add_version_option command, "for use with --installed"
30
-
31
26
  add_option('-n', '--name-matches REGEXP',
32
27
  'Name of gem(s) to query on matches the',
33
28
  'provided REGEXP') do |value, options|
34
29
  options[:name] = /#{value}/i
35
30
  end
36
31
 
37
- add_option('-d', '--[no-]details',
38
- 'Display detailed information of gem(s)') do |value, options|
39
- options[:details] = value
40
- end
41
-
42
- add_option( '--[no-]versions',
43
- 'Display only gem names') do |value, options|
44
- options[:versions] = value
45
- options[:details] = false unless value
46
- end
47
-
48
- add_option('-a', '--all',
49
- 'Display all gem versions') do |value, options|
50
- options[:all] = value
51
- end
52
-
53
- add_option('-e', '--exact',
54
- 'Name of gem(s) to query on matches the',
55
- 'provided STRING') do |value, options|
56
- options[:exact] = value
57
- end
58
-
59
- add_option( '--[no-]prerelease',
60
- 'Display prerelease versions') do |value, options|
61
- options[:prerelease] = value
62
- end
63
-
64
- add_local_remote_options
65
- end
66
-
67
- def defaults_str # :nodoc:
68
- "--local --name-matches // --no-details --versions --no-installed"
32
+ add_query_options
69
33
  end
70
34
 
71
35
  def description # :nodoc:
@@ -76,284 +40,4 @@ You should really use the list and search commands instead. This command
76
40
  is too hard to use.
77
41
  EOF
78
42
  end
79
-
80
- def execute
81
- exit_code = 0
82
- if options[:args].to_a.empty? and options[:name].source.empty?
83
- name = options[:name]
84
- no_name = true
85
- elsif !options[:name].source.empty?
86
- name = Array(options[:name])
87
- else
88
- args = options[:args].to_a
89
- name = options[:exact] ? args.map{|arg| /\A#{Regexp.escape(arg)}\Z/ } : args.map{|arg| /#{arg}/i }
90
- end
91
-
92
- prerelease = options[:prerelease]
93
-
94
- unless options[:installed].nil?
95
- if no_name
96
- alert_error "You must specify a gem name"
97
- exit_code |= 4
98
- elsif name.count > 1
99
- alert_error "You must specify only ONE gem!"
100
- exit_code |= 4
101
- else
102
- installed = installed? name.first, options[:version]
103
- installed = !installed unless options[:installed]
104
-
105
- if installed
106
- say "true"
107
- else
108
- say "false"
109
- exit_code |= 1
110
- end
111
- end
112
-
113
- terminate_interaction exit_code
114
- end
115
-
116
- names = Array(name)
117
- names.each { |n| show_gems n, prerelease }
118
- end
119
-
120
- private
121
-
122
- def display_header(type)
123
- if (ui.outs.tty? and Gem.configuration.verbose) or both?
124
- say
125
- say "*** #{type} GEMS ***"
126
- say
127
- end
128
- end
129
-
130
- #Guts of original execute
131
- def show_gems(name, prerelease)
132
- req = Gem::Requirement.default
133
- # TODO: deprecate for real
134
- dep = Gem::Deprecate.skip_during { Gem::Dependency.new name, req }
135
- dep.prerelease = prerelease
136
-
137
- if local?
138
- if prerelease and not both?
139
- alert_warning "prereleases are always shown locally"
140
- end
141
-
142
- display_header 'LOCAL'
143
-
144
- specs = Gem::Specification.find_all { |s|
145
- s.name =~ name and req =~ s.version
146
- }
147
-
148
- spec_tuples = specs.map do |spec|
149
- [spec.name_tuple, spec]
150
- end
151
-
152
- output_query_results spec_tuples
153
- end
154
-
155
- if remote?
156
- display_header 'REMOTE'
157
-
158
- fetcher = Gem::SpecFetcher.fetcher
159
-
160
- type = if options[:all]
161
- if options[:prerelease]
162
- :complete
163
- else
164
- :released
165
- end
166
- elsif options[:prerelease]
167
- :prerelease
168
- else
169
- :latest
170
- end
171
-
172
- if name.respond_to?(:source) && name.source.empty?
173
- spec_tuples = fetcher.detect(type) { true }
174
- else
175
- spec_tuples = fetcher.detect(type) do |name_tuple|
176
- name === name_tuple.name
177
- end
178
- end
179
-
180
- output_query_results spec_tuples
181
- end
182
- end
183
-
184
- ##
185
- # Check if gem +name+ version +version+ is installed.
186
-
187
- def installed?(name, req = Gem::Requirement.default)
188
- Gem::Specification.any? { |s| s.name =~ name and req =~ s.version }
189
- end
190
-
191
- def output_query_results(spec_tuples)
192
- output = []
193
- versions = Hash.new { |h,name| h[name] = [] }
194
-
195
- spec_tuples.each do |spec_tuple, source|
196
- versions[spec_tuple.name] << [spec_tuple, source]
197
- end
198
-
199
- versions = versions.sort_by do |(n,_),_|
200
- n.downcase
201
- end
202
-
203
- output_versions output, versions
204
-
205
- say output.join(options[:details] ? "\n\n" : "\n")
206
- end
207
-
208
- def output_versions(output, versions)
209
- versions.each do |gem_name, matching_tuples|
210
- matching_tuples = matching_tuples.sort_by { |n,_| n.version }.reverse
211
-
212
- platforms = Hash.new { |h,version| h[version] = [] }
213
-
214
- matching_tuples.each do |n, _|
215
- platforms[n.version] << n.platform if n.platform
216
- end
217
-
218
- seen = {}
219
-
220
- matching_tuples.delete_if do |n,_|
221
- if seen[n.version]
222
- true
223
- else
224
- seen[n.version] = true
225
- false
226
- end
227
- end
228
-
229
- output << clean_text(make_entry(matching_tuples, platforms))
230
- end
231
- end
232
-
233
- def entry_details(entry, detail_tuple, specs, platforms)
234
- return unless options[:details]
235
-
236
- name_tuple, spec = detail_tuple
237
-
238
- spec = spec.fetch_spec name_tuple if spec.respond_to? :fetch_spec
239
-
240
- entry << "\n"
241
-
242
- spec_platforms entry, platforms
243
- spec_authors entry, spec
244
- spec_homepage entry, spec
245
- spec_license entry, spec
246
- spec_loaded_from entry, spec, specs
247
- spec_summary entry, spec
248
- end
249
-
250
- def entry_versions(entry, name_tuples, platforms, specs)
251
- return unless options[:versions]
252
-
253
- list =
254
- if platforms.empty? or options[:details]
255
- name_tuples.map { |n| n.version }.uniq
256
- else
257
- platforms.sort.reverse.map do |version, pls|
258
- out = version.to_s
259
-
260
- if options[:domain] == :local
261
- default = specs.any? do |s|
262
- !s.is_a?(Gem::Source) && s.version == version && s.default_gem?
263
- end
264
- out = "default: #{out}" if default
265
- end
266
-
267
- if pls != [Gem::Platform::RUBY]
268
- platform_list = [pls.delete(Gem::Platform::RUBY), *pls.sort].compact
269
- out = platform_list.unshift(out).join(' ')
270
- end
271
-
272
- out
273
- end
274
- end
275
-
276
- entry << " (#{list.join ', '})"
277
- end
278
-
279
- def make_entry(entry_tuples, platforms)
280
- detail_tuple = entry_tuples.first
281
-
282
- name_tuples, specs = entry_tuples.flatten.partition do |item|
283
- Gem::NameTuple === item
284
- end
285
-
286
- entry = [name_tuples.first.name]
287
-
288
- entry_versions entry, name_tuples, platforms, specs
289
- entry_details entry, detail_tuple, specs, platforms
290
-
291
- entry.join
292
- end
293
-
294
- def spec_authors(entry, spec)
295
- authors = "Author#{spec.authors.length > 1 ? 's' : ''}: ".dup
296
- authors << spec.authors.join(', ')
297
- entry << format_text(authors, 68, 4)
298
- end
299
-
300
- def spec_homepage(entry, spec)
301
- return if spec.homepage.nil? or spec.homepage.empty?
302
-
303
- entry << "\n" << format_text("Homepage: #{spec.homepage}", 68, 4)
304
- end
305
-
306
- def spec_license(entry, spec)
307
- return if spec.license.nil? or spec.license.empty?
308
-
309
- licenses = "License#{spec.licenses.length > 1 ? 's' : ''}: ".dup
310
- licenses << spec.licenses.join(', ')
311
- entry << "\n" << format_text(licenses, 68, 4)
312
- end
313
-
314
- def spec_loaded_from(entry, spec, specs)
315
- return unless spec.loaded_from
316
-
317
- if specs.length == 1
318
- default = spec.default_gem? ? ' (default)' : nil
319
- entry << "\n" << " Installed at#{default}: #{spec.base_dir}"
320
- else
321
- label = 'Installed at'
322
- specs.each do |s|
323
- version = s.version.to_s
324
- version << ', default' if s.default_gem?
325
- entry << "\n" << " #{label} (#{version}): #{s.base_dir}"
326
- label = ' ' * label.length
327
- end
328
- end
329
- end
330
-
331
- def spec_platforms(entry, platforms)
332
- non_ruby = platforms.any? do |_, pls|
333
- pls.any? { |pl| pl != Gem::Platform::RUBY }
334
- end
335
-
336
- return unless non_ruby
337
-
338
- if platforms.length == 1
339
- title = platforms.values.length == 1 ? 'Platform' : 'Platforms'
340
- entry << " #{title}: #{platforms.values.sort.join ', '}\n"
341
- else
342
- entry << " Platforms:\n"
343
- platforms.sort_by do |version,|
344
- version
345
- end.each do |version, pls|
346
- label = " #{version}: "
347
- data = format_text pls.sort.join(', '), 68, label.length
348
- data[0, label.length] = label
349
- entry << data << "\n"
350
- end
351
- end
352
- end
353
-
354
- def spec_summary(entry, spec)
355
- summary = truncate_text(spec.summary, "the summary for #{spec.full_name}")
356
- entry << "\n\n" << format_text(summary, 68, 4)
357
- end
358
-
359
43
  end
@@ -92,5 +92,4 @@ Use --overwrite to force rebuilding of documentation.
92
92
  end
93
93
  end
94
94
  end
95
-
96
95
  end
@@ -1,15 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
  require 'rubygems/command'
3
- require 'rubygems/commands/query_command'
3
+ require 'rubygems/query_utils'
4
4
 
5
- class Gem::Commands::SearchCommand < Gem::Commands::QueryCommand
5
+ class Gem::Commands::SearchCommand < Gem::Command
6
+ include Gem::QueryUtils
6
7
 
7
8
  def initialize
8
- super 'search', 'Display remote gems whose name matches REGEXP'
9
+ super 'search', 'Display remote gems whose name matches REGEXP',
10
+ :name => //, :domain => :remote, :details => false, :versions => true,
11
+ :installed => nil, :version => Gem::Requirement.default
9
12
 
10
- remove_option '--name-matches'
11
-
12
- defaults[:domain] = :remote
13
+ add_query_options
13
14
  end
14
15
 
15
16
  def arguments # :nodoc:
@@ -36,5 +37,4 @@ To list local gems use the list command.
36
37
  def usage # :nodoc:
37
38
  "#{program_name} [REGEXP]"
38
39
  end
39
-
40
40
  end
@@ -1,8 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
  require 'rubygems/command'
3
3
  require 'rubygems/server'
4
+ require 'rubygems/deprecate'
4
5
 
5
6
  class Gem::Commands::ServerCommand < Gem::Command
7
+ extend Gem::Deprecate
8
+ rubygems_deprecate_command
6
9
 
7
10
  def initialize
8
11
  super 'server', 'Documentation and gem repository HTTP server',
@@ -82,5 +85,4 @@ You can set up a shortcut to gem server documentation using the URL:
82
85
  options[:gemdir] = Gem.path if options[:gemdir].empty?
83
86
  Gem::Server.run options
84
87
  end
85
-
86
88
  end
@@ -6,8 +6,8 @@ require 'rubygems/command'
6
6
  # RubyGems checkout or tarball.
7
7
 
8
8
  class Gem::Commands::SetupCommand < Gem::Command
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
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
11
11
 
12
12
  ENV_PATHS = %w[/usr/bin/env /bin/env].freeze
13
13
 
@@ -15,10 +15,12 @@ class Gem::Commands::SetupCommand < Gem::Command
15
15
  require 'tmpdir'
16
16
 
17
17
  super 'setup', 'Install RubyGems',
18
- :format_executable => true, :document => %w[ri],
18
+ :format_executable => false, :document => %w[ri],
19
+ :force => true,
19
20
  :site_or_vendor => 'sitelibdir',
20
21
  :destdir => '', :prefix => '', :previous_version => '',
21
- :regenerate_binstubs => true
22
+ :regenerate_binstubs => true,
23
+ :regenerate_plugins => true
22
24
 
23
25
  add_option '--previous-version=VERSION',
24
26
  'Previous version of RubyGems',
@@ -87,6 +89,16 @@ class Gem::Commands::SetupCommand < Gem::Command
87
89
  options[:regenerate_binstubs] = value
88
90
  end
89
91
 
92
+ add_option '--[no-]regenerate-plugins',
93
+ 'Regenerate gem plugins' do |value, options|
94
+ options[:regenerate_plugins] = value
95
+ end
96
+
97
+ add_option '-f', '--[no-]force',
98
+ 'Forcefully overwrite binstubs' do |value, options|
99
+ options[:force] = value
100
+ end
101
+
90
102
  add_option('-E', '--[no-]env-shebang',
91
103
  'Rewrite executables with a shebang',
92
104
  'of /usr/bin/env') do |value, options|
@@ -97,7 +109,7 @@ class Gem::Commands::SetupCommand < Gem::Command
97
109
  end
98
110
 
99
111
  def check_ruby_version
100
- required_version = Gem::Requirement.new '>= 1.8.7'
112
+ required_version = Gem::Requirement.new '>= 2.3.0'
101
113
 
102
114
  unless required_version.satisfied_by? Gem.ruby_version
103
115
  alert_error "Expected Ruby version #{required_version}, is #{Gem.ruby_version}"
@@ -128,7 +140,7 @@ By default, this RubyGems will install gem as:
128
140
  end
129
141
 
130
142
  module MakeDirs
131
- def mkdir_p(path, *opts)
143
+ def mkdir_p(path, **opts)
132
144
  super
133
145
  (@mkdirs ||= []) << path
134
146
  end
@@ -155,6 +167,7 @@ By default, this RubyGems will install gem as:
155
167
  extend MakeDirs
156
168
 
157
169
  lib_dir, bin_dir = make_destination_dirs install_destdir
170
+ man_dir = generate_default_man_dir install_destdir
158
171
 
159
172
  install_lib lib_dir
160
173
 
@@ -164,7 +177,10 @@ By default, this RubyGems will install gem as:
164
177
 
165
178
  remove_old_lib_files lib_dir
166
179
 
167
- install_default_bundler_gem
180
+ # Can be removed one we drop support for bundler 2.2.3 (the last version installing man files to man_dir)
181
+ remove_old_man_files man_dir if man_dir && File.exist?(man_dir)
182
+
183
+ install_default_bundler_gem bin_dir
168
184
 
169
185
  if mode = options[:dir_mode]
170
186
  @mkdirs.uniq!
@@ -174,6 +190,7 @@ By default, this RubyGems will install gem as:
174
190
  say "RubyGems #{Gem::VERSION} installed"
175
191
 
176
192
  regenerate_binstubs if options[:regenerate_binstubs]
193
+ regenerate_plugins if options[:regenerate_plugins]
177
194
 
178
195
  uninstall_old_gemcutter
179
196
 
@@ -198,10 +215,10 @@ By default, this RubyGems will install gem as:
198
215
  say
199
216
 
200
217
  say "RubyGems installed the following executables:"
201
- say @bin_file_names.map { |name| "\t#{name}\n" }
218
+ say bin_file_names.map {|name| "\t#{name}\n" }
202
219
  say
203
220
 
204
- unless @bin_file_names.grep(/#{File::SEPARATOR}gem$/)
221
+ unless bin_file_names.grep(/#{File::SEPARATOR}gem$/)
205
222
  say "If `gem` was installed by a previous RubyGems installation, you may need"
206
223
  say "to remove it by hand."
207
224
  say
@@ -233,30 +250,20 @@ By default, this RubyGems will install gem as:
233
250
  end
234
251
  end
235
252
 
236
-
237
253
  def install_executables(bin_dir)
238
- @bin_file_names = []
239
-
240
254
  prog_mode = options[:prog_mode] || 0755
241
255
 
242
256
  executables = { 'gem' => 'bin' }
243
- executables['bundler'] = 'bundler/exe' if Gem::USE_BUNDLER_FOR_GEMDEPS
244
257
  executables.each do |tool, path|
245
258
  say "Installing #{tool} executable" if @verbose
246
259
 
247
260
  Dir.chdir path do
248
261
  bin_files = Dir['*']
249
262
 
250
- bin_files -= %w[update_rubygems bundler bundle_ruby]
263
+ bin_files -= %w[update_rubygems]
251
264
 
252
265
  bin_files.each do |bin_file|
253
- bin_file_formatted = if options[:format_executable]
254
- Gem.default_exec_format % bin_file
255
- else
256
- bin_file
257
- end
258
-
259
- dest_file = File.join bin_dir, bin_file_formatted
266
+ dest_file = target_bin_path(bin_dir, bin_file)
260
267
  bin_tmp_file = File.join Dir.tmpdir, "#{bin_file}.#{$$}"
261
268
 
262
269
  begin
@@ -268,7 +275,7 @@ By default, this RubyGems will install gem as:
268
275
  end
269
276
 
270
277
  install bin_tmp_file, dest_file, :mode => prog_mode
271
- @bin_file_names << dest_file
278
+ bin_file_names << dest_file
272
279
  ensure
273
280
  rm bin_tmp_file
274
281
  end
@@ -308,35 +315,16 @@ By default, this RubyGems will install gem as:
308
315
  end
309
316
  end
310
317
 
311
- def install_file(file, dest_dir)
312
- dest_file = File.join dest_dir, file
313
- dest_dir = File.dirname dest_file
314
- unless File.directory? dest_dir
315
- mkdir_p dest_dir, :mode => 0755
316
- end
317
-
318
- install file, dest_file, :mode => options[:data_mode] || 0644
319
- end
320
-
321
318
  def install_lib(lib_dir)
322
319
  libs = { 'RubyGems' => 'lib' }
323
- libs['Bundler'] = 'bundler/lib' if Gem::USE_BUNDLER_FOR_GEMDEPS
320
+ libs['Bundler'] = 'bundler/lib'
324
321
  libs.each do |tool, path|
325
322
  say "Installing #{tool}" if @verbose
326
323
 
327
- lib_files = rb_files_in path
328
- lib_files.concat(template_files) if tool == 'Bundler'
329
-
330
- pem_files = pem_files_in path
324
+ lib_files = files_in path
331
325
 
332
326
  Dir.chdir path do
333
- lib_files.each do |lib_file|
334
- install_file lib_file, lib_dir
335
- end
336
-
337
- pem_files.each do |pem_file|
338
- install_file pem_file, lib_dir
339
- end
327
+ install_file_list(lib_files, lib_dir)
340
328
  end
341
329
  end
342
330
  end
@@ -382,20 +370,12 @@ By default, this RubyGems will install gem as:
382
370
  return false
383
371
  end
384
372
 
385
- def install_default_bundler_gem
386
- return unless Gem::USE_BUNDLER_FOR_GEMDEPS
387
-
388
- specs_dir = Gem::Specification.default_specifications_dir
373
+ def install_default_bundler_gem(bin_dir)
374
+ specs_dir = Gem.default_specifications_dir
389
375
  specs_dir = File.join(options[:destdir], specs_dir) unless Gem.win_platform?
390
376
  mkdir_p specs_dir, :mode => 0755
391
377
 
392
- # Workaround for non-git environment.
393
- gemspec = File.open('bundler/bundler.gemspec', 'rb'){|f| f.read.gsub(/`git ls-files -z`/, "''") }
394
- File.open('bundler/bundler.gemspec', 'w'){|f| f.write gemspec }
395
-
396
- bundler_spec = Gem::Specification.load("bundler/bundler.gemspec")
397
- bundler_spec.files = Dir.chdir("bundler") { Dir["{*.md,{lib,exe,man}/**/*}"] }
398
- bundler_spec.executables -= %w[bundler bundle_ruby]
378
+ bundler_spec = Dir.chdir("bundler") { Gem::Specification.load("bundler.gemspec") }
399
379
 
400
380
  # Remove bundler-*.gemspec in default specification directory.
401
381
  Dir.entries(specs_dir).
@@ -427,15 +407,20 @@ By default, this RubyGems will install gem as:
427
407
  cp File.join("bundler", bundler_spec.bindir, e), File.join(bundler_bin_dir, e)
428
408
  end
429
409
 
430
- if Gem.win_platform?
431
- require 'rubygems/installer'
410
+ require 'rubygems/installer'
432
411
 
433
- installer = Gem::Installer.for_spec bundler_spec
434
- bundler_spec.executables.each do |e|
435
- installer.generate_windows_script e, bundler_spec.bin_dir
412
+ Dir.chdir("bundler") do
413
+ built_gem = Gem::Package.build(bundler_spec)
414
+ begin
415
+ 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)
416
+ installer.install
417
+ ensure
418
+ FileUtils.rm_f built_gem
436
419
  end
437
420
  end
438
421
 
422
+ bundler_spec.executables.each {|executable| bin_file_names << target_bin_path(bin_dir, executable) }
423
+
439
424
  say "Bundler #{bundler_spec.version} installed"
440
425
  end
441
426
 
@@ -452,6 +437,23 @@ By default, this RubyGems will install gem as:
452
437
  return lib_dir, bin_dir
453
438
  end
454
439
 
440
+ def generate_default_man_dir(install_destdir)
441
+ prefix = options[:prefix]
442
+
443
+ if prefix.empty?
444
+ man_dir = RbConfig::CONFIG['mandir']
445
+ return unless man_dir
446
+ else
447
+ man_dir = File.join prefix, 'man'
448
+ end
449
+
450
+ unless install_destdir.empty?
451
+ man_dir = File.join install_destdir, man_dir.gsub(/^[a-zA-Z]:/, '')
452
+ end
453
+
454
+ man_dir
455
+ end
456
+
455
457
  def generate_default_dirs(install_destdir)
456
458
  prefix = options[:prefix]
457
459
  site_or_vendor = options[:site_or_vendor]
@@ -484,31 +486,10 @@ By default, this RubyGems will install gem as:
484
486
  [lib_dir, bin_dir]
485
487
  end
486
488
 
487
- def pem_files_in(dir)
488
- Dir.chdir dir do
489
- Dir[File.join('**', '*pem')]
490
- end
491
- end
492
-
493
- def rb_files_in(dir)
489
+ def files_in(dir)
494
490
  Dir.chdir dir do
495
- Dir[File.join('**', '*rb')]
496
- end
497
- end
498
-
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
505
- end
506
-
507
- # for cleanup old bundler files
508
- def template_files_in(dir)
509
- Dir.chdir dir do
510
- (Dir[File.join('templates', '**', '{*,.*}')]).
511
- select{|f| !File.directory?(f)}
491
+ Dir.glob(File.join('**', '*'), File::FNM_DOTMATCH).
492
+ select{|f| !File.directory?(f) }
512
493
  end
513
494
  end
514
495
 
@@ -539,40 +520,52 @@ abort "#{deprecation_message}"
539
520
  next unless Gem.win_platform?
540
521
 
541
522
  File.open "#{old_bin_path}.bat", 'w' do |fp|
542
- fp.puts %{@ECHO.#{deprecation_message}}
523
+ fp.puts %(@ECHO.#{deprecation_message})
543
524
  end
544
525
  end
545
526
  end
546
527
 
547
528
  def remove_old_lib_files(lib_dir)
548
529
  lib_dirs = { File.join(lib_dir, 'rubygems') => 'lib/rubygems' }
549
- lib_dirs[File.join(lib_dir, 'bundler')] = 'bundler/lib/bundler' if Gem::USE_BUNDLER_FOR_GEMDEPS
530
+ lib_dirs[File.join(lib_dir, 'bundler')] = 'bundler/lib/bundler'
550
531
  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/
532
+ lib_files = files_in(new_lib_dir)
553
533
 
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/
534
+ old_lib_files = files_in(old_lib_dir)
556
535
 
557
536
  to_remove = old_lib_files - lib_files
558
537
 
538
+ gauntlet_rubygems = File.join(lib_dir, 'gauntlet_rubygems.rb')
539
+ to_remove << gauntlet_rubygems if File.exist? gauntlet_rubygems
540
+
559
541
  to_remove.delete_if do |file|
560
542
  file.start_with? 'defaults'
561
543
  end
562
544
 
563
- Dir.chdir old_lib_dir do
564
- to_remove.each do |file|
565
- FileUtils.rm_f file
545
+ remove_file_list(to_remove, old_lib_dir)
546
+ end
547
+ end
566
548
 
567
- warn "unable to remove old file #{file} please remove it by hand" if
568
- File.exist? file
569
- end
570
- end
549
+ def remove_old_man_files(old_man_dir)
550
+ old_man1_dir = "#{old_man_dir}/man1"
551
+
552
+ if File.exist?(old_man1_dir)
553
+ man1_to_remove = Dir.chdir(old_man1_dir) { Dir["bundle*.1{,.txt,.ronn}"] }
554
+
555
+ remove_file_list(man1_to_remove, old_man1_dir)
556
+ end
557
+
558
+ old_man5_dir = "#{old_man_dir}/man5"
559
+
560
+ if File.exist?(old_man5_dir)
561
+ man5_to_remove = Dir.chdir(old_man5_dir) { Dir["gemfile.5{,.txt,.ronn}"] }
562
+
563
+ remove_file_list(man5_to_remove, old_man5_dir)
571
564
  end
572
565
  end
573
566
 
574
567
  def show_release_notes
575
- release_notes = File.join Dir.pwd, 'History.txt'
568
+ release_notes = File.join Dir.pwd, 'CHANGELOG.md'
576
569
 
577
570
  release_notes =
578
571
  if File.exist? release_notes
@@ -580,8 +573,6 @@ abort "#{deprecation_message}"
580
573
 
581
574
  history.force_encoding Encoding::UTF_8
582
575
 
583
- history = history.sub(/^# coding:.*?(?=^=)/m, '')
584
-
585
576
  text = history.split(HISTORY_HEADER)
586
577
  text.shift # correct an off-by-one generated by split
587
578
  version_lines = history.scan(HISTORY_HEADER)
@@ -592,7 +583,7 @@ abort "#{deprecation_message}"
592
583
  history_string = ""
593
584
 
594
585
  until versions.length == 0 or
595
- versions.shift < options[:previous_version] do
586
+ versions.shift <= options[:previous_version] do
596
587
  history_string += version_lines.shift + text.shift
597
588
  end
598
589
 
@@ -626,4 +617,55 @@ abort "#{deprecation_message}"
626
617
  command.invoke(*args)
627
618
  end
628
619
 
620
+ def regenerate_plugins
621
+ require "rubygems/commands/pristine_command"
622
+ say "Regenerating plugins"
623
+
624
+ args = %w[--all --only-plugins --silent]
625
+
626
+ command = Gem::Commands::PristineCommand.new
627
+ command.invoke(*args)
628
+ end
629
+
630
+ private
631
+
632
+ def install_file_list(files, dest_dir)
633
+ files.each do |file|
634
+ install_file file, dest_dir
635
+ end
636
+ end
637
+
638
+ def install_file(file, dest_dir)
639
+ dest_file = File.join dest_dir, file
640
+ dest_dir = File.dirname dest_file
641
+ unless File.directory? dest_dir
642
+ mkdir_p dest_dir, :mode => 0755
643
+ end
644
+
645
+ install file, dest_file, :mode => options[:data_mode] || 0644
646
+ end
647
+
648
+ def remove_file_list(files, dir)
649
+ Dir.chdir dir do
650
+ files.each do |file|
651
+ FileUtils.rm_f file
652
+
653
+ warn "unable to remove old file #{file} please remove it by hand" if
654
+ File.exist? file
655
+ end
656
+ end
657
+ end
658
+
659
+ def target_bin_path(bin_dir, bin_file)
660
+ bin_file_formatted = if options[:format_executable]
661
+ Gem.default_exec_format % bin_file
662
+ else
663
+ bin_file
664
+ end
665
+ File.join bin_dir, bin_file_formatted
666
+ end
667
+
668
+ def bin_file_names
669
+ @bin_file_names ||= []
670
+ end
629
671
  end