rubygems-update 3.1.0 → 3.2.0.rc.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (345) hide show
  1. checksums.yaml +4 -4
  2. data/CODE_OF_CONDUCT.md +55 -19
  3. data/CONTRIBUTING.md +2 -3
  4. data/History.txt +195 -7
  5. data/Manifest.txt +11 -23
  6. data/POLICIES.md +2 -9
  7. data/README.md +5 -5
  8. data/Rakefile +38 -35
  9. data/bin/update_rubygems +2 -2
  10. data/bundler/CHANGELOG.md +846 -728
  11. data/bundler/README.md +6 -8
  12. data/bundler/UPGRADING.md +16 -30
  13. data/bundler/bundler.gemspec +3 -3
  14. data/bundler/exe/bundle +3 -0
  15. data/bundler/lib/bundler.rb +15 -4
  16. data/bundler/lib/bundler/build_metadata.rb +2 -2
  17. data/bundler/lib/bundler/cli.rb +29 -9
  18. data/bundler/lib/bundler/cli/console.rb +1 -1
  19. data/bundler/lib/bundler/cli/exec.rb +3 -12
  20. data/bundler/lib/bundler/cli/gem.rb +74 -10
  21. data/bundler/lib/bundler/cli/info.rb +6 -3
  22. data/bundler/lib/bundler/cli/init.rb +1 -1
  23. data/bundler/lib/bundler/cli/install.rb +8 -16
  24. data/bundler/lib/bundler/cli/issue.rb +2 -2
  25. data/bundler/lib/bundler/cli/outdated.rb +5 -5
  26. data/bundler/lib/bundler/cli/plugin.rb +10 -0
  27. data/bundler/lib/bundler/definition.rb +32 -32
  28. data/bundler/lib/bundler/dependency.rb +0 -9
  29. data/bundler/lib/bundler/dsl.rb +1 -5
  30. data/bundler/lib/bundler/environment_preserver.rb +26 -2
  31. data/bundler/lib/bundler/errors.rb +1 -0
  32. data/bundler/lib/bundler/feature_flag.rb +0 -2
  33. data/bundler/lib/bundler/fetcher.rb +1 -0
  34. data/bundler/lib/bundler/friendly_errors.rb +4 -10
  35. data/bundler/lib/bundler/gem_helper.rb +18 -12
  36. data/bundler/lib/bundler/gem_version_promoter.rb +1 -1
  37. data/bundler/lib/bundler/injector.rb +14 -3
  38. data/bundler/lib/bundler/inline.rb +2 -2
  39. data/bundler/lib/bundler/installer.rb +29 -28
  40. data/bundler/lib/bundler/installer/gem_installer.rb +2 -2
  41. data/bundler/lib/bundler/installer/parallel_installer.rb +9 -9
  42. data/bundler/lib/bundler/lazy_specification.rb +16 -3
  43. data/bundler/lib/bundler/plugin.rb +26 -0
  44. data/bundler/lib/bundler/plugin/index.rb +9 -0
  45. data/bundler/lib/bundler/psyched_yaml.rb +0 -15
  46. data/bundler/lib/bundler/remote_specification.rb +4 -1
  47. data/bundler/lib/bundler/resolver.rb +31 -8
  48. data/bundler/lib/bundler/resolver/spec_group.rb +26 -5
  49. data/bundler/lib/bundler/rubygems_ext.rb +7 -8
  50. data/bundler/lib/bundler/rubygems_gem_installer.rb +1 -7
  51. data/bundler/lib/bundler/rubygems_integration.rb +13 -19
  52. data/bundler/lib/bundler/runtime.rb +2 -12
  53. data/bundler/lib/bundler/settings.rb +0 -3
  54. data/bundler/lib/bundler/setup.rb +5 -0
  55. data/bundler/lib/bundler/shared_helpers.rb +1 -1
  56. data/bundler/lib/bundler/source/git/git_proxy.rb +53 -58
  57. data/bundler/lib/bundler/source/path.rb +5 -1
  58. data/bundler/lib/bundler/source/path/installer.rb +7 -9
  59. data/bundler/lib/bundler/source/rubygems.rb +11 -14
  60. data/bundler/lib/bundler/stub_specification.rb +16 -4
  61. data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
  62. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +7 -2
  63. data/bundler/lib/bundler/templates/newgem/Rakefile.tt +12 -5
  64. data/bundler/lib/bundler/templates/newgem/bin/console.tt +2 -0
  65. data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
  66. data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
  67. data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
  68. data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
  69. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +2 -0
  70. data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
  71. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +5 -3
  72. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +10 -0
  73. data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
  74. data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -0
  75. data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
  76. data/bundler/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
  77. data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
  78. data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
  79. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +72 -208
  80. data/bundler/lib/bundler/vendor/thor/lib/thor.rb +0 -7
  81. data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
  82. data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
  83. data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  84. data/bundler/lib/bundler/version.rb +1 -1
  85. data/bundler/man/bundle-add.1 +1 -1
  86. data/bundler/man/bundle-add.1.txt +15 -15
  87. data/bundler/man/bundle-binstubs.1 +1 -1
  88. data/bundler/man/bundle-binstubs.1.txt +10 -10
  89. data/bundler/man/bundle-cache.1 +1 -1
  90. data/bundler/man/bundle-cache.1.txt +15 -15
  91. data/bundler/man/bundle-check.1 +1 -1
  92. data/bundler/man/bundle-check.1.txt +8 -8
  93. data/bundler/man/bundle-clean.1 +1 -1
  94. data/bundler/man/bundle-clean.1.txt +6 -6
  95. data/bundler/man/bundle-config.1 +3 -9
  96. data/bundler/man/bundle-config.1.txt +271 -272
  97. data/bundler/man/bundle-config.ronn +5 -9
  98. data/bundler/man/bundle-doctor.1 +1 -1
  99. data/bundler/man/bundle-doctor.1.txt +9 -9
  100. data/bundler/man/bundle-exec.1 +1 -1
  101. data/bundler/man/bundle-exec.1.txt +84 -81
  102. data/bundler/man/bundle-gem.1 +25 -3
  103. data/bundler/man/bundle-gem.1.txt +65 -39
  104. data/bundler/man/bundle-gem.ronn +30 -7
  105. data/bundler/man/bundle-info.1 +1 -1
  106. data/bundler/man/bundle-info.1.txt +2 -2
  107. data/bundler/man/bundle-init.1 +1 -1
  108. data/bundler/man/bundle-init.1.txt +9 -9
  109. data/bundler/man/bundle-inject.1 +1 -1
  110. data/bundler/man/bundle-inject.1.txt +4 -4
  111. data/bundler/man/bundle-install.1 +1 -1
  112. data/bundler/man/bundle-install.1.txt +169 -169
  113. data/bundler/man/bundle-list.1 +1 -1
  114. data/bundler/man/bundle-list.1.txt +7 -7
  115. data/bundler/man/bundle-lock.1 +1 -1
  116. data/bundler/man/bundle-lock.1.txt +28 -28
  117. data/bundler/man/bundle-open.1 +1 -1
  118. data/bundler/man/bundle-open.1.txt +3 -3
  119. data/bundler/man/bundle-outdated.1 +1 -1
  120. data/bundler/man/bundle-outdated.1.txt +34 -34
  121. data/bundler/man/bundle-platform.1 +1 -1
  122. data/bundler/man/bundle-platform.1.txt +16 -16
  123. data/bundler/man/bundle-pristine.1 +1 -1
  124. data/bundler/man/bundle-pristine.1.txt +8 -8
  125. data/bundler/man/bundle-remove.1 +1 -1
  126. data/bundler/man/bundle-remove.1.txt +9 -9
  127. data/bundler/man/bundle-show.1 +1 -1
  128. data/bundler/man/bundle-show.1.txt +8 -8
  129. data/bundler/man/bundle-update.1 +1 -1
  130. data/bundler/man/bundle-update.1.txt +149 -148
  131. data/bundler/man/bundle-viz.1 +1 -1
  132. data/bundler/man/bundle-viz.1.txt +11 -11
  133. data/bundler/man/bundle.1 +1 -1
  134. data/bundler/man/bundle.1.txt +31 -31
  135. data/bundler/man/gemfile.5 +1 -1
  136. data/bundler/man/gemfile.5.txt +218 -216
  137. data/lib/rubygems.rb +135 -185
  138. data/lib/rubygems/available_set.rb +4 -4
  139. data/lib/rubygems/basic_specification.rb +12 -6
  140. data/lib/rubygems/bundler_version_finder.rb +14 -9
  141. data/lib/rubygems/command.rb +17 -15
  142. data/lib/rubygems/command_manager.rb +4 -3
  143. data/lib/rubygems/commands/cert_command.rb +1 -1
  144. data/lib/rubygems/commands/cleanup_command.rb +3 -3
  145. data/lib/rubygems/commands/contents_command.rb +4 -4
  146. data/lib/rubygems/commands/dependency_command.rb +6 -6
  147. data/lib/rubygems/commands/fetch_command.rb +2 -2
  148. data/lib/rubygems/commands/help_command.rb +2 -2
  149. data/lib/rubygems/commands/info_command.rb +9 -4
  150. data/lib/rubygems/commands/install_command.rb +3 -3
  151. data/lib/rubygems/commands/list_command.rb +9 -6
  152. data/lib/rubygems/commands/lock_command.rb +1 -1
  153. data/lib/rubygems/commands/open_command.rb +0 -2
  154. data/lib/rubygems/commands/pristine_command.rb +10 -2
  155. data/lib/rubygems/commands/push_command.rb +4 -42
  156. data/lib/rubygems/commands/query_command.rb +7 -352
  157. data/lib/rubygems/commands/search_command.rb +8 -6
  158. data/lib/rubygems/commands/setup_command.rb +156 -45
  159. data/lib/rubygems/commands/sources_command.rb +3 -3
  160. data/lib/rubygems/commands/specification_command.rb +2 -2
  161. data/lib/rubygems/commands/stale_command.rb +1 -1
  162. data/lib/rubygems/commands/uninstall_command.rb +2 -2
  163. data/lib/rubygems/commands/unpack_command.rb +1 -1
  164. data/lib/rubygems/commands/update_command.rb +40 -10
  165. data/lib/rubygems/config_file.rb +11 -2
  166. data/lib/rubygems/core_ext/kernel_require.rb +26 -36
  167. data/lib/rubygems/defaults.rb +99 -5
  168. data/lib/rubygems/dependency.rb +2 -5
  169. data/lib/rubygems/dependency_installer.rb +1 -73
  170. data/lib/rubygems/dependency_list.rb +7 -7
  171. data/lib/rubygems/deprecate.rb +46 -1
  172. data/lib/rubygems/doctor.rb +4 -2
  173. data/lib/rubygems/errors.rb +3 -2
  174. data/lib/rubygems/exceptions.rb +2 -13
  175. data/lib/rubygems/ext.rb +6 -6
  176. data/lib/rubygems/ext/build_error.rb +2 -0
  177. data/lib/rubygems/ext/builder.rb +4 -2
  178. data/lib/rubygems/ext/cmake_builder.rb +1 -1
  179. data/lib/rubygems/ext/ext_conf_builder.rb +6 -7
  180. data/lib/rubygems/gem_runner.rb +3 -8
  181. data/lib/rubygems/gemcutter_utilities.rb +1 -1
  182. data/lib/rubygems/indexer.rb +1 -19
  183. data/lib/rubygems/install_update_options.rb +5 -5
  184. data/lib/rubygems/installer.rb +45 -42
  185. data/lib/rubygems/installer_test_case.rb +19 -2
  186. data/lib/rubygems/installer_uninstaller_utils.rb +24 -0
  187. data/lib/rubygems/local_remote_options.rb +1 -1
  188. data/lib/rubygems/name_tuple.rb +2 -4
  189. data/lib/rubygems/package.rb +8 -13
  190. data/lib/rubygems/package/old.rb +1 -1
  191. data/lib/rubygems/package/tar_header.rb +3 -3
  192. data/lib/rubygems/package/tar_reader.rb +0 -1
  193. data/lib/rubygems/package/tar_reader/entry.rb +0 -1
  194. data/lib/rubygems/package/tar_test_case.rb +1 -1
  195. data/lib/rubygems/package/tar_writer.rb +2 -6
  196. data/lib/rubygems/package_task.rb +1 -5
  197. data/lib/rubygems/path_support.rb +1 -1
  198. data/lib/rubygems/platform.rb +3 -3
  199. data/lib/rubygems/query_utils.rb +362 -0
  200. data/lib/rubygems/rdoc.rb +0 -12
  201. data/lib/rubygems/remote_fetcher.rb +5 -19
  202. data/lib/rubygems/request/connection_pools.rb +1 -1
  203. data/lib/rubygems/request_set.rb +5 -5
  204. data/lib/rubygems/request_set/gem_dependency_api.rb +2 -2
  205. data/lib/rubygems/request_set/lockfile.rb +8 -8
  206. data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -1
  207. data/lib/rubygems/requirement.rb +14 -15
  208. data/lib/rubygems/resolver.rb +7 -8
  209. data/lib/rubygems/resolver/api_set.rb +4 -4
  210. data/lib/rubygems/resolver/api_specification.rb +1 -1
  211. data/lib/rubygems/resolver/composed_set.rb +3 -3
  212. data/lib/rubygems/resolver/conflict.rb +1 -1
  213. data/lib/rubygems/resolver/index_set.rb +1 -1
  214. data/lib/rubygems/resolver/installer_set.rb +3 -3
  215. data/lib/rubygems/resolver/lock_set.rb +1 -1
  216. data/lib/rubygems/safe_yaml.rb +4 -4
  217. data/lib/rubygems/security.rb +25 -25
  218. data/lib/rubygems/security/policy.rb +3 -3
  219. data/lib/rubygems/security/signer.rb +4 -4
  220. data/lib/rubygems/security/trust_dir.rb +1 -1
  221. data/lib/rubygems/server.rb +9 -9
  222. data/lib/rubygems/source/git.rb +7 -6
  223. data/lib/rubygems/source/local.rb +2 -2
  224. data/lib/rubygems/source_list.rb +6 -5
  225. data/lib/rubygems/spec_fetcher.rb +18 -15
  226. data/lib/rubygems/specification.rb +91 -112
  227. data/lib/rubygems/specification_policy.rb +88 -28
  228. data/lib/rubygems/test_case.rb +122 -81
  229. data/lib/rubygems/test_utilities.rb +6 -6
  230. data/lib/rubygems/uninstaller.rb +35 -14
  231. data/lib/rubygems/user_interaction.rb +1 -10
  232. data/lib/rubygems/util.rb +17 -3
  233. data/lib/rubygems/util/licenses.rb +4 -4
  234. data/lib/rubygems/validator.rb +1 -1
  235. data/lib/rubygems/version.rb +5 -5
  236. data/rubygems-update.gemspec +2 -2
  237. data/setup.rb +2 -7
  238. data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
  239. data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
  240. data/test/rubygems/test_bundled_ca.rb +1 -5
  241. data/test/rubygems/test_deprecate.rb +43 -4
  242. data/test/rubygems/test_gem.rb +150 -101
  243. data/test/rubygems/test_gem_available_set.rb +3 -3
  244. data/test/rubygems/test_gem_bundler_version_finder.rb +19 -1
  245. data/test/rubygems/test_gem_command.rb +24 -3
  246. data/test/rubygems/test_gem_command_manager.rb +37 -4
  247. data/test/rubygems/test_gem_commands_build_command.rb +25 -3
  248. data/test/rubygems/test_gem_commands_cert_command.rb +2 -2
  249. data/test/rubygems/test_gem_commands_cleanup_command.rb +1 -1
  250. data/test/rubygems/test_gem_commands_contents_command.rb +48 -15
  251. data/test/rubygems/test_gem_commands_environment_command.rb +21 -21
  252. data/test/rubygems/test_gem_commands_generate_index_command.rb +1 -5
  253. data/test/rubygems/test_gem_commands_info_command.rb +6 -6
  254. data/test/rubygems/test_gem_commands_install_command.rb +31 -31
  255. data/test/rubygems/test_gem_commands_mirror.rb +1 -1
  256. data/test/rubygems/test_gem_commands_open_command.rb +4 -4
  257. data/test/rubygems/test_gem_commands_owner_command.rb +11 -3
  258. data/test/rubygems/test_gem_commands_pristine_command.rb +41 -8
  259. data/test/rubygems/test_gem_commands_push_command.rb +7 -2
  260. data/test/rubygems/test_gem_commands_query_command.rb +9 -5
  261. data/test/rubygems/test_gem_commands_setup_command.rb +212 -114
  262. data/test/rubygems/test_gem_commands_signin_command.rb +6 -4
  263. data/test/rubygems/test_gem_commands_signout_command.rb +0 -5
  264. data/test/rubygems/test_gem_commands_sources_command.rb +39 -1
  265. data/test/rubygems/test_gem_commands_specification_command.rb +18 -18
  266. data/test/rubygems/test_gem_commands_uninstall_command.rb +2 -1
  267. data/test/rubygems/test_gem_commands_update_command.rb +68 -5
  268. data/test/rubygems/test_gem_commands_which_command.rb +3 -3
  269. data/test/rubygems/test_gem_commands_yank_command.rb +14 -6
  270. data/test/rubygems/test_gem_config_file.rb +7 -10
  271. data/test/rubygems/test_gem_dependency_installer.rb +52 -189
  272. data/test/rubygems/test_gem_dependency_list.rb +8 -8
  273. data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -1
  274. data/test/rubygems/test_gem_doctor.rb +28 -0
  275. data/test/rubygems/test_gem_ext_builder.rb +14 -25
  276. data/test/rubygems/test_gem_ext_cmake_builder.rb +13 -12
  277. data/test/rubygems/test_gem_ext_configure_builder.rb +1 -9
  278. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +0 -1
  279. data/test/rubygems/test_gem_ext_rake_builder.rb +9 -9
  280. data/test/rubygems/test_gem_gem_runner.rb +42 -0
  281. data/test/rubygems/test_gem_gemcutter_utilities.rb +5 -0
  282. data/test/rubygems/test_gem_indexer.rb +9 -13
  283. data/test/rubygems/test_gem_installer.rb +158 -67
  284. data/test/rubygems/test_gem_package.rb +16 -20
  285. data/test/rubygems/test_gem_package_tar_header.rb +19 -0
  286. data/test/rubygems/test_gem_package_tar_writer.rb +8 -3
  287. data/test/rubygems/test_gem_package_task.rb +46 -11
  288. data/test/rubygems/test_gem_remote_fetcher.rb +152 -190
  289. data/test/rubygems/test_gem_request.rb +11 -11
  290. data/test/rubygems/test_gem_request_set.rb +72 -20
  291. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +3 -3
  292. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -9
  293. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -118
  294. data/test/rubygems/test_gem_requirement.rb +2 -2
  295. data/test/rubygems/test_gem_resolver.rb +6 -6
  296. data/test/rubygems/test_gem_resolver_api_set.rb +3 -3
  297. data/test/rubygems/test_gem_resolver_best_set.rb +2 -2
  298. data/test/rubygems/test_gem_resolver_index_set.rb +2 -2
  299. data/test/rubygems/test_gem_resolver_installer_set.rb +7 -7
  300. data/test/rubygems/test_gem_resolver_lock_set.rb +3 -3
  301. data/test/rubygems/test_gem_security.rb +20 -20
  302. data/test/rubygems/test_gem_security_policy.rb +5 -8
  303. data/test/rubygems/test_gem_security_signer.rb +8 -8
  304. data/test/rubygems/test_gem_security_trust_dir.rb +2 -2
  305. data/test/rubygems/test_gem_server.rb +10 -10
  306. data/test/rubygems/test_gem_source.rb +12 -14
  307. data/test/rubygems/test_gem_source_git.rb +12 -11
  308. data/test/rubygems/test_gem_source_installed.rb +7 -7
  309. data/test/rubygems/test_gem_source_local.rb +8 -8
  310. data/test/rubygems/test_gem_source_lock.rb +10 -10
  311. data/test/rubygems/test_gem_source_specific_file.rb +7 -7
  312. data/test/rubygems/test_gem_source_vendor.rb +7 -7
  313. data/test/rubygems/test_gem_spec_fetcher.rb +11 -2
  314. data/test/rubygems/test_gem_specification.rb +169 -119
  315. data/test/rubygems/test_gem_stream_ui.rb +3 -1
  316. data/test/rubygems/test_gem_stub_specification.rb +0 -1
  317. data/test/rubygems/test_gem_text.rb +1 -1
  318. data/test/rubygems/test_gem_uninstaller.rb +134 -10
  319. data/test/rubygems/test_gem_util.rb +7 -5
  320. data/test/rubygems/test_gem_version.rb +1 -1
  321. data/test/rubygems/test_kernel.rb +25 -8
  322. data/test/rubygems/test_project_sanity.rb +8 -1
  323. data/test/rubygems/test_require.rb +242 -40
  324. metadata +33 -46
  325. data/.bundle/config +0 -2
  326. data/.rubocop.yml +0 -91
  327. data/Gemfile +0 -8
  328. data/Gemfile.lock +0 -43
  329. data/bundler/CODE_OF_CONDUCT.md +0 -136
  330. data/lib/rubygems/source_local.rb +0 -7
  331. data/lib/rubygems/source_specific_file.rb +0 -6
  332. data/lib/ubygems.rb +0 -14
  333. data/tmp/.keep +0 -0
  334. data/util/CL2notes +0 -55
  335. data/util/bisect +0 -10
  336. data/util/ci.sh +0 -62
  337. data/util/cops/deprecations.rb +0 -52
  338. data/util/create_certs.rb +0 -171
  339. data/util/create_certs.sh +0 -27
  340. data/util/create_encrypted_key.rb +0 -16
  341. data/util/generate_spdx_license_list.rb +0 -63
  342. data/util/patch_with_prs.rb +0 -77
  343. data/util/rubocop +0 -8
  344. data/util/update_bundled_ca_certificates.rb +0 -139
  345. data/util/update_changelog.rb +0 -67
@@ -1,7 +1,5 @@
1
- [![Version ](https://img.shields.io/gem/v/bundler.svg?style=flat)](https://rubygems.org/gems/bundler)
2
- [![Build Status](https://img.shields.io/travis/bundler/bundler/master.svg?style=flat)](https://travis-ci.org/bundler/bundler)
3
- [![Inline docs ](https://inch-ci.org/github/bundler/bundler.svg?style=flat)](https://inch-ci.org/github/bundler/bundler)
4
- [![Slack ](https://bundler-slackin.herokuapp.com/badge.svg)](https://bundler-slackin.herokuapp.com)
1
+ [![Version ](https://img.shields.io/gem/v/bundler.svg?style=flat)](https://rubygems.org/gems/bundler)
2
+ [![Slack ](https://bundler-slackin.herokuapp.com/badge.svg)](https://bundler-slackin.herokuapp.com)
5
3
 
6
4
  # Bundler: a gem to bundle gems
7
5
 
@@ -44,9 +42,9 @@ To get in touch with the Bundler core team and other Bundler users, please see [
44
42
 
45
43
  ### Contributing
46
44
 
47
- If you'd like to contribute to Bundler, that's awesome, and we <3 you. We've put together [the Bundler contributor guide](https://github.com/bundler/bundler/blob/master/doc/contributing/README.md) with all of the information you need to get started.
45
+ If you'd like to contribute to Bundler, that's awesome, and we <3 you. We've put together [the Bundler contributor guide](https://github.com/rubygems/rubygems/blob/master/bundler/doc/contributing/README.md) with all of the information you need to get started.
48
46
 
49
- If you'd like to request a substantial change to Bundler or to the Bundler documentation, refer to the [Bundler RFC process](https://github.com/bundler/rfcs) for more information.
47
+ If you'd like to request a substantial change to Bundler or its documentation, refer to the [Bundler RFC process](https://github.com/bundler/rfcs) for more information.
50
48
 
51
49
  While some Bundler contributors are compensated by Ruby Together, the project maintainers make decisions independent of Ruby Together. As a project, we welcome contributions regardless of the author's affiliation with Ruby Together.
52
50
 
@@ -57,8 +55,8 @@ While some Bundler contributors are compensated by Ruby Together, the project ma
57
55
 
58
56
  ### Code of Conduct
59
57
 
60
- Everyone interacting in the Bundler project's codebases, issue trackers, chat rooms, and mailing lists is expected to follow the [Bundler code of conduct](https://github.com/bundler/bundler/blob/master/CODE_OF_CONDUCT.md).
58
+ Everyone interacting in the Bundler project's codebases, issue trackers, chat rooms, and mailing lists is expected to follow the [Bundler code of conduct](https://github.com/rubygems/rubygems/blob/master/CODE_OF_CONDUCT.md).
61
59
 
62
60
  ### License
63
61
 
64
- Bundler is available under an [MIT License](https://github.com/bundler/bundler/blob/master/LICENSE.md).
62
+ Bundler is available under an [MIT License](https://github.com/rubygems/rubygems/blob/master/bundler/LICENSE.md).
@@ -4,8 +4,7 @@
4
4
 
5
5
  The following is a summary of the changes that we plan to introduce in Bundler
6
6
  3, why we will be making those changes, and what the deprecation process will
7
- look like. All these deprecations will be printed by default in the upcoming
8
- Bundler 2.1 release.
7
+ look like. All these deprecations are printed by default in the Bundler 2.1 release.
9
8
 
10
9
  If you don't want to deal with deprecations right now and want to toggle them
11
10
  off, you can do it through configuration. Set the `BUNDLE_SILENCE_DEPRECATIONS`
@@ -22,18 +21,19 @@ We do understand that changing behaviour that have been existing for years can
22
21
  be annoying for old users, that's why we intend to make this process as smooth
23
22
  as possible for everyone.
24
23
 
25
- I'll be dividing the deprecations into three groups: CLI deprecations, DSL
26
- deprecations, and misc deprecations. Let's dive into each of them.
24
+ I'll be dividing the deprecations into four groups: CLI deprecations, Helper
25
+ deprecations, DSL deprecations, and misc deprecations. Let's dive into each of
26
+ them.
27
27
 
28
28
  #### CLI deprecations
29
29
 
30
30
  The CLI defines a set of commands and options that can be used by our users to
31
31
  create command lines that bundler can understand. There's a number of changes
32
- that we plan to make to this set of commands and options.
32
+ in the upcoming 3 version.
33
33
 
34
34
  * Flags passed to `bundle install` that relied on being remembered across invocations have been deprecated.
35
35
 
36
- In particular, the `--clean`, `--deployment`, `--frozen`, `--no-cache`,
36
+ In particular, the `--clean`, `--deployment`, `--frozen`,
37
37
  `--no-prune`, `--path`, `--shebang`, `--system`, `--without`, and `--with`
38
38
  options to `bundle install`.
39
39
 
@@ -67,13 +67,12 @@ that we plan to make to this set of commands and options.
67
67
  This is the only bundler command requiring external dependencies, both an OS
68
68
  dependency (the `graphviz` package) and a gem dependency (the `ruby-graphviz`
69
69
  gem). Removing these dependencies will make development easier and it was also
70
- seen by the bundler team as an opportunity to develop a [bundler
71
- plugin](https://github.com/bundler/bundle-viz) that it's officially maintained
72
- by the bundler team, and that users can take as a reference to develop their
73
- own plugins. The plugin contains the same code as the old core command, the
74
- only difference being that the command is now implemented as `bundle graph`
75
- hich is much easier to understand. Have a look at the plugin's repo for more
76
- information about how to install and use the new plugin.
70
+ seen by the bundler team as an opportunity to develop a bundler plugin that
71
+ it's officially maintained by the bundler team, and that users can take as a
72
+ reference to develop their own plugins. The plugin will contain the same code
73
+ as the old core command, the only difference being that the command is now
74
+ implemented as `bundle graph` which is much easier to understand. However, the
75
+ details of the plugin are under discussion. See [#7041](https://github.com/rubygems/bundler/issues/7041).
77
76
 
78
77
  * The `bundle console` will be removed and replaced with `bin/console`.
79
78
 
@@ -83,12 +82,7 @@ that we plan to make to this set of commands and options.
83
82
  in favor of a `bin/console` script created by `bundle gem` on gem generation
84
83
  that users can tweak to their needs.
85
84
 
86
- * The `bundle update` command will no longer update all gems, you'll need to pass `--all` to it.
87
-
88
- The bundler team considers that updating all gems at once should not be the
89
- main use case for this command, and that it's better to upgrade gems one at a
90
- time (or in groups of related gems). You can still upgrade all gems at once,
91
- but now you need the `--all` flag.
85
+ * ~The `bundle update` command will no longer update all gems, you'll need to pass `--all` to it.~ (postponed)
92
86
 
93
87
  * The `bundle install` command will no longer accept a `--binstubs` flag.
94
88
 
@@ -98,17 +92,9 @@ that we plan to make to this set of commands and options.
98
92
  hardly useful since most users will only use a subset of all the binstubs
99
93
  available to them. Also, it would force the introduction of a bunch of most
100
94
  likely unused files into source control. Because of this, binstubs now must
101
- must be created and checked into version control individually.
102
-
103
- * The `bundle config` command has a new subcommand-based interface.
95
+ be created and checked into version control individually.
104
96
 
105
- We believe the old interface where the kind of operation was guessed from the
106
- combination of flags and number of arguments being passed to the command was
107
- confusing. Instead we have introduced a compulsory subcommand argument that
108
- can be either `list`, `get`, `set` or `unset`. We believe this will make the
109
- `config` command much easier to interact with. The old interface is
110
- deprecated, but we are giving suggestions about the new commands that should
111
- be used along with the deprecation messages.
97
+ * ~The `bundle config` command has a new subcommand-based interface.~ (postponed)
112
98
 
113
99
  * The `bundle inject` command is deprecated and replaced with `bundle add`.
114
100
 
@@ -223,7 +209,7 @@ unambiguously defined.
223
209
  the `capistrano-bundler` gem, and everyone using Capistrano 3 should be
224
210
  already using that instead. If for some reason, you are still using Capistrano
225
211
  2, feel free to copy the Capistrano tasks out of the Bundler 2 file
226
- `bundler/deployment.rb` and put them into your app.
212
+ `lib/bundler/deployment.rb` and put them into your app.
227
213
 
228
214
  In general, we don't want to maintain integrations for every deployment system
229
215
  out there, so that's why we are removing these.
@@ -24,10 +24,10 @@ Gem::Specification.new do |s|
24
24
 
25
25
  if s.respond_to?(:metadata=)
26
26
  s.metadata = {
27
- "bug_tracker_uri" => "https://github.com/bundler/bundler/issues",
28
- "changelog_uri" => "https://github.com/bundler/bundler/blob/master/CHANGELOG.md",
27
+ "bug_tracker_uri" => "https://github.com/rubygems/rubygems/issues?q=is%3Aopen+is%3Aissue+label%3ABundler",
28
+ "changelog_uri" => "https://github.com/rubygems/rubygems/blob/master/bundler/CHANGELOG.md",
29
29
  "homepage_uri" => "https://bundler.io/",
30
- "source_code_uri" => "https://github.com/bundler/bundler/",
30
+ "source_code_uri" => "https://github.com/rubygems/rubygems/",
31
31
  }
32
32
  end
33
33
 
@@ -15,6 +15,9 @@ else
15
15
  require "bundler"
16
16
  end
17
17
 
18
+ # Workaround for non-activated bundler spec due to missing https://github.com/rubygems/rubygems/commit/4e306d7bcdee924b8d80ca9db6125aa59ee4e5a3
19
+ gem "bundler", Bundler::VERSION if Gem.rubygems_version < Gem::Version.new("2.6.2")
20
+
18
21
  # Check if an older version of bundler is installed
19
22
  $LOAD_PATH.each do |path|
20
23
  next unless path =~ %r{/bundler-0\.(\d+)} && $1.to_i < 9
@@ -34,9 +34,9 @@ require_relative "bundler/build_metadata"
34
34
  # of loaded and required modules.
35
35
  #
36
36
  module Bundler
37
- environment_preserver = EnvironmentPreserver.new(ENV, EnvironmentPreserver::BUNDLER_KEYS)
37
+ environment_preserver = EnvironmentPreserver.from_env
38
38
  ORIGINAL_ENV = environment_preserver.restore
39
- ENV.replace(environment_preserver.backup)
39
+ environment_preserver.replace_with_backup
40
40
  SUDO_MUTEX = Mutex.new
41
41
 
42
42
  autoload :Definition, File.expand_path("bundler/definition", __dir__)
@@ -285,7 +285,13 @@ module Bundler
285
285
 
286
286
  def app_config_path
287
287
  if app_config = ENV["BUNDLE_APP_CONFIG"]
288
- Pathname.new(app_config).expand_path(root)
288
+ app_config_pathname = Pathname.new(app_config)
289
+
290
+ if app_config_pathname.absolute?
291
+ app_config_pathname
292
+ else
293
+ app_config_pathname.expand_path(root)
294
+ end
289
295
  else
290
296
  root.join(".bundle")
291
297
  end
@@ -451,6 +457,10 @@ EOF
451
457
  Bundler.settings[:system_bindir] || Bundler.rubygems.gem_bindir
452
458
  end
453
459
 
460
+ def preferred_gemfile_name
461
+ Bundler.settings[:init_gems_rb] ? "gems.rb" : "Gemfile"
462
+ end
463
+
454
464
  def use_system_gems?
455
465
  configured_bundle_path.use_system_gems?
456
466
  end
@@ -512,7 +522,8 @@ EOF
512
522
  Your user account isn't allowed to install to the system RubyGems.
513
523
  You can cancel this installation and run:
514
524
 
515
- bundle install --path vendor/bundle
525
+ bundle config set --local path 'vendor/bundle'
526
+ bundle install
516
527
 
517
528
  to install the gems into ./vendor/bundle/, or you can enter your password
518
529
  and install the bundled gems to RubyGems using sudo.
@@ -4,8 +4,8 @@ module Bundler
4
4
  # Represents metadata from when the Bundler gem was built.
5
5
  module BuildMetadata
6
6
  # begin ivars
7
- @built_at = "2019-12-16".freeze
8
- @git_commit_sha = "4045ba4bb".freeze
7
+ @built_at = "2020-07-07".freeze
8
+ @git_commit_sha = "1a196432de".freeze
9
9
  @release = false
10
10
  # end ivars
11
11
 
@@ -122,16 +122,19 @@ module Bundler
122
122
  else command = "bundle-#{cli}"
123
123
  end
124
124
 
125
- man_path = File.expand_path("../../../man", __FILE__)
126
- man_pages = Hash[Dir.glob(File.join(man_path, "*")).grep(/.*\.\d*\Z/).collect do |f|
125
+ man_path = File.expand_path("../../../man", __FILE__)
126
+ # man files are located under ruby's mandir with the default gems of bundler
127
+ man_path = RbConfig::CONFIG["mandir"] unless File.directory?(man_path)
128
+ man_pages = Hash[Dir.glob(File.join(man_path, "**", "*")).grep(/.*\.\d*\Z/).collect do |f|
127
129
  [File.basename(f, ".*"), f]
128
130
  end]
129
131
 
130
132
  if man_pages.include?(command)
133
+ man_page = man_pages[command]
131
134
  if Bundler.which("man") && man_path !~ %r{^file:/.+!/META-INF/jruby.home/.+}
132
- Kernel.exec "man #{man_pages[command]}"
135
+ Kernel.exec "man #{man_page}"
133
136
  else
134
- puts File.read("#{man_path}/#{File.basename(man_pages[command])}.txt")
137
+ puts File.read("#{File.dirname(man_page)}/#{File.basename(man_page)}.txt")
135
138
  end
136
139
  elsif command_path = Bundler.which("bundler-#{cli}")
137
140
  Kernel.exec(command_path, "--help")
@@ -247,10 +250,12 @@ module Bundler
247
250
  def install
248
251
  SharedHelpers.major_deprecation(2, "The `--force` option has been renamed to `--redownload`") if ARGV.include?("--force")
249
252
 
250
- %w[clean deployment frozen no-cache no-prune path shebang system without with].each do |option|
253
+ %w[clean deployment frozen no-prune path shebang system without with].each do |option|
251
254
  remembered_flag_deprecation(option)
252
255
  end
253
256
 
257
+ remembered_negative_flag_deprecation("no-deployment")
258
+
254
259
  require_relative "cli/install"
255
260
  Bundler.settings.temporary(:no_install => false) do
256
261
  Install.new(options.dup).run
@@ -568,8 +573,11 @@ module Bundler
568
573
  method_option :git, :type => :boolean, :default => true, :desc => "Initialize a git repo inside your library."
569
574
  method_option :mit, :type => :boolean, :desc => "Generate an MIT license file. Set a default with `bundle config set gem.mit true`."
570
575
  method_option :rubocop, :type => :boolean, :desc => "Add rubocop to the generated Rakefile and gemspec. Set a default with `bundle config set gem.rubocop true`."
571
- method_option :test, :type => :string, :lazy_default => "rspec", :aliases => "-t", :banner => "rspec",
572
- :desc => "Generate a test directory for your library, either rspec or minitest. Set a default with `bundle config set gem.test rspec`."
576
+ method_option :test, :type => :string, :lazy_default => Bundler.settings["gem.test"] || "", :aliases => "-t", :banner => "Use the specified test framework for your library",
577
+ :desc => "Generate a test directory for your library, either rspec, minitest or test-unit. Set a default with `bundle config set gem.test (rspec|minitest|test-unit)`."
578
+ method_option :ci, :type => :string, :lazy_default => Bundler.settings["gem.ci"] || "",
579
+ :desc => "Generate CI configuration, either GitHub Actions, Travis CI, GitLab CI or CircleCI. Set a default with `bundle config set gem.ci (github|travis|gitlab|circle)`"
580
+
573
581
  def gem(name)
574
582
  end
575
583
 
@@ -809,11 +817,23 @@ module Bundler
809
817
  nil
810
818
  end
811
819
 
820
+ def remembered_negative_flag_deprecation(name)
821
+ positive_name = name.gsub(/\Ano-/, "")
822
+ option = current_command.options[positive_name]
823
+ flag_name = "--no-" + option.switch_name.gsub(/\A--/, "")
824
+
825
+ flag_deprecation(positive_name, flag_name, option)
826
+ end
827
+
812
828
  def remembered_flag_deprecation(name)
813
829
  option = current_command.options[name]
814
830
  flag_name = option.switch_name
815
831
 
816
- name_index = ARGV.find {|arg| flag_name == arg }
832
+ flag_deprecation(name, flag_name, option)
833
+ end
834
+
835
+ def flag_deprecation(name, flag_name, option)
836
+ name_index = ARGV.find {|arg| flag_name == arg.split("=")[0] }
817
837
  return unless name_index
818
838
 
819
839
  value = options[name]
@@ -822,7 +842,7 @@ module Bundler
822
842
  Bundler::SharedHelpers.major_deprecation 2,\
823
843
  "The `#{flag_name}` flag is deprecated because it relies on being " \
824
844
  "remembered across bundler invocations, which bundler will no longer " \
825
- "do in future versions. Instead please use `bundle config set #{name} " \
845
+ "do in future versions. Instead please use `bundle config set #{name.tr("-", "_")} " \
826
846
  "'#{value}'`, and stop using this flag"
827
847
  end
828
848
  end
@@ -12,7 +12,7 @@ module Bundler
12
12
  Bundler::SharedHelpers.major_deprecation 2, "bundle console will be replaced " \
13
13
  "by `bin/console` generated by `bundle gem <name>`"
14
14
 
15
- group ? Bundler.require(:default, *group.split.map!(&:to_sym)) : Bundler.require
15
+ group ? Bundler.require(:default, *group.split(" ").map!(&:to_sym)) : Bundler.require
16
16
  ARGV.clear
17
17
 
18
18
  console = get_console(Bundler.settings[:console] || "irb")
@@ -25,12 +25,12 @@ module Bundler
25
25
  SharedHelpers.set_bundle_environment
26
26
  if bin_path = Bundler.which(cmd)
27
27
  if !Bundler.settings[:disable_exec_load] && ruby_shebang?(bin_path)
28
- return with_verbose_rubygems { kernel_load(bin_path, *args) }
28
+ return kernel_load(bin_path, *args)
29
29
  end
30
- with_verbose_rubygems { kernel_exec(bin_path, *args) }
30
+ kernel_exec(bin_path, *args)
31
31
  else
32
32
  # exec using the given command
33
- with_verbose_rubygems { kernel_exec(cmd, *args) }
33
+ kernel_exec(cmd, *args)
34
34
  end
35
35
  end
36
36
 
@@ -89,14 +89,5 @@ module Bundler
89
89
  first_line = File.open(file, "rb") {|f| f.read(possibilities.map(&:size).max) }
90
90
  possibilities.any? {|shebang| first_line.start_with?(shebang) }
91
91
  end
92
-
93
- def with_verbose_rubygems
94
- old_ui = Gem::DefaultUserInteraction.ui
95
- Gem::DefaultUserInteraction.ui = nil
96
-
97
- yield
98
- ensure
99
- Gem::DefaultUserInteraction.ui = old_ui
100
- end
101
92
  end
102
93
  end
@@ -12,6 +12,7 @@ module Bundler
12
12
  TEST_FRAMEWORK_VERSIONS = {
13
13
  "rspec" => "3.0",
14
14
  "minitest" => "5.0",
15
+ "test-unit" => "3.0",
15
16
  }.freeze
16
17
 
17
18
  attr_reader :options, :gem_name, :thor, :name, :target
@@ -62,7 +63,7 @@ module Bundler
62
63
  ensure_safe_gem_name(name, constant_array)
63
64
 
64
65
  templates = {
65
- "Gemfile.tt" => "Gemfile",
66
+ "#{Bundler.preferred_gemfile_name}.tt" => Bundler.preferred_gemfile_name,
66
67
  "lib/newgem.rb.tt" => "lib/#{namespaced_path}.rb",
67
68
  "lib/newgem/version.rb.tt" => "lib/#{namespaced_path}/version.rb",
68
69
  "newgem.gemspec.tt" => "#{name}.gemspec",
@@ -83,8 +84,6 @@ module Bundler
83
84
  config[:test] = test_framework
84
85
  config[:test_framework_version] = TEST_FRAMEWORK_VERSIONS[test_framework]
85
86
 
86
- templates.merge!("travis.yml.tt" => ".travis.yml")
87
-
88
87
  case test_framework
89
88
  when "rspec"
90
89
  templates.merge!(
@@ -92,15 +91,33 @@ module Bundler
92
91
  "spec/spec_helper.rb.tt" => "spec/spec_helper.rb",
93
92
  "spec/newgem_spec.rb.tt" => "spec/#{namespaced_path}_spec.rb"
94
93
  )
94
+ config[:test_task] = :spec
95
95
  when "minitest"
96
96
  templates.merge!(
97
- "test/test_helper.rb.tt" => "test/test_helper.rb",
98
- "test/newgem_test.rb.tt" => "test/#{namespaced_path}_test.rb"
97
+ "test/minitest/test_helper.rb.tt" => "test/test_helper.rb",
98
+ "test/minitest/newgem_test.rb.tt" => "test/#{namespaced_path}_test.rb"
99
+ )
100
+ config[:test_task] = :test
101
+ when "test-unit"
102
+ templates.merge!(
103
+ "test/test-unit/test_helper.rb.tt" => "test/test_helper.rb",
104
+ "test/test-unit/newgem_test.rb.tt" => "test/#{namespaced_path}_test.rb"
99
105
  )
106
+ config[:test_task] = :test
100
107
  end
101
108
  end
102
109
 
103
- config[:test_task] = config[:test] == "minitest" ? :test : :spec
110
+ config[:ci] = ask_and_set_ci
111
+ case config[:ci]
112
+ when "github"
113
+ templates.merge!("github/workflows/main.yml.tt" => ".github/workflows/main.yml")
114
+ when "travis"
115
+ templates.merge!("travis.yml.tt" => ".travis.yml")
116
+ when "gitlab"
117
+ templates.merge!("gitlab-ci.yml.tt" => ".gitlab-ci.yml")
118
+ when "circle"
119
+ templates.merge!("circleci/config.yml.tt" => ".circleci/config.yml")
120
+ end
104
121
 
105
122
  if ask_and_set(:mit, "Do you want to license your code permissively under the MIT license?",
106
123
  "This means that any other developer or company will be legally allowed to use your code " \
@@ -131,6 +148,7 @@ module Bundler
131
148
  "and the Ruby Style Guides (https://github.com/rubocop-hq/ruby-style-guide).")
132
149
  config[:rubocop] = true
133
150
  Bundler.ui.info "RuboCop enabled in config"
151
+ templates.merge!("rubocop.yml.tt" => ".rubocop.yml")
134
152
  end
135
153
 
136
154
  templates.merge!("exe/newgem.tt" => "exe/#{name}") if config[:exe]
@@ -206,11 +224,12 @@ module Bundler
206
224
  def ask_and_set_test_framework
207
225
  test_framework = options[:test] || Bundler.settings["gem.test"]
208
226
 
209
- if test_framework.nil?
227
+ if test_framework.to_s.empty?
210
228
  Bundler.ui.confirm "Do you want to generate tests with your gem?"
211
- result = Bundler.ui.ask "Type 'rspec' or 'minitest' to generate those test files now and " \
212
- "in the future. rspec/minitest/(none):"
213
- if result =~ /rspec|minitest/
229
+ Bundler.ui.info hint_text("test")
230
+
231
+ result = Bundler.ui.ask "Enter a test framework. rspec/minitest/test-unit/(none):"
232
+ if result =~ /rspec|minitest|test-unit/
214
233
  test_framework = result
215
234
  else
216
235
  test_framework = false
@@ -221,9 +240,54 @@ module Bundler
221
240
  Bundler.settings.set_global("gem.test", test_framework)
222
241
  end
223
242
 
243
+ if options[:test] == Bundler.settings["gem.test"]
244
+ Bundler.ui.info "#{options[:test]} is already configured, ignoring --test flag."
245
+ end
246
+
224
247
  test_framework
225
248
  end
226
249
 
250
+ def hint_text(setting)
251
+ if Bundler.settings["gem.#{setting}"] == false
252
+ "Your choice will only be applied to this gem."
253
+ else
254
+ "Future `bundle gem` calls will use your choice. " \
255
+ "This setting can be changed anytime with `bundle config gem.#{setting}`."
256
+ end
257
+ end
258
+
259
+ def ask_and_set_ci
260
+ ci_template = options[:ci] || Bundler.settings["gem.ci"]
261
+
262
+ if ci_template.to_s.empty?
263
+ Bundler.ui.confirm "Do you want to set up continuous integration for your gem? " \
264
+ "Supported services:\n" \
265
+ "* CircleCI: https://circleci.com/\n" \
266
+ "* GitHub Actions: https://github.com/features/actions\n" \
267
+ "* GitLab CI: https://docs.gitlab.com/ee/ci/\n" \
268
+ "* Travis CI: https://travis-ci.org/\n" \
269
+ "\n"
270
+ Bundler.ui.info hint_text("ci")
271
+
272
+ result = Bundler.ui.ask "Enter a CI service. github/travis/gitlab/circle/(none):"
273
+ if result =~ /github|travis|gitlab|circle/
274
+ ci_template = result
275
+ else
276
+ ci_template = false
277
+ end
278
+ end
279
+
280
+ if Bundler.settings["gem.ci"].nil?
281
+ Bundler.settings.set_global("gem.ci", ci_template)
282
+ end
283
+
284
+ if options[:ci] == Bundler.settings["gem.ci"]
285
+ Bundler.ui.info "#{options[:ci]} is already configured, ignoring --ci flag."
286
+ end
287
+
288
+ ci_template
289
+ end
290
+
227
291
  def bundler_dependency_version
228
292
  v = Gem::Version.new(Bundler::VERSION)
229
293
  req = v.segments[0..1]