rubygems-update 3.1.5 → 3.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (554) hide show
  1. checksums.yaml +4 -4
  2. data/CODE_OF_CONDUCT.md +55 -19
  3. data/CONTRIBUTING.md +24 -10
  4. data/History.txt +410 -236
  5. data/Manifest.txt +42 -74
  6. data/POLICIES.md +6 -12
  7. data/README.md +1 -1
  8. data/Rakefile +56 -80
  9. data/bin/update_rubygems +1 -1
  10. data/bundler/CHANGELOG.md +1577 -1425
  11. data/bundler/README.md +6 -8
  12. data/bundler/UPGRADING.md +18 -32
  13. data/bundler/bundler.gemspec +3 -3
  14. data/bundler/exe/bundle +3 -0
  15. data/bundler/lib/bundler.rb +35 -7
  16. data/bundler/lib/bundler/build_metadata.rb +4 -12
  17. data/bundler/lib/bundler/cli.rb +58 -21
  18. data/bundler/lib/bundler/cli/add.rb +1 -1
  19. data/bundler/lib/bundler/cli/binstubs.rb +6 -2
  20. data/bundler/lib/bundler/cli/cache.rb +1 -7
  21. data/bundler/lib/bundler/cli/clean.rb +1 -1
  22. data/bundler/lib/bundler/cli/common.rb +14 -0
  23. data/bundler/lib/bundler/cli/console.rb +1 -1
  24. data/bundler/lib/bundler/cli/doctor.rb +1 -1
  25. data/bundler/lib/bundler/cli/exec.rb +4 -4
  26. data/bundler/lib/bundler/cli/fund.rb +36 -0
  27. data/bundler/lib/bundler/cli/gem.rb +84 -11
  28. data/bundler/lib/bundler/cli/info.rb +15 -4
  29. data/bundler/lib/bundler/cli/init.rb +2 -2
  30. data/bundler/lib/bundler/cli/inject.rb +1 -1
  31. data/bundler/lib/bundler/cli/install.rb +13 -11
  32. data/bundler/lib/bundler/cli/issue.rb +2 -2
  33. data/bundler/lib/bundler/cli/list.rb +12 -10
  34. data/bundler/lib/bundler/cli/outdated.rb +87 -66
  35. data/bundler/lib/bundler/cli/plugin.rb +10 -0
  36. data/bundler/lib/bundler/cli/pristine.rb +5 -0
  37. data/bundler/lib/bundler/cli/show.rb +1 -1
  38. data/bundler/lib/bundler/cli/update.rb +2 -0
  39. data/bundler/lib/bundler/compact_index_client.rb +1 -1
  40. data/bundler/lib/bundler/compact_index_client/cache.rb +1 -1
  41. data/bundler/lib/bundler/compact_index_client/updater.rb +5 -5
  42. data/bundler/lib/bundler/definition.rb +49 -72
  43. data/bundler/lib/bundler/dep_proxy.rb +1 -1
  44. data/bundler/lib/bundler/dependency.rb +3 -10
  45. data/bundler/lib/bundler/dsl.rb +5 -9
  46. data/bundler/lib/bundler/endpoint_specification.rb +1 -1
  47. data/bundler/lib/bundler/env.rb +1 -1
  48. data/bundler/lib/bundler/environment_preserver.rb +26 -2
  49. data/bundler/lib/bundler/errors.rb +1 -0
  50. data/bundler/lib/bundler/feature_flag.rb +0 -3
  51. data/bundler/lib/bundler/fetcher.rb +4 -3
  52. data/bundler/lib/bundler/fetcher/base.rb +1 -1
  53. data/bundler/lib/bundler/fetcher/compact_index.rb +1 -1
  54. data/bundler/lib/bundler/fetcher/downloader.rb +1 -1
  55. data/bundler/lib/bundler/fetcher/index.rb +3 -4
  56. data/bundler/lib/bundler/friendly_errors.rb +22 -13
  57. data/bundler/lib/bundler/gem_helper.rb +32 -17
  58. data/bundler/lib/bundler/gem_helpers.rb +6 -1
  59. data/bundler/lib/bundler/gem_version_promoter.rb +2 -2
  60. data/bundler/lib/bundler/graph.rb +1 -1
  61. data/bundler/lib/bundler/index.rb +6 -2
  62. data/bundler/lib/bundler/injector.rb +22 -4
  63. data/bundler/lib/bundler/inline.rb +1 -1
  64. data/bundler/lib/bundler/installer.rb +35 -32
  65. data/bundler/lib/bundler/installer/gem_installer.rb +3 -3
  66. data/bundler/lib/bundler/installer/parallel_installer.rb +10 -10
  67. data/bundler/lib/bundler/installer/standalone.rb +2 -2
  68. data/bundler/lib/bundler/lazy_specification.rb +34 -9
  69. data/bundler/lib/bundler/lockfile_generator.rb +1 -1
  70. data/bundler/lib/bundler/lockfile_parser.rb +1 -1
  71. data/bundler/lib/bundler/man/.document +1 -0
  72. data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +0 -0
  73. data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
  74. data/bundler/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +0 -0
  75. data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
  76. data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
  77. data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +19 -30
  78. data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
  79. data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +0 -0
  80. data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
  81. data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
  82. data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
  83. data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
  84. data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +25 -3
  85. data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
  86. data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
  87. data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
  88. data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
  89. data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
  90. data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
  91. data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
  92. data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
  93. data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +0 -0
  94. data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
  95. data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +0 -0
  96. data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +4 -4
  97. data/bundler/lib/bundler/mirror.rb +2 -2
  98. data/bundler/lib/bundler/plugin.rb +30 -5
  99. data/bundler/lib/bundler/plugin/api/source.rb +1 -1
  100. data/bundler/lib/bundler/plugin/dsl.rb +1 -1
  101. data/bundler/lib/bundler/plugin/index.rb +10 -1
  102. data/bundler/lib/bundler/plugin/installer.rb +1 -1
  103. data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
  104. data/bundler/lib/bundler/plugin/source_list.rb +1 -1
  105. data/bundler/lib/bundler/psyched_yaml.rb +0 -15
  106. data/bundler/lib/bundler/remote_specification.rb +5 -2
  107. data/bundler/lib/bundler/resolver.rb +37 -18
  108. data/bundler/lib/bundler/resolver/spec_group.rb +28 -11
  109. data/bundler/lib/bundler/retry.rb +1 -1
  110. data/bundler/lib/bundler/ruby_version.rb +1 -1
  111. data/bundler/lib/bundler/rubygems_ext.rb +53 -9
  112. data/bundler/lib/bundler/rubygems_gem_installer.rb +3 -9
  113. data/bundler/lib/bundler/rubygems_integration.rb +25 -55
  114. data/bundler/lib/bundler/runtime.rb +4 -14
  115. data/bundler/lib/bundler/settings.rb +49 -46
  116. data/bundler/lib/bundler/shared_helpers.rb +2 -2
  117. data/bundler/lib/bundler/similarity_detector.rb +1 -1
  118. data/bundler/lib/bundler/source.rb +1 -1
  119. data/bundler/lib/bundler/source/git.rb +5 -5
  120. data/bundler/lib/bundler/source/git/git_proxy.rb +57 -60
  121. data/bundler/lib/bundler/source/path.rb +7 -3
  122. data/bundler/lib/bundler/source/path/installer.rb +8 -10
  123. data/bundler/lib/bundler/source/rubygems.rb +13 -16
  124. data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
  125. data/bundler/lib/bundler/source_list.rb +2 -2
  126. data/bundler/lib/bundler/spec_set.rb +2 -1
  127. data/bundler/lib/bundler/stub_specification.rb +17 -7
  128. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  129. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +9 -1
  130. data/bundler/lib/bundler/templates/newgem/README.md.tt +1 -2
  131. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +19 -5
  132. data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
  133. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
  134. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
  135. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
  136. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
  137. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
  138. data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  139. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +14 -6
  140. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +10 -0
  141. data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  142. data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
  143. data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
  144. data/bundler/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
  145. data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  146. data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  147. data/bundler/lib/bundler/ui/shell.rb +5 -5
  148. data/bundler/lib/bundler/uri_credentials_filter.rb +3 -1
  149. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
  150. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +34 -1
  151. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
  152. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
  153. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
  154. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +38 -40
  155. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +82 -189
  156. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +0 -7
  157. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
  158. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
  159. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  160. data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
  161. data/bundler/lib/bundler/vendored_persistent.rb +0 -7
  162. data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
  163. data/bundler/lib/bundler/version.rb +1 -1
  164. data/bundler/lib/bundler/worker.rb +1 -1
  165. data/bundler/lib/bundler/yaml_serializer.rb +1 -1
  166. data/bundler/man/bundle-add.1 +1 -1
  167. data/bundler/man/bundle-binstubs.1 +5 -3
  168. data/bundler/man/bundle-cache.1 +1 -1
  169. data/bundler/man/bundle-check.1 +1 -1
  170. data/bundler/man/bundle-clean.1 +1 -1
  171. data/bundler/man/bundle-config.1 +16 -25
  172. data/bundler/man/bundle-doctor.1 +1 -1
  173. data/bundler/man/bundle-exec.1 +1 -1
  174. data/bundler/man/bundle-gem.1 +25 -3
  175. data/bundler/man/bundle-info.1 +1 -1
  176. data/bundler/man/bundle-init.1 +1 -1
  177. data/bundler/man/bundle-inject.1 +1 -1
  178. data/bundler/man/bundle-install.1 +30 -3
  179. data/bundler/man/bundle-list.1 +7 -7
  180. data/bundler/man/bundle-lock.1 +1 -1
  181. data/bundler/man/bundle-open.1 +1 -1
  182. data/bundler/man/bundle-outdated.1 +1 -1
  183. data/bundler/man/bundle-platform.1 +1 -1
  184. data/bundler/man/bundle-pristine.1 +1 -1
  185. data/bundler/man/bundle-remove.1 +1 -1
  186. data/bundler/man/bundle-show.1 +1 -1
  187. data/bundler/man/bundle-update.1 +1 -1
  188. data/bundler/man/bundle-viz.1 +1 -1
  189. data/bundler/man/bundle.1 +1 -1
  190. data/bundler/man/gemfile.5 +4 -4
  191. data/lib/rubygems.rb +83 -159
  192. data/lib/rubygems/available_set.rb +4 -6
  193. data/lib/rubygems/basic_specification.rb +11 -9
  194. data/lib/rubygems/bundler_version_finder.rb +14 -9
  195. data/lib/rubygems/command.rb +16 -16
  196. data/lib/rubygems/command_manager.rb +5 -6
  197. data/lib/rubygems/commands/build_command.rb +40 -20
  198. data/lib/rubygems/commands/cert_command.rb +2 -10
  199. data/lib/rubygems/commands/check_command.rb +0 -2
  200. data/lib/rubygems/commands/cleanup_command.rb +11 -7
  201. data/lib/rubygems/commands/contents_command.rb +4 -6
  202. data/lib/rubygems/commands/dependency_command.rb +6 -8
  203. data/lib/rubygems/commands/environment_command.rb +1 -3
  204. data/lib/rubygems/commands/fetch_command.rb +2 -4
  205. data/lib/rubygems/commands/generate_index_command.rb +0 -2
  206. data/lib/rubygems/commands/help_command.rb +3 -3
  207. data/lib/rubygems/commands/info_command.rb +8 -5
  208. data/lib/rubygems/commands/install_command.rb +3 -5
  209. data/lib/rubygems/commands/list_command.rb +8 -7
  210. data/lib/rubygems/commands/lock_command.rb +1 -3
  211. data/lib/rubygems/commands/mirror_command.rb +0 -2
  212. data/lib/rubygems/commands/open_command.rb +0 -4
  213. data/lib/rubygems/commands/outdated_command.rb +0 -2
  214. data/lib/rubygems/commands/owner_command.rb +9 -4
  215. data/lib/rubygems/commands/pristine_command.rb +11 -5
  216. data/lib/rubygems/commands/push_command.rb +10 -47
  217. data/lib/rubygems/commands/query_command.rb +14 -344
  218. data/lib/rubygems/commands/rdoc_command.rb +0 -2
  219. data/lib/rubygems/commands/search_command.rb +7 -7
  220. data/lib/rubygems/commands/server_command.rb +3 -1
  221. data/lib/rubygems/commands/setup_command.rb +131 -58
  222. data/lib/rubygems/commands/signin_command.rb +0 -2
  223. data/lib/rubygems/commands/signout_command.rb +0 -2
  224. data/lib/rubygems/commands/sources_command.rb +6 -4
  225. data/lib/rubygems/commands/specification_command.rb +8 -4
  226. data/lib/rubygems/commands/stale_command.rb +1 -3
  227. data/lib/rubygems/commands/uninstall_command.rb +1 -3
  228. data/lib/rubygems/commands/unpack_command.rb +1 -3
  229. data/lib/rubygems/commands/update_command.rb +59 -14
  230. data/lib/rubygems/commands/which_command.rb +0 -2
  231. data/lib/rubygems/commands/yank_command.rb +4 -7
  232. data/lib/rubygems/config_file.rb +11 -4
  233. data/lib/rubygems/core_ext/kernel_require.rb +29 -36
  234. data/lib/rubygems/core_ext/kernel_warn.rb +12 -13
  235. data/lib/rubygems/defaults.rb +101 -7
  236. data/lib/rubygems/dependency.rb +3 -8
  237. data/lib/rubygems/dependency_installer.rb +5 -78
  238. data/lib/rubygems/dependency_list.rb +7 -9
  239. data/lib/rubygems/deprecate.rb +46 -1
  240. data/lib/rubygems/doctor.rb +4 -4
  241. data/lib/rubygems/errors.rb +3 -14
  242. data/lib/rubygems/exceptions.rb +2 -33
  243. data/lib/rubygems/ext.rb +6 -6
  244. data/lib/rubygems/ext/build_error.rb +2 -0
  245. data/lib/rubygems/ext/builder.rb +14 -35
  246. data/lib/rubygems/ext/cmake_builder.rb +5 -7
  247. data/lib/rubygems/ext/configure_builder.rb +4 -6
  248. data/lib/rubygems/ext/ext_conf_builder.rb +21 -19
  249. data/lib/rubygems/ext/rake_builder.rb +4 -6
  250. data/lib/rubygems/gem_runner.rb +3 -10
  251. data/lib/rubygems/gemcutter_utilities.rb +102 -21
  252. data/lib/rubygems/indexer.rb +1 -22
  253. data/lib/rubygems/install_update_options.rb +7 -7
  254. data/lib/rubygems/installer.rb +59 -57
  255. data/lib/rubygems/installer_test_case.rb +25 -11
  256. data/lib/rubygems/installer_uninstaller_utils.rb +24 -0
  257. data/lib/rubygems/local_remote_options.rb +1 -1
  258. data/lib/rubygems/mock_gem_ui.rb +0 -6
  259. data/lib/rubygems/name_tuple.rb +3 -7
  260. data/lib/rubygems/openssl.rb +7 -0
  261. data/lib/rubygems/package.rb +14 -25
  262. data/lib/rubygems/package/digest_io.rb +0 -2
  263. data/lib/rubygems/package/file_source.rb +0 -2
  264. data/lib/rubygems/package/io_source.rb +0 -2
  265. data/lib/rubygems/package/old.rb +1 -3
  266. data/lib/rubygems/package/tar_header.rb +4 -6
  267. data/lib/rubygems/package/tar_reader.rb +0 -3
  268. data/lib/rubygems/package/tar_reader/entry.rb +0 -3
  269. data/lib/rubygems/package/tar_test_case.rb +2 -4
  270. data/lib/rubygems/package/tar_writer.rb +2 -12
  271. data/lib/rubygems/package_task.rb +1 -7
  272. data/lib/rubygems/path_support.rb +1 -3
  273. data/lib/rubygems/platform.rb +21 -12
  274. data/lib/rubygems/psych_tree.rb +0 -2
  275. data/lib/rubygems/query_utils.rb +353 -0
  276. data/lib/rubygems/rdoc.rb +0 -12
  277. data/lib/rubygems/remote_fetcher.rb +10 -27
  278. data/lib/rubygems/request.rb +4 -11
  279. data/lib/rubygems/request/connection_pools.rb +1 -5
  280. data/lib/rubygems/request/http_pool.rb +0 -2
  281. data/lib/rubygems/request/https_pool.rb +0 -2
  282. data/lib/rubygems/request_set.rb +5 -7
  283. data/lib/rubygems/request_set/gem_dependency_api.rb +5 -7
  284. data/lib/rubygems/request_set/lockfile.rb +8 -12
  285. data/lib/rubygems/request_set/lockfile/parser.rb +0 -2
  286. data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -3
  287. data/lib/rubygems/requirement.rb +20 -21
  288. data/lib/rubygems/resolver.rb +8 -11
  289. data/lib/rubygems/resolver/activation_request.rb +9 -3
  290. data/lib/rubygems/resolver/api_set.rb +4 -6
  291. data/lib/rubygems/resolver/api_specification.rb +20 -7
  292. data/lib/rubygems/resolver/best_set.rb +0 -2
  293. data/lib/rubygems/resolver/composed_set.rb +3 -5
  294. data/lib/rubygems/resolver/conflict.rb +2 -4
  295. data/lib/rubygems/resolver/current_set.rb +0 -2
  296. data/lib/rubygems/resolver/dependency_request.rb +1 -3
  297. data/lib/rubygems/resolver/git_set.rb +0 -2
  298. data/lib/rubygems/resolver/git_specification.rb +0 -2
  299. data/lib/rubygems/resolver/index_set.rb +1 -3
  300. data/lib/rubygems/resolver/index_specification.rb +11 -2
  301. data/lib/rubygems/resolver/installed_specification.rb +0 -2
  302. data/lib/rubygems/resolver/installer_set.rb +4 -7
  303. data/lib/rubygems/resolver/local_specification.rb +0 -2
  304. data/lib/rubygems/resolver/lock_set.rb +2 -4
  305. data/lib/rubygems/resolver/lock_specification.rb +0 -2
  306. data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
  307. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
  308. data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +1 -0
  309. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +39 -5
  310. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
  311. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
  312. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
  313. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
  314. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
  315. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
  316. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
  317. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
  318. data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +43 -10
  319. data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +75 -7
  320. data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
  321. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +1 -0
  322. data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
  323. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +506 -165
  324. data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
  325. data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
  326. data/lib/rubygems/resolver/requirement_list.rb +0 -2
  327. data/lib/rubygems/resolver/set.rb +0 -2
  328. data/lib/rubygems/resolver/source_set.rb +0 -2
  329. data/lib/rubygems/resolver/spec_specification.rb +0 -2
  330. data/lib/rubygems/resolver/specification.rb +1 -3
  331. data/lib/rubygems/resolver/stats.rb +0 -2
  332. data/lib/rubygems/resolver/vendor_set.rb +0 -2
  333. data/lib/rubygems/resolver/vendor_specification.rb +0 -2
  334. data/lib/rubygems/s3_uri_signer.rb +2 -8
  335. data/lib/rubygems/safe_yaml.rb +4 -4
  336. data/lib/rubygems/security.rb +27 -34
  337. data/lib/rubygems/security/policy.rb +4 -8
  338. data/lib/rubygems/security/signer.rb +5 -7
  339. data/lib/rubygems/security/trust_dir.rb +1 -3
  340. data/lib/rubygems/server.rb +15 -12
  341. data/lib/rubygems/source.rb +14 -7
  342. data/lib/rubygems/source/git.rb +7 -8
  343. data/lib/rubygems/source/installed.rb +0 -2
  344. data/lib/rubygems/source/local.rb +2 -4
  345. data/lib/rubygems/source/lock.rb +0 -2
  346. data/lib/rubygems/source/specific_file.rb +0 -2
  347. data/lib/rubygems/source/vendor.rb +0 -2
  348. data/lib/rubygems/source_list.rb +4 -7
  349. data/lib/rubygems/spec_fetcher.rb +19 -18
  350. data/lib/rubygems/specification.rb +101 -118
  351. data/lib/rubygems/specification_policy.rb +79 -29
  352. data/lib/rubygems/stub_specification.rb +1 -5
  353. data/lib/rubygems/syck_hack.rb +0 -2
  354. data/lib/rubygems/test_case.rb +79 -122
  355. data/lib/rubygems/test_utilities.rb +12 -19
  356. data/lib/rubygems/uninstaller.rb +35 -16
  357. data/lib/rubygems/uri_formatter.rb +2 -3
  358. data/lib/rubygems/uri_parser.rb +0 -2
  359. data/lib/rubygems/user_interaction.rb +1 -26
  360. data/lib/rubygems/util.rb +8 -2
  361. data/lib/rubygems/util/licenses.rb +4 -6
  362. data/lib/rubygems/util/list.rb +0 -2
  363. data/lib/rubygems/validator.rb +1 -3
  364. data/lib/rubygems/version.rb +4 -6
  365. data/lib/rubygems/version_option.rb +6 -0
  366. data/rubygems-update.gemspec +2 -2
  367. data/setup.rb +2 -7
  368. data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
  369. data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
  370. data/test/rubygems/rubygems_plugin.rb +0 -2
  371. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
  372. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +0 -2
  373. data/test/rubygems/test_bundled_ca.rb +42 -48
  374. data/test/rubygems/test_config.rb +0 -2
  375. data/test/rubygems/test_deprecate.rb +40 -7
  376. data/test/rubygems/test_gem.rb +82 -79
  377. data/test/rubygems/test_gem_available_set.rb +3 -5
  378. data/test/rubygems/test_gem_bundler_version_finder.rb +19 -3
  379. data/test/rubygems/test_gem_command.rb +24 -7
  380. data/test/rubygems/test_gem_command_manager.rb +36 -5
  381. data/test/rubygems/test_gem_commands_build_command.rb +233 -15
  382. data/test/rubygems/test_gem_commands_cert_command.rb +4 -6
  383. data/test/rubygems/test_gem_commands_check_command.rb +0 -2
  384. data/test/rubygems/test_gem_commands_cleanup_command.rb +14 -5
  385. data/test/rubygems/test_gem_commands_contents_command.rb +50 -19
  386. data/test/rubygems/test_gem_commands_dependency_command.rb +0 -2
  387. data/test/rubygems/test_gem_commands_environment_command.rb +21 -23
  388. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
  389. data/test/rubygems/test_gem_commands_generate_index_command.rb +1 -7
  390. data/test/rubygems/test_gem_commands_help_command.rb +15 -4
  391. data/test/rubygems/test_gem_commands_info_command.rb +6 -8
  392. data/test/rubygems/test_gem_commands_install_command.rb +32 -34
  393. data/test/rubygems/test_gem_commands_list_command.rb +0 -2
  394. data/test/rubygems/test_gem_commands_lock_command.rb +0 -2
  395. data/test/rubygems/test_gem_commands_mirror.rb +1 -3
  396. data/test/rubygems/test_gem_commands_open_command.rb +4 -6
  397. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -2
  398. data/test/rubygems/test_gem_commands_owner_command.rb +59 -5
  399. data/test/rubygems/test_gem_commands_pristine_command.rb +43 -12
  400. data/test/rubygems/test_gem_commands_push_command.rb +77 -9
  401. data/test/rubygems/test_gem_commands_query_command.rb +12 -12
  402. data/test/rubygems/test_gem_commands_search_command.rb +0 -2
  403. data/test/rubygems/test_gem_commands_server_command.rb +0 -2
  404. data/test/rubygems/test_gem_commands_setup_command.rb +165 -124
  405. data/test/rubygems/test_gem_commands_signin_command.rb +33 -9
  406. data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
  407. data/test/rubygems/test_gem_commands_sources_command.rb +60 -2
  408. data/test/rubygems/test_gem_commands_specification_command.rb +46 -20
  409. data/test/rubygems/test_gem_commands_stale_command.rb +0 -2
  410. data/test/rubygems/test_gem_commands_uninstall_command.rb +1 -3
  411. data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
  412. data/test/rubygems/test_gem_commands_update_command.rb +116 -7
  413. data/test/rubygems/test_gem_commands_which_command.rb +3 -5
  414. data/test/rubygems/test_gem_commands_yank_command.rb +44 -8
  415. data/test/rubygems/test_gem_config_file.rb +7 -12
  416. data/test/rubygems/test_gem_dependency.rb +0 -2
  417. data/test/rubygems/test_gem_dependency_installer.rb +90 -193
  418. data/test/rubygems/test_gem_dependency_list.rb +10 -12
  419. data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -3
  420. data/test/rubygems/test_gem_doctor.rb +28 -2
  421. data/test/rubygems/test_gem_ext_builder.rb +26 -47
  422. data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -23
  423. data/test/rubygems/test_gem_ext_configure_builder.rb +4 -20
  424. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +9 -29
  425. data/test/rubygems/test_gem_ext_rake_builder.rb +39 -24
  426. data/test/rubygems/test_gem_gem_runner.rb +44 -1
  427. data/test/rubygems/test_gem_gemcutter_utilities.rb +8 -5
  428. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
  429. data/test/rubygems/test_gem_indexer.rb +9 -15
  430. data/test/rubygems/test_gem_install_update_options.rb +14 -4
  431. data/test/rubygems/test_gem_installer.rb +256 -59
  432. data/test/rubygems/test_gem_local_remote_options.rb +0 -2
  433. data/test/rubygems/test_gem_name_tuple.rb +0 -2
  434. data/test/rubygems/test_gem_package.rb +38 -31
  435. data/test/rubygems/test_gem_package_old.rb +4 -6
  436. data/test/rubygems/test_gem_package_tar_header.rb +18 -1
  437. data/test/rubygems/test_gem_package_tar_reader.rb +0 -2
  438. data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -2
  439. data/test/rubygems/test_gem_package_tar_writer.rb +4 -6
  440. data/test/rubygems/test_gem_package_task.rb +46 -13
  441. data/test/rubygems/test_gem_path_support.rb +0 -2
  442. data/test/rubygems/test_gem_platform.rb +63 -6
  443. data/test/rubygems/test_gem_rdoc.rb +0 -2
  444. data/test/rubygems/test_gem_remote_fetcher.rb +168 -211
  445. data/test/rubygems/test_gem_request.rb +13 -17
  446. data/test/rubygems/test_gem_request_connection_pools.rb +0 -4
  447. data/test/rubygems/test_gem_request_set.rb +20 -22
  448. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +3 -5
  449. data/test/rubygems/test_gem_request_set_lockfile.rb +4 -6
  450. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -11
  451. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -120
  452. data/test/rubygems/test_gem_requirement.rb +10 -4
  453. data/test/rubygems/test_gem_resolver.rb +6 -8
  454. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -2
  455. data/test/rubygems/test_gem_resolver_api_set.rb +40 -13
  456. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -2
  457. data/test/rubygems/test_gem_resolver_best_set.rb +2 -4
  458. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -2
  459. data/test/rubygems/test_gem_resolver_conflict.rb +1 -3
  460. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -2
  461. data/test/rubygems/test_gem_resolver_git_set.rb +0 -2
  462. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -2
  463. data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
  464. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -2
  465. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -2
  466. data/test/rubygems/test_gem_resolver_installer_set.rb +7 -9
  467. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -2
  468. data/test/rubygems/test_gem_resolver_lock_set.rb +3 -5
  469. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -2
  470. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -2
  471. data/test/rubygems/test_gem_resolver_specification.rb +0 -4
  472. data/test/rubygems/test_gem_resolver_vendor_set.rb +1 -3
  473. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -2
  474. data/test/rubygems/test_gem_security.rb +22 -24
  475. data/test/rubygems/test_gem_security_policy.rb +7 -12
  476. data/test/rubygems/test_gem_security_signer.rb +10 -12
  477. data/test/rubygems/test_gem_security_trust_dir.rb +4 -6
  478. data/test/rubygems/test_gem_server.rb +10 -14
  479. data/test/rubygems/test_gem_silent_ui.rb +0 -2
  480. data/test/rubygems/test_gem_source.rb +17 -16
  481. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -2
  482. data/test/rubygems/test_gem_source_git.rb +12 -13
  483. data/test/rubygems/test_gem_source_installed.rb +7 -9
  484. data/test/rubygems/test_gem_source_list.rb +1 -2
  485. data/test/rubygems/test_gem_source_local.rb +8 -10
  486. data/test/rubygems/test_gem_source_lock.rb +10 -12
  487. data/test/rubygems/test_gem_source_specific_file.rb +7 -9
  488. data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
  489. data/test/rubygems/test_gem_source_vendor.rb +7 -9
  490. data/test/rubygems/test_gem_spec_fetcher.rb +11 -4
  491. data/test/rubygems/test_gem_specification.rb +156 -125
  492. data/test/rubygems/test_gem_stream_ui.rb +3 -3
  493. data/test/rubygems/test_gem_stub_specification.rb +4 -6
  494. data/test/rubygems/test_gem_text.rb +1 -3
  495. data/test/rubygems/test_gem_uninstaller.rb +134 -12
  496. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -2
  497. data/test/rubygems/test_gem_uri_formatter.rb +0 -2
  498. data/test/rubygems/test_gem_util.rb +7 -7
  499. data/test/rubygems/test_gem_validator.rb +1 -3
  500. data/test/rubygems/test_gem_version.rb +1 -3
  501. data/test/rubygems/test_gem_version_option.rb +1 -3
  502. data/test/rubygems/test_kernel.rb +25 -10
  503. data/test/rubygems/test_project_sanity.rb +7 -2
  504. data/test/rubygems/test_remote_fetch_error.rb +0 -2
  505. data/test/rubygems/test_require.rb +291 -56
  506. data/test/test_changelog_generator.rb +17 -0
  507. metadata +63 -97
  508. data/.bundle/config +0 -2
  509. data/.rubocop.yml +0 -91
  510. data/Gemfile +0 -8
  511. data/Gemfile.lock +0 -43
  512. data/bundler/CODE_OF_CONDUCT.md +0 -136
  513. data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
  514. data/bundler/man/bundle-add.1.txt +0 -58
  515. data/bundler/man/bundle-binstubs.1.txt +0 -48
  516. data/bundler/man/bundle-cache.1.txt +0 -78
  517. data/bundler/man/bundle-check.1.txt +0 -33
  518. data/bundler/man/bundle-clean.1.txt +0 -26
  519. data/bundler/man/bundle-config.1.txt +0 -528
  520. data/bundler/man/bundle-doctor.1.txt +0 -44
  521. data/bundler/man/bundle-exec.1.txt +0 -178
  522. data/bundler/man/bundle-gem.1.txt +0 -91
  523. data/bundler/man/bundle-info.1.txt +0 -21
  524. data/bundler/man/bundle-init.1.txt +0 -34
  525. data/bundler/man/bundle-inject.1.txt +0 -32
  526. data/bundler/man/bundle-install.1.txt +0 -401
  527. data/bundler/man/bundle-list.1.txt +0 -43
  528. data/bundler/man/bundle-lock.1.txt +0 -93
  529. data/bundler/man/bundle-open.1.txt +0 -29
  530. data/bundler/man/bundle-outdated.1.txt +0 -131
  531. data/bundler/man/bundle-platform.1.txt +0 -57
  532. data/bundler/man/bundle-pristine.1.txt +0 -44
  533. data/bundler/man/bundle-remove.1.txt +0 -34
  534. data/bundler/man/bundle-show.1.txt +0 -27
  535. data/bundler/man/bundle-update.1.txt +0 -390
  536. data/bundler/man/bundle-viz.1.txt +0 -39
  537. data/bundler/man/bundle.1.txt +0 -116
  538. data/bundler/man/gemfile.5.txt +0 -649
  539. data/lib/rubygems/source_local.rb +0 -7
  540. data/lib/rubygems/source_specific_file.rb +0 -6
  541. data/lib/ubygems.rb +0 -14
  542. data/tmp/.keep +0 -0
  543. data/util/CL2notes +0 -55
  544. data/util/bisect +0 -10
  545. data/util/ci.sh +0 -62
  546. data/util/cops/deprecations.rb +0 -52
  547. data/util/create_certs.rb +0 -171
  548. data/util/create_certs.sh +0 -27
  549. data/util/create_encrypted_key.rb +0 -16
  550. data/util/generate_spdx_license_list.rb +0 -63
  551. data/util/patch_with_prs.rb +0 -77
  552. data/util/rubocop +0 -8
  553. data/util/update_bundled_ca_certificates.rb +0 -137
  554. data/util/update_changelog.rb +0 -64
@@ -18,7 +18,7 @@ module Bundler
18
18
  def initialize(command)
19
19
  msg = String.new
20
20
  msg << "Bundler is trying to run a `git #{command}` at runtime. You probably need to run `bundle install`. However, "
21
- msg << "this error message could probably be more useful. Please submit a ticket at https://github.com/bundler/bundler/issues "
21
+ msg << "this error message could probably be more useful. Please submit a ticket at https://github.com/rubygems/rubygems/issues/new?labels=Bundler&template=bundler-related-issue.md "
22
22
  msg << "with steps to reproduce as well as the following\n\nCALLER: #{caller.join("\n")}"
23
23
  super msg
24
24
  end
@@ -27,21 +27,21 @@ module Bundler
27
27
  class GitCommandError < GitError
28
28
  attr_reader :command
29
29
 
30
- def initialize(command, path = nil, extra_info = nil)
30
+ def initialize(command, path, destination_path, extra_info = nil)
31
31
  @command = command
32
32
 
33
33
  msg = String.new
34
- msg << "Git error: command `git #{command}` in directory #{SharedHelpers.pwd} has failed."
34
+ msg << "Git error: command `git #{command}` in directory #{destination_path} has failed."
35
35
  msg << "\n#{extra_info}" if extra_info
36
- msg << "\nIf this error persists you could try removing the cache directory '#{path}'" if path && path.exist?
36
+ msg << "\nIf this error persists you could try removing the cache directory '#{path}'" if path.exist?
37
37
  super msg
38
38
  end
39
39
  end
40
40
 
41
41
  class MissingGitRevisionError < GitCommandError
42
- def initialize(command, path, ref, repo)
42
+ def initialize(command, path, destination_path, ref, repo)
43
43
  msg = "Revision #{ref} does not exist in the repository #{repo}. Maybe you misspelled it?"
44
- super command, path, msg
44
+ super command, path, destination_path, msg
45
45
  end
46
46
  end
47
47
 
@@ -62,26 +62,18 @@ module Bundler
62
62
  end
63
63
 
64
64
  def revision
65
- return @revision if @revision
66
-
67
- begin
68
- @revision ||= find_local_revision
69
- rescue GitCommandError => e
70
- raise MissingGitRevisionError.new(e.command, path, ref, URICredentialsFilter.credential_filtered_uri(uri))
71
- end
72
-
73
- @revision
65
+ @revision ||= find_local_revision
74
66
  end
75
67
 
76
68
  def branch
77
- @branch ||= allowed_in_path do
78
- git("rev-parse --abbrev-ref HEAD").strip
69
+ @branch ||= allowed_with_path do
70
+ git("rev-parse --abbrev-ref HEAD", :dir => path).strip
79
71
  end
80
72
  end
81
73
 
82
74
  def contains?(commit)
83
- allowed_in_path do
84
- result, status = git_null("branch --contains #{commit}")
75
+ allowed_with_path do
76
+ result, status = git_null("branch --contains #{commit}", :dir => path)
85
77
  status.success? && result =~ /^\* (.*)$/
86
78
  end
87
79
  end
@@ -108,8 +100,8 @@ module Bundler
108
100
  return unless extra_ref
109
101
  end
110
102
 
111
- in_path do
112
- git_retry %(fetch --force --quiet --tags #{uri_escaped_with_configured_credentials} "refs/heads/*:refs/heads/*" #{extra_ref})
103
+ with_path do
104
+ git_retry %(fetch --force --quiet --tags #{uri_escaped_with_configured_credentials} "refs/heads/*:refs/heads/*" #{extra_ref}), :dir => path
113
105
  end
114
106
  end
115
107
 
@@ -126,65 +118,63 @@ module Bundler
126
118
  git_retry %(clone --no-checkout --quiet "#{path}" "#{destination}")
127
119
  File.chmod(((File.stat(destination).mode | 0o777) & ~File.umask), destination)
128
120
  rescue Errno::EEXIST => e
129
- file_path = e.message[%r{.*?(/.*)}, 1]
121
+ file_path = e.message[%r{.*?((?:[a-zA-Z]:)?/.*)}, 1]
130
122
  raise GitError, "Bundler could not install a gem because it needs to " \
131
123
  "create a directory, but a file exists - #{file_path}. Please delete " \
132
124
  "this file and try again."
133
125
  end
134
126
  end
135
127
  # method 2
136
- SharedHelpers.chdir(destination) do
137
- git_retry %(fetch --force --quiet --tags "#{path}")
128
+ git_retry %(fetch --force --quiet --tags "#{path}"), :dir => destination
138
129
 
139
- begin
140
- git "reset --hard #{@revision}"
141
- rescue GitCommandError => e
142
- raise MissingGitRevisionError.new(e.command, path, @revision, URICredentialsFilter.credential_filtered_uri(uri))
143
- end
130
+ begin
131
+ git "reset --hard #{@revision}", :dir => destination
132
+ rescue GitCommandError => e
133
+ raise MissingGitRevisionError.new(e.command, path, destination, @revision, URICredentialsFilter.credential_filtered_uri(uri))
134
+ end
144
135
 
145
- if submodules
146
- git_retry "submodule update --init --recursive"
147
- elsif Gem::Version.create(version) >= Gem::Version.create("2.9.0")
148
- git_retry "submodule deinit --all --force"
149
- end
136
+ if submodules
137
+ git_retry "submodule update --init --recursive", :dir => destination
138
+ elsif Gem::Version.create(version) >= Gem::Version.create("2.9.0")
139
+ inner_command = "git -C $toplevel submodule deinit --force $sm_path"
140
+ inner_command = inner_command.gsub("$") { '\$' } unless Bundler::WINDOWS
141
+ git_retry "submodule foreach --quiet \"#{inner_command}\"", :dir => destination
150
142
  end
151
143
  end
152
144
 
153
- private
145
+ private
154
146
 
155
- def git_null(command)
156
- command_with_no_credentials = URICredentialsFilter.credential_filtered_string(command, uri)
157
- raise GitNotAllowedError.new(command_with_no_credentials) unless allow?
147
+ def git_null(command, dir: SharedHelpers.pwd)
148
+ check_allowed(command)
158
149
 
159
150
  out, status = SharedHelpers.with_clean_git_env do
160
- capture_and_ignore_stderr("git #{command}")
151
+ capture_and_ignore_stderr("git #{command}", :chdir => dir.to_s)
161
152
  end
162
153
 
163
154
  [URICredentialsFilter.credential_filtered_string(out, uri), status]
164
155
  end
165
156
 
166
- def git_retry(command)
157
+ def git_retry(command, dir: SharedHelpers.pwd)
167
158
  Bundler::Retry.new("`git #{URICredentialsFilter.credential_filtered_string(command, uri)}`", GitNotAllowedError).attempts do
168
- git(command)
159
+ git(command, :dir => dir)
169
160
  end
170
161
  end
171
162
 
172
- def git(command, check_errors = true, error_msg = nil)
173
- command_with_no_credentials = URICredentialsFilter.credential_filtered_string(command, uri)
174
- raise GitNotAllowedError.new(command_with_no_credentials) unless allow?
163
+ def git(command, dir: SharedHelpers.pwd)
164
+ command_with_no_credentials = check_allowed(command)
175
165
 
176
166
  out, status = SharedHelpers.with_clean_git_env do
177
- capture_and_filter_stderr(uri, "git #{command}")
167
+ capture_and_filter_stderr(uri, "git #{command}", :chdir => dir.to_s)
178
168
  end
179
169
 
180
- stdout_with_no_credentials = URICredentialsFilter.credential_filtered_string(out, uri)
181
- raise GitCommandError.new(command_with_no_credentials, path, error_msg) if check_errors && !status.success?
182
- stdout_with_no_credentials
170
+ raise GitCommandError.new(command_with_no_credentials, path, dir) unless status.success?
171
+
172
+ URICredentialsFilter.credential_filtered_string(out, uri)
183
173
  end
184
174
 
185
175
  def has_revision_cached?
186
176
  return unless @revision
187
- in_path { git("cat-file -e #{@revision}") }
177
+ with_path { git("cat-file -e #{@revision}", :dir => path) }
188
178
  true
189
179
  rescue GitError
190
180
  false
@@ -195,9 +185,11 @@ module Bundler
195
185
  end
196
186
 
197
187
  def find_local_revision
198
- allowed_in_path do
199
- git("rev-parse --verify #{Shellwords.shellescape(ref)}", true).strip
188
+ allowed_with_path do
189
+ git("rev-parse --verify #{Shellwords.shellescape(ref)}", :dir => path).strip
200
190
  end
191
+ rescue GitCommandError => e
192
+ raise MissingGitRevisionError.new(e.command, path, path, ref, URICredentialsFilter.credential_filtered_uri(uri))
201
193
  end
202
194
 
203
195
  # Escape the URI for git commands
@@ -230,27 +222,32 @@ module Bundler
230
222
  @git ? @git.allow_git_ops? : true
231
223
  end
232
224
 
233
- def in_path(&blk)
225
+ def with_path(&blk)
234
226
  checkout unless path.exist?
235
- _ = URICredentialsFilter # load it before we chdir
236
- SharedHelpers.chdir(path, &blk)
227
+ blk.call
237
228
  end
238
229
 
239
- def allowed_in_path
240
- return in_path { yield } if allow?
230
+ def allowed_with_path
231
+ return with_path { yield } if allow?
241
232
  raise GitError, "The git source #{uri} is not yet checked out. Please run `bundle install` before trying to start your application"
242
233
  end
243
234
 
244
- def capture_and_filter_stderr(uri, cmd)
235
+ def check_allowed(command)
236
+ command_with_no_credentials = URICredentialsFilter.credential_filtered_string(command, uri)
237
+ raise GitNotAllowedError.new(command_with_no_credentials) unless allow?
238
+ command_with_no_credentials
239
+ end
240
+
241
+ def capture_and_filter_stderr(uri, cmd, chdir: SharedHelpers.pwd)
245
242
  require "open3"
246
- return_value, captured_err, status = Open3.capture3(cmd)
243
+ return_value, captured_err, status = Open3.capture3(cmd, :chdir => chdir)
247
244
  Bundler.ui.warn URICredentialsFilter.credential_filtered_string(captured_err, uri) if uri && !captured_err.empty?
248
245
  [return_value, status]
249
246
  end
250
247
 
251
- def capture_and_ignore_stderr(cmd)
248
+ def capture_and_ignore_stderr(cmd, chdir: SharedHelpers.pwd)
252
249
  require "open3"
253
- return_value, _, status = Open3.capture3(cmd)
250
+ return_value, _, status = Open3.capture3(cmd, :chdir => chdir)
254
251
  [return_value, status]
255
252
  end
256
253
  end
@@ -125,14 +125,18 @@ module Bundler
125
125
  @expanded_original_path ||= expand(original_path)
126
126
  end
127
127
 
128
- private
128
+ private
129
129
 
130
130
  def expanded_path
131
131
  @expanded_path ||= expand(path)
132
132
  end
133
133
 
134
134
  def expand(somepath)
135
- somepath.expand_path(root_path)
135
+ if Bundler.current_ruby.jruby? # TODO: Unify when https://github.com/rubygems/bundler/issues/7598 fixed upstream and all supported jrubies include the fix
136
+ somepath.expand_path(root_path).expand_path
137
+ else
138
+ somepath.expand_path(root_path)
139
+ end
136
140
  rescue ArgumentError => e
137
141
  Bundler.ui.debug(e)
138
142
  raise PathError, "There was an error while trying to use the path " \
@@ -167,7 +171,7 @@ module Bundler
167
171
 
168
172
  if File.directory?(expanded_path)
169
173
  # We sort depth-first since `<<` will override the earlier-found specs
170
- Dir["#{expanded_path}/#{@glob}"].sort_by {|p| -p.split(File::SEPARATOR).size }.each do |file|
174
+ Gem::Util.glob_files_in_dir(@glob, expanded_path).sort_by {|p| -p.split(File::SEPARATOR).size }.each do |file|
171
175
  next unless spec = load_gemspec(file)
172
176
  spec.source = self
173
177
 
@@ -26,23 +26,21 @@ module Bundler
26
26
  end
27
27
 
28
28
  def post_install
29
- SharedHelpers.chdir(@gem_dir) do
30
- run_hooks(:pre_install)
29
+ run_hooks(:pre_install)
31
30
 
32
- unless @disable_extensions
33
- build_extensions
34
- run_hooks(:post_build)
35
- end
31
+ unless @disable_extensions
32
+ build_extensions
33
+ run_hooks(:post_build)
34
+ end
36
35
 
37
- generate_bin unless spec.executables.nil? || spec.executables.empty?
36
+ generate_bin unless spec.executables.nil? || spec.executables.empty?
38
37
 
39
- run_hooks(:post_install)
40
- end
38
+ run_hooks(:post_install)
41
39
  ensure
42
40
  Bundler.rm_rf(@tmp_dir) if Bundler.requires_sudo?
43
41
  end
44
42
 
45
- private
43
+ private
46
44
 
47
45
  def generate_bin
48
46
  super
@@ -145,20 +145,17 @@ module Bundler
145
145
 
146
146
  Bundler.mkdir_p bin_path, :no_sudo => true unless spec.executables.empty? || Bundler.rubygems.provides?(">= 2.7.5")
147
147
 
148
- installed_spec = nil
149
- Bundler.rubygems.preserve_paths do
150
- installed_spec = Bundler::RubyGemsGemInstaller.at(
151
- path,
152
- :install_dir => install_path.to_s,
153
- :bin_dir => bin_path.to_s,
154
- :ignore_dependencies => true,
155
- :wrappers => true,
156
- :env_shebang => true,
157
- :build_args => opts[:build_args],
158
- :bundler_expected_checksum => spec.respond_to?(:checksum) && spec.checksum,
159
- :bundler_extension_cache_path => extension_cache_path(spec)
160
- ).install
161
- end
148
+ installed_spec = Bundler::RubyGemsGemInstaller.at(
149
+ path,
150
+ :install_dir => install_path.to_s,
151
+ :bin_dir => bin_path.to_s,
152
+ :ignore_dependencies => true,
153
+ :wrappers => true,
154
+ :env_shebang => true,
155
+ :build_args => opts[:build_args],
156
+ :bundler_expected_checksum => spec.respond_to?(:checksum) && spec.checksum,
157
+ :bundler_extension_cache_path => extension_cache_path(spec)
158
+ ).install
162
159
  spec.full_gem_path = installed_spec.full_gem_path
163
160
 
164
161
  # SUDO HAX
@@ -294,7 +291,7 @@ module Bundler
294
291
  names
295
292
  end
296
293
 
297
- protected
294
+ protected
298
295
 
299
296
  def credless_remotes
300
297
  remotes.map(&method(:suppress_configured_credentials))
@@ -468,7 +465,7 @@ module Bundler
468
465
  Bundler.app_cache
469
466
  end
470
467
 
471
- private
468
+ private
472
469
 
473
470
  # Checks if the requested spec exists in the global cache. If it does,
474
471
  # we copy it to the download path, and if it does not, we download it.
@@ -39,7 +39,7 @@ module Bundler
39
39
  "rubygems remote at #{anonymized_uri}"
40
40
  end
41
41
 
42
- private
42
+ private
43
43
 
44
44
  def apply_auth(uri, auth)
45
45
  if auth && uri.userinfo.nil?
@@ -116,7 +116,7 @@ module Bundler
116
116
  @rubygems_aggregate.remotes
117
117
  end
118
118
 
119
- private
119
+ private
120
120
 
121
121
  def rubygems_aggregate_class
122
122
  Source::Rubygems
@@ -147,7 +147,7 @@ module Bundler
147
147
  if source.uri =~ /^git\:/
148
148
  Bundler.ui.warn "The git source `#{source.uri}` uses the `git` protocol, " \
149
149
  "which transmits data without encryption. Disable this warning with " \
150
- "`bundle config set git.allow_insecure true`, or switch to the `https` " \
150
+ "`bundle config set --local git.allow_insecure true`, or switch to the `https` " \
151
151
  "protocol to keep your data secure."
152
152
  end
153
153
  end
@@ -100,6 +100,7 @@ module Bundler
100
100
  @specs.map do |s|
101
101
  next s unless s.is_a?(LazySpecification)
102
102
  s.source.dependency_names = names if s.source.respond_to?(:dependency_names=)
103
+ s.source.remote!
103
104
  spec = s.__materialize__
104
105
  raise GemNotFound, "Could not find #{s.full_name} in any of the sources" unless spec
105
106
  spec
@@ -147,7 +148,7 @@ module Bundler
147
148
  sorted.each(&b)
148
149
  end
149
150
 
150
- private
151
+ private
151
152
 
152
153
  def sorted
153
154
  rake = @specs.find {|s| s.name == "rake" }
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "remote_specification"
4
-
5
3
  module Bundler
6
4
  class StubSpecification < RemoteSpecification
7
5
  def self.from_stub(stub)
@@ -28,9 +26,13 @@ module Bundler
28
26
 
29
27
  # @!group Stub Delegates
30
28
 
31
- # This is defined directly to avoid having to load every installed spec
29
+ # This is defined directly to avoid having to loading the full spec
32
30
  def missing_extensions?
33
- stub.missing_extensions?
31
+ return false if default_gem?
32
+ return false if extensions.empty?
33
+ return false if File.exist? gem_build_complete_path
34
+
35
+ true
34
36
  end
35
37
 
36
38
  def activated
@@ -41,8 +43,16 @@ module Bundler
41
43
  stub.instance_variable_set(:@activated, activated)
42
44
  end
43
45
 
44
- def default_gem
45
- stub.default_gem
46
+ def extensions
47
+ stub.extensions
48
+ end
49
+
50
+ def gem_build_complete_path
51
+ File.join(extension_dir, "gem.build_complete")
52
+ end
53
+
54
+ def default_gem?
55
+ stub.default_gem?
46
56
  end
47
57
 
48
58
  def full_gem_path
@@ -71,7 +81,7 @@ module Bundler
71
81
  stub.raw_require_paths
72
82
  end
73
83
 
74
- private
84
+ private
75
85
 
76
86
  def _remote_specification
77
87
  @_remote_specification ||= begin
@@ -2,73 +2,83 @@
2
2
 
3
3
  ## Our Pledge
4
4
 
5
- In the interest of fostering an open and welcoming environment, we as
6
- contributors and maintainers pledge to making participation in our project and
7
- our community a harassment-free experience for everyone, regardless of age, body
8
- size, disability, ethnicity, gender identity and expression, level of experience,
9
- nationality, personal appearance, race, religion, or sexual identity and
10
- orientation.
5
+ We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
6
+
7
+ We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
11
8
 
12
9
  ## Our Standards
13
10
 
14
- Examples of behavior that contributes to creating a positive environment
15
- include:
11
+ Examples of behavior that contributes to a positive environment for our community include:
16
12
 
17
- * Using welcoming and inclusive language
18
- * Being respectful of differing viewpoints and experiences
19
- * Gracefully accepting constructive criticism
20
- * Focusing on what is best for the community
21
- * Showing empathy towards other community members
13
+ * Demonstrating empathy and kindness toward other people
14
+ * Being respectful of differing opinions, viewpoints, and experiences
15
+ * Giving and gracefully accepting constructive feedback
16
+ * Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
17
+ * Focusing on what is best not just for us as individuals, but for the overall community
22
18
 
23
- Examples of unacceptable behavior by participants include:
19
+ Examples of unacceptable behavior include:
24
20
 
25
- * The use of sexualized language or imagery and unwelcome sexual attention or
26
- advances
27
- * Trolling, insulting/derogatory comments, and personal or political attacks
21
+ * The use of sexualized language or imagery, and sexual attention or
22
+ advances of any kind
23
+ * Trolling, insulting or derogatory comments, and personal or political attacks
28
24
  * Public or private harassment
29
- * Publishing others' private information, such as a physical or electronic
30
- address, without explicit permission
25
+ * Publishing others' private information, such as a physical or email
26
+ address, without their explicit permission
31
27
  * Other conduct which could reasonably be considered inappropriate in a
32
28
  professional setting
33
29
 
34
- ## Our Responsibilities
30
+ ## Enforcement Responsibilities
35
31
 
36
- Project maintainers are responsible for clarifying the standards of acceptable
37
- behavior and are expected to take appropriate and fair corrective action in
38
- response to any instances of unacceptable behavior.
32
+ Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.
39
33
 
40
- Project maintainers have the right and responsibility to remove, edit, or
41
- reject comments, commits, code, wiki edits, issues, and other contributions
42
- that are not aligned to this Code of Conduct, or to ban temporarily or
43
- permanently any contributor for other behaviors that they deem inappropriate,
44
- threatening, offensive, or harmful.
34
+ Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.
45
35
 
46
36
  ## Scope
47
37
 
48
- This Code of Conduct applies both within project spaces and in public spaces
49
- when an individual is representing the project or its community. Examples of
50
- representing a project or community include using an official project e-mail
51
- address, posting via an official social media account, or acting as an appointed
52
- representative at an online or offline event. Representation of a project may be
53
- further defined and clarified by project maintainers.
38
+ This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
54
39
 
55
40
  ## Enforcement
56
41
 
57
- Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
- reported by contacting the project team at <%= config[:email] %>. All
59
- complaints will be reviewed and investigated and will result in a response that
60
- is deemed necessary and appropriate to the circumstances. The project team is
61
- obligated to maintain confidentiality with regard to the reporter of an incident.
62
- Further details of specific enforcement policies may be posted separately.
42
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at <%= config[:email] %>. All complaints will be reviewed and investigated promptly and fairly.
43
+
44
+ All community leaders are obligated to respect the privacy and security of the reporter of any incident.
45
+
46
+ ## Enforcement Guidelines
47
+
48
+ Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:
49
+
50
+ ### 1. Correction
51
+
52
+ **Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.
53
+
54
+ **Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.
55
+
56
+ ### 2. Warning
57
+
58
+ **Community Impact**: A violation through a single incident or series of actions.
63
59
 
64
- Project maintainers who do not follow or enforce the Code of Conduct in good
65
- faith may face temporary or permanent repercussions as determined by other
66
- members of the project's leadership.
60
+ **Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.
61
+
62
+ ### 3. Temporary Ban
63
+
64
+ **Community Impact**: A serious violation of community standards, including sustained inappropriate behavior.
65
+
66
+ **Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.
67
+
68
+ ### 4. Permanent Ban
69
+
70
+ **Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.
71
+
72
+ **Consequence**: A permanent ban from any sort of public interaction within the community.
67
73
 
68
74
  ## Attribution
69
75
 
70
- This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71
- available at [https://contributor-covenant.org/version/1/4][version]
76
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.0,
77
+ available at https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
78
+
79
+ Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity).
80
+
81
+ [homepage]: https://www.contributor-covenant.org
72
82
 
73
- [homepage]: https://contributor-covenant.org
74
- [version]: https://contributor-covenant.org/version/1/4/
83
+ For answers to common questions about this code of conduct, see the FAQ at
84
+ https://www.contributor-covenant.org/faq. Translations are available at https://www.contributor-covenant.org/translations.