bundler 1.9.0 → 1.17.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of bundler might be problematic. Click here for more details.

Files changed (328) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +1157 -6
  3. data/README.md +33 -6
  4. data/bundler.gemspec +51 -18
  5. data/exe/bundle +31 -0
  6. data/{bin → exe}/bundle_ruby +10 -6
  7. data/exe/bundler +4 -0
  8. data/lib/bundler.rb +326 -207
  9. data/lib/bundler/build_metadata.rb +53 -0
  10. data/lib/bundler/capistrano.rb +9 -3
  11. data/lib/bundler/cli.rb +522 -141
  12. data/lib/bundler/cli/add.rb +35 -0
  13. data/lib/bundler/cli/binstubs.rb +22 -11
  14. data/lib/bundler/cli/cache.rb +7 -6
  15. data/lib/bundler/cli/check.rb +11 -8
  16. data/lib/bundler/cli/clean.rb +7 -8
  17. data/lib/bundler/cli/common.rb +53 -7
  18. data/lib/bundler/cli/config.rb +84 -49
  19. data/lib/bundler/cli/console.rb +13 -8
  20. data/lib/bundler/cli/doctor.rb +140 -0
  21. data/lib/bundler/cli/exec.rb +77 -16
  22. data/lib/bundler/cli/gem.rb +120 -52
  23. data/lib/bundler/cli/info.rb +50 -0
  24. data/lib/bundler/cli/init.rb +21 -7
  25. data/lib/bundler/cli/inject.rb +37 -10
  26. data/lib/bundler/cli/install.rb +139 -78
  27. data/lib/bundler/cli/issue.rb +40 -0
  28. data/lib/bundler/cli/list.rb +58 -0
  29. data/lib/bundler/cli/lock.rb +63 -0
  30. data/lib/bundler/cli/open.rb +9 -6
  31. data/lib/bundler/cli/outdated.rb +221 -35
  32. data/lib/bundler/cli/package.rb +11 -7
  33. data/lib/bundler/cli/platform.rb +7 -4
  34. data/lib/bundler/cli/plugin.rb +24 -0
  35. data/lib/bundler/cli/pristine.rb +47 -0
  36. data/lib/bundler/cli/remove.rb +18 -0
  37. data/lib/bundler/cli/show.rb +11 -10
  38. data/lib/bundler/cli/update.rb +47 -29
  39. data/lib/bundler/cli/viz.rb +12 -8
  40. data/lib/bundler/compact_index_client.rb +109 -0
  41. data/lib/bundler/compact_index_client/cache.rb +118 -0
  42. data/lib/bundler/compact_index_client/updater.rb +116 -0
  43. data/lib/bundler/compatibility_guard.rb +14 -0
  44. data/lib/bundler/constants.rb +3 -1
  45. data/lib/bundler/current_ruby.rb +47 -137
  46. data/lib/bundler/definition.rb +599 -230
  47. data/lib/bundler/dep_proxy.rb +15 -10
  48. data/lib/bundler/dependency.rb +54 -25
  49. data/lib/bundler/deployment.rb +12 -2
  50. data/lib/bundler/deprecate.rb +33 -4
  51. data/lib/bundler/dsl.rb +383 -99
  52. data/lib/bundler/endpoint_specification.rb +72 -7
  53. data/lib/bundler/env.rb +121 -41
  54. data/lib/bundler/environment_preserver.rb +59 -0
  55. data/lib/bundler/errors.rb +158 -0
  56. data/lib/bundler/feature_flag.rb +74 -0
  57. data/lib/bundler/fetcher.rb +171 -280
  58. data/lib/bundler/fetcher/base.rb +52 -0
  59. data/lib/bundler/fetcher/compact_index.rb +126 -0
  60. data/lib/bundler/fetcher/dependency.rb +82 -0
  61. data/lib/bundler/fetcher/downloader.rb +84 -0
  62. data/lib/bundler/fetcher/index.rb +52 -0
  63. data/lib/bundler/friendly_errors.rb +113 -58
  64. data/lib/bundler/gem_helper.rb +73 -46
  65. data/lib/bundler/gem_helpers.rb +85 -9
  66. data/lib/bundler/gem_remote_fetcher.rb +43 -0
  67. data/lib/bundler/gem_tasks.rb +6 -1
  68. data/lib/bundler/gem_version_promoter.rb +190 -0
  69. data/lib/bundler/gemdeps.rb +29 -0
  70. data/lib/bundler/graph.rb +32 -49
  71. data/lib/bundler/index.rb +79 -67
  72. data/lib/bundler/injector.rb +219 -30
  73. data/lib/bundler/inline.rb +74 -0
  74. data/lib/bundler/installer.rb +191 -206
  75. data/lib/bundler/installer/gem_installer.rb +85 -0
  76. data/lib/bundler/installer/parallel_installer.rb +233 -0
  77. data/lib/bundler/installer/standalone.rb +53 -0
  78. data/lib/bundler/lazy_specification.rb +53 -13
  79. data/lib/bundler/lockfile_generator.rb +95 -0
  80. data/lib/bundler/lockfile_parser.rb +157 -62
  81. data/lib/bundler/match_platform.rb +15 -4
  82. data/lib/bundler/mirror.rb +223 -0
  83. data/lib/bundler/plugin.rb +292 -0
  84. data/lib/bundler/plugin/api.rb +81 -0
  85. data/lib/bundler/plugin/api/source.rb +306 -0
  86. data/lib/bundler/plugin/dsl.rb +53 -0
  87. data/lib/bundler/plugin/events.rb +61 -0
  88. data/lib/bundler/plugin/index.rb +162 -0
  89. data/lib/bundler/plugin/installer.rb +96 -0
  90. data/lib/bundler/plugin/installer/git.rb +38 -0
  91. data/lib/bundler/plugin/installer/rubygems.rb +27 -0
  92. data/lib/bundler/plugin/source_list.rb +27 -0
  93. data/lib/bundler/process_lock.rb +24 -0
  94. data/lib/bundler/psyched_yaml.rb +17 -6
  95. data/lib/bundler/remote_specification.rb +68 -11
  96. data/lib/bundler/resolver.rb +263 -229
  97. data/lib/bundler/resolver/spec_group.rb +106 -0
  98. data/lib/bundler/retry.rb +25 -19
  99. data/lib/bundler/ruby_dsl.rb +9 -2
  100. data/lib/bundler/ruby_version.rb +101 -66
  101. data/lib/bundler/rubygems_ext.rb +77 -37
  102. data/lib/bundler/rubygems_gem_installer.rb +106 -0
  103. data/lib/bundler/rubygems_integration.rb +450 -163
  104. data/lib/bundler/runtime.rb +133 -103
  105. data/lib/bundler/settings.rb +344 -83
  106. data/lib/bundler/settings/validator.rb +102 -0
  107. data/lib/bundler/setup.rb +7 -3
  108. data/lib/bundler/shared_helpers.rb +284 -54
  109. data/lib/bundler/similarity_detector.rb +21 -21
  110. data/lib/bundler/source.rb +68 -15
  111. data/lib/bundler/source/gemspec.rb +18 -0
  112. data/lib/bundler/source/git.rb +90 -55
  113. data/lib/bundler/source/git/git_proxy.rb +135 -35
  114. data/lib/bundler/source/metadata.rb +62 -0
  115. data/lib/bundler/source/path.rb +84 -61
  116. data/lib/bundler/source/path/installer.rb +53 -17
  117. data/lib/bundler/source/rubygems.rb +282 -122
  118. data/lib/bundler/source/rubygems/remote.rb +69 -0
  119. data/lib/bundler/source_list.rb +107 -22
  120. data/lib/bundler/spec_set.rb +83 -45
  121. data/lib/bundler/ssl_certs/certificate_manager.rb +8 -7
  122. data/lib/bundler/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +21 -0
  123. data/lib/bundler/ssl_certs/{DigiCertHighAssuranceEVRootCA.pem → rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem} +0 -0
  124. data/lib/bundler/ssl_certs/{AddTrustExternalCARoot-2048.pem → rubygems.org/AddTrustExternalCARoot.pem} +0 -0
  125. data/lib/bundler/stub_specification.rb +108 -0
  126. data/lib/bundler/templates/.document +1 -0
  127. data/lib/bundler/templates/Executable +19 -6
  128. data/lib/bundler/templates/Executable.bundler +105 -0
  129. data/lib/bundler/templates/Executable.standalone +6 -4
  130. data/lib/bundler/templates/Gemfile +4 -1
  131. data/lib/bundler/templates/gems.rb +8 -0
  132. data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +68 -7
  133. data/lib/bundler/templates/newgem/Gemfile.tt +4 -2
  134. data/lib/bundler/templates/newgem/LICENSE.txt.tt +1 -1
  135. data/lib/bundler/templates/newgem/README.md.tt +19 -11
  136. data/lib/bundler/templates/newgem/Rakefile.tt +10 -6
  137. data/lib/bundler/templates/newgem/bin/console.tt +1 -1
  138. data/lib/bundler/templates/newgem/bin/setup.tt +2 -1
  139. data/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +4 -4
  140. data/lib/bundler/templates/newgem/ext/newgem/newgem.h.tt +3 -3
  141. data/lib/bundler/templates/newgem/gitignore.tt +5 -1
  142. data/lib/bundler/templates/newgem/lib/newgem.rb.tt +7 -6
  143. data/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +4 -4
  144. data/lib/bundler/templates/newgem/newgem.gemspec.tt +31 -15
  145. data/lib/bundler/templates/newgem/rspec.tt +1 -0
  146. data/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +3 -5
  147. data/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +14 -2
  148. data/lib/bundler/templates/newgem/test/{test_newgem.rb.tt → newgem_test.rb.tt} +2 -2
  149. data/lib/bundler/templates/newgem/test/test_helper.rb.tt +4 -0
  150. data/lib/bundler/templates/newgem/travis.yml.tt +7 -0
  151. data/lib/bundler/ui.rb +5 -3
  152. data/lib/bundler/ui/rg_proxy.rb +5 -7
  153. data/lib/bundler/ui/shell.rb +69 -18
  154. data/lib/bundler/ui/silent.rb +26 -1
  155. data/lib/bundler/uri_credentials_filter.rb +37 -0
  156. data/lib/bundler/vendor/fileutils/lib/fileutils.rb +1638 -0
  157. data/lib/bundler/vendor/molinillo/lib/molinillo.rb +12 -0
  158. data/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +26 -0
  159. data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +57 -0
  160. data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +81 -0
  161. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +223 -0
  162. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +36 -0
  163. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +66 -0
  164. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +62 -0
  165. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +63 -0
  166. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +61 -0
  167. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +126 -0
  168. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +46 -0
  169. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +36 -0
  170. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +136 -0
  171. data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +143 -0
  172. data/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +6 -0
  173. data/lib/bundler/vendor/{Molinillo-0.2.1 → molinillo}/lib/molinillo/modules/specification_provider.rb +11 -0
  174. data/lib/bundler/vendor/{Molinillo-0.2.1 → molinillo}/lib/molinillo/modules/ui.rb +6 -2
  175. data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +837 -0
  176. data/lib/bundler/vendor/{Molinillo-0.2.1 → molinillo}/lib/molinillo/resolver.rb +6 -3
  177. data/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +58 -0
  178. data/lib/bundler/vendor/{net → net-http-persistent/lib/net}/http/faster.rb +1 -0
  179. data/lib/bundler/vendor/{net → net-http-persistent/lib/net}/http/persistent.rb +27 -24
  180. data/lib/bundler/vendor/{net → net-http-persistent/lib/net}/http/persistent/ssl_reuse.rb +2 -1
  181. data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor.rb +47 -22
  182. data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/actions.rb +31 -29
  183. data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/actions/create_file.rb +3 -2
  184. data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/actions/create_link.rb +3 -2
  185. data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/actions/directory.rb +3 -3
  186. data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/actions/empty_directory.rb +16 -8
  187. data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/actions/file_manipulation.rb +66 -18
  188. data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/actions/inject_into_file.rb +18 -16
  189. data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/base.rb +67 -44
  190. data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/command.rb +13 -11
  191. data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/core_ext/hash_with_indifferent_access.rb +21 -1
  192. data/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb +12 -0
  193. data/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb +129 -0
  194. data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/error.rb +3 -3
  195. data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/group.rb +14 -14
  196. data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/invocation.rb +4 -5
  197. data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/line_editor.rb +2 -2
  198. data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/line_editor/basic.rb +2 -0
  199. data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/line_editor/readline.rb +0 -0
  200. data/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -0
  201. data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/parser/argument.rb +4 -7
  202. data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/parser/arguments.rb +16 -16
  203. data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/parser/option.rb +42 -21
  204. data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/parser/options.rb +13 -10
  205. data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/rake_compat.rb +1 -1
  206. data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/runner.rb +35 -33
  207. data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/shell.rb +4 -4
  208. data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/shell/basic.rb +49 -33
  209. data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/shell/color.rb +2 -2
  210. data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/shell/html.rb +5 -5
  211. data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/util.rb +8 -7
  212. data/lib/bundler/vendor/{thor-0.19.1 → thor}/lib/thor/version.rb +1 -1
  213. data/lib/bundler/vendored_fileutils.rb +9 -0
  214. data/lib/bundler/vendored_molinillo.rb +4 -5
  215. data/lib/bundler/vendored_persistent.rb +45 -4
  216. data/lib/bundler/vendored_thor.rb +8 -5
  217. data/lib/bundler/version.rb +23 -1
  218. data/lib/bundler/version_ranges.rb +76 -0
  219. data/lib/bundler/vlad.rb +8 -2
  220. data/lib/bundler/worker.rb +39 -6
  221. data/lib/bundler/yaml_serializer.rb +90 -0
  222. data/man/bundle-add.1 +58 -0
  223. data/man/bundle-add.1.txt +52 -0
  224. data/man/bundle-add.ronn +40 -0
  225. data/man/bundle-binstubs.1 +40 -0
  226. data/man/bundle-binstubs.1.txt +48 -0
  227. data/man/bundle-binstubs.ronn +43 -0
  228. data/man/bundle-check.1 +31 -0
  229. data/man/bundle-check.1.txt +33 -0
  230. data/man/bundle-check.ronn +26 -0
  231. data/man/bundle-clean.1 +24 -0
  232. data/man/bundle-clean.1.txt +26 -0
  233. data/man/bundle-clean.ronn +18 -0
  234. data/man/bundle-config.1 +497 -0
  235. data/man/bundle-config.1.txt +529 -0
  236. data/man/bundle-config.ronn +256 -31
  237. data/man/bundle-doctor.1 +44 -0
  238. data/man/bundle-doctor.1.txt +44 -0
  239. data/man/bundle-doctor.ronn +33 -0
  240. data/man/bundle-exec.1 +165 -0
  241. data/man/bundle-exec.1.txt +178 -0
  242. data/man/bundle-exec.ronn +19 -3
  243. data/man/bundle-gem.1 +80 -0
  244. data/man/bundle-gem.1.txt +91 -0
  245. data/man/bundle-gem.ronn +78 -0
  246. data/man/bundle-info.1 +20 -0
  247. data/man/bundle-info.1.txt +21 -0
  248. data/man/bundle-info.ronn +17 -0
  249. data/man/bundle-init.1 +25 -0
  250. data/man/bundle-init.1.txt +34 -0
  251. data/man/bundle-init.ronn +29 -0
  252. data/man/bundle-inject.1 +33 -0
  253. data/man/bundle-inject.1.txt +32 -0
  254. data/man/bundle-inject.ronn +22 -0
  255. data/man/bundle-install.1 +308 -0
  256. data/man/bundle-install.1.txt +396 -0
  257. data/man/bundle-install.ronn +64 -67
  258. data/man/bundle-list.1 +50 -0
  259. data/man/bundle-list.1.txt +43 -0
  260. data/man/bundle-list.ronn +33 -0
  261. data/man/bundle-lock.1 +84 -0
  262. data/man/bundle-lock.1.txt +93 -0
  263. data/man/bundle-lock.ronn +94 -0
  264. data/man/bundle-open.1 +32 -0
  265. data/man/bundle-open.1.txt +29 -0
  266. data/man/bundle-open.ronn +19 -0
  267. data/man/bundle-outdated.1 +155 -0
  268. data/man/bundle-outdated.1.txt +131 -0
  269. data/man/bundle-outdated.ronn +111 -0
  270. data/man/bundle-package.1 +55 -0
  271. data/man/bundle-package.1.txt +79 -0
  272. data/man/bundle-package.ronn +14 -8
  273. data/man/bundle-platform.1 +61 -0
  274. data/man/bundle-platform.1.txt +57 -0
  275. data/man/bundle-platform.ronn +1 -1
  276. data/man/bundle-pristine.1 +34 -0
  277. data/man/bundle-pristine.1.txt +44 -0
  278. data/man/bundle-pristine.ronn +34 -0
  279. data/man/bundle-remove.1 +31 -0
  280. data/man/bundle-remove.1.txt +34 -0
  281. data/man/bundle-remove.ronn +23 -0
  282. data/man/bundle-show.1 +23 -0
  283. data/man/bundle-show.1.txt +27 -0
  284. data/man/bundle-show.ronn +21 -0
  285. data/man/bundle-update.1 +394 -0
  286. data/man/bundle-update.1.txt +391 -0
  287. data/man/bundle-update.ronn +180 -18
  288. data/man/bundle-viz.1 +39 -0
  289. data/man/bundle-viz.1.txt +39 -0
  290. data/man/bundle-viz.ronn +30 -0
  291. data/man/bundle.1 +136 -0
  292. data/man/bundle.1.txt +116 -0
  293. data/man/bundle.ronn +46 -33
  294. data/man/gemfile.5 +689 -0
  295. data/man/gemfile.5.ronn +127 -79
  296. data/man/gemfile.5.txt +653 -0
  297. data/man/index.txt +25 -7
  298. metadata +242 -95
  299. data/.gitignore +0 -16
  300. data/.rspec +0 -3
  301. data/.travis.yml +0 -110
  302. data/CODE_OF_CONDUCT.md +0 -40
  303. data/CONTRIBUTING.md +0 -32
  304. data/DEVELOPMENT.md +0 -119
  305. data/ISSUES.md +0 -96
  306. data/Rakefile +0 -302
  307. data/UPGRADING.md +0 -103
  308. data/bin/bundle +0 -21
  309. data/bin/bundler +0 -21
  310. data/lib/bundler/anonymizable_uri.rb +0 -32
  311. data/lib/bundler/environment.rb +0 -42
  312. data/lib/bundler/gem_installer.rb +0 -9
  313. data/lib/bundler/gem_path_manipulation.rb +0 -8
  314. data/lib/bundler/ssl_certs/AddTrustExternalCARoot.pem +0 -32
  315. data/lib/bundler/ssl_certs/Class3PublicPrimaryCertificationAuthority.pem +0 -14
  316. data/lib/bundler/ssl_certs/EntrustnetSecureServerCertificationAuthority.pem +0 -28
  317. data/lib/bundler/ssl_certs/GeoTrustGlobalCA.pem +0 -20
  318. data/lib/bundler/templates/newgem/.travis.yml.tt +0 -3
  319. data/lib/bundler/templates/newgem/test/minitest_helper.rb.tt +0 -4
  320. data/lib/bundler/vendor/Molinillo-0.2.1/lib/molinillo.rb +0 -5
  321. data/lib/bundler/vendor/Molinillo-0.2.1/lib/molinillo/dependency_graph.rb +0 -266
  322. data/lib/bundler/vendor/Molinillo-0.2.1/lib/molinillo/errors.rb +0 -69
  323. data/lib/bundler/vendor/Molinillo-0.2.1/lib/molinillo/gem_metadata.rb +0 -3
  324. data/lib/bundler/vendor/Molinillo-0.2.1/lib/molinillo/resolution.rb +0 -412
  325. data/lib/bundler/vendor/Molinillo-0.2.1/lib/molinillo/state.rb +0 -43
  326. data/lib/bundler/vendor/thor-0.19.1/lib/thor/core_ext/io_binary_read.rb +0 -10
  327. data/lib/bundler/vendor/thor-0.19.1/lib/thor/core_ext/ordered_hash.rb +0 -98
  328. data/lib/bundler/vendor/thor-0.19.1/lib/thor/parser.rb +0 -4
@@ -1,13 +1,15 @@
1
- require 'molinillo/dependency_graph'
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/vendor/molinillo/lib/molinillo/dependency_graph'
2
4
 
3
5
  module Bundler::Molinillo
4
6
  # This class encapsulates a dependency resolver.
5
7
  # The resolver is responsible for determining which set of dependencies to
6
- # activate, with feedback from the the {#specification_provider}
8
+ # activate, with feedback from the {#specification_provider}
7
9
  #
8
10
  #
9
11
  class Resolver
10
- require 'molinillo/resolution'
12
+ require 'bundler/vendor/molinillo/lib/molinillo/resolution'
11
13
 
12
14
  # @return [SpecificationProvider] the specification provider used
13
15
  # in the resolution process
@@ -17,6 +19,7 @@ module Bundler::Molinillo
17
19
  # during the resolution process
18
20
  attr_reader :resolver_ui
19
21
 
22
+ # Initializes a new resolver.
20
23
  # @param [SpecificationProvider] specification_provider
21
24
  # see {#specification_provider}
22
25
  # @param [UI] resolver_ui
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bundler::Molinillo
4
+ # A state that a {Resolution} can be in
5
+ # @attr [String] name the name of the current requirement
6
+ # @attr [Array<Object>] requirements currently unsatisfied requirements
7
+ # @attr [DependencyGraph] activated the graph of activated dependencies
8
+ # @attr [Object] requirement the current requirement
9
+ # @attr [Object] possibilities the possibilities to satisfy the current requirement
10
+ # @attr [Integer] depth the depth of the resolution
11
+ # @attr [Hash] conflicts unresolved conflicts, indexed by dependency name
12
+ # @attr [Array<UnwindDetails>] unused_unwind_options unwinds for previous conflicts that weren't explored
13
+ ResolutionState = Struct.new(
14
+ :name,
15
+ :requirements,
16
+ :activated,
17
+ :requirement,
18
+ :possibilities,
19
+ :depth,
20
+ :conflicts,
21
+ :unused_unwind_options
22
+ )
23
+
24
+ class ResolutionState
25
+ # Returns an empty resolution state
26
+ # @return [ResolutionState] an empty state
27
+ def self.empty
28
+ new(nil, [], DependencyGraph.new, nil, nil, 0, {}, [])
29
+ end
30
+ end
31
+
32
+ # A state that encapsulates a set of {#requirements} with an {Array} of
33
+ # possibilities
34
+ class DependencyState < ResolutionState
35
+ # Removes a possibility from `self`
36
+ # @return [PossibilityState] a state with a single possibility,
37
+ # the possibility that was removed from `self`
38
+ def pop_possibility_state
39
+ PossibilityState.new(
40
+ name,
41
+ requirements.dup,
42
+ activated,
43
+ requirement,
44
+ [possibilities.pop],
45
+ depth + 1,
46
+ conflicts.dup,
47
+ unused_unwind_options.dup
48
+ ).tap do |state|
49
+ state.activated.tag(state)
50
+ end
51
+ end
52
+ end
53
+
54
+ # A state that encapsulates a single possibility to fulfill the given
55
+ # {#requirement}
56
+ class PossibilityState < ResolutionState
57
+ end
58
+ end
@@ -24,3 +24,4 @@ class Net::BufferedIO #:nodoc:
24
24
  end
25
25
  end
26
26
  end if RUBY_VERSION < '1.9'
27
+
@@ -4,7 +4,7 @@ begin
4
4
  rescue LoadError
5
5
  # net/https or openssl
6
6
  end if RUBY_VERSION < '1.9' # but only for 1.8
7
- require 'net/http/faster'
7
+ require 'bundler/vendor/net-http-persistent/lib/net/http/faster'
8
8
  require 'uri'
9
9
  require 'cgi' # for escaping
10
10
 
@@ -18,27 +18,27 @@ autoload :OpenSSL, 'openssl'
18
18
  ##
19
19
  # Persistent connections for Net::HTTP
20
20
  #
21
- # Net::HTTP::Persistent maintains persistent connections across all the
21
+ # Bundler::Persistent::Net::HTTP::Persistent maintains persistent connections across all the
22
22
  # servers you wish to talk to. For each host:port you communicate with a
23
23
  # single persistent connection is created.
24
24
  #
25
- # Multiple Net::HTTP::Persistent objects will share the same set of
25
+ # Multiple Bundler::Persistent::Net::HTTP::Persistent objects will share the same set of
26
26
  # connections.
27
27
  #
28
28
  # For each thread you start a new connection will be created. A
29
- # Net::HTTP::Persistent connection will not be shared across threads.
29
+ # Bundler::Persistent::Net::HTTP::Persistent connection will not be shared across threads.
30
30
  #
31
31
  # You can shut down the HTTP connections when done by calling #shutdown. You
32
- # should name your Net::HTTP::Persistent object if you intend to call this
32
+ # should name your Bundler::Persistent::Net::HTTP::Persistent object if you intend to call this
33
33
  # method.
34
34
  #
35
35
  # Example:
36
36
  #
37
- # require 'net/http/persistent'
37
+ # require 'bundler/vendor/net-http-persistent/lib/net/http/persistent'
38
38
  #
39
39
  # uri = URI 'http://example.com/awesome/web/service'
40
40
  #
41
- # http = Net::HTTP::Persistent.new 'my_app_name'
41
+ # http = Bundler::Persistent::Net::HTTP::Persistent.new 'my_app_name'
42
42
  #
43
43
  # # perform a GET
44
44
  # response = http.request uri
@@ -149,19 +149,19 @@ autoload :OpenSSL, 'openssl'
149
149
  #
150
150
  # The recommended way to handle non-idempotent requests is the following:
151
151
  #
152
- # require 'net/http/persistent'
152
+ # require 'bundler/vendor/net-http-persistent/lib/net/http/persistent'
153
153
  #
154
154
  # uri = URI 'http://example.com/awesome/web/service'
155
155
  # post_uri = uri + 'create'
156
156
  #
157
- # http = Net::HTTP::Persistent.new 'my_app_name'
157
+ # http = Bundler::Persistent::Net::HTTP::Persistent.new 'my_app_name'
158
158
  #
159
159
  # post = Net::HTTP::Post.new post_uri.path
160
160
  # # ... fill in POST request
161
161
  #
162
162
  # begin
163
163
  # response = http.request post_uri, post
164
- # rescue Net::HTTP::Persistent::Error
164
+ # rescue Bundler::Persistent::Net::HTTP::Persistent::Error
165
165
  #
166
166
  # # POST failed, make a new request to verify the server did not process
167
167
  # # the request
@@ -178,7 +178,7 @@ autoload :OpenSSL, 'openssl'
178
178
  #
179
179
  # === Connection Termination
180
180
  #
181
- # If you are done using the Net::HTTP::Persistent instance you may shut down
181
+ # If you are done using the Bundler::Persistent::Net::HTTP::Persistent instance you may shut down
182
182
  # all the connections in the current thread with #shutdown. This is not
183
183
  # recommended for normal use, it should only be used when it will be several
184
184
  # minutes before you make another HTTP request.
@@ -188,7 +188,7 @@ autoload :OpenSSL, 'openssl'
188
188
  # Ruby will automatically garbage collect and shutdown your HTTP connections
189
189
  # when the thread terminates.
190
190
 
191
- class Net::HTTP::Persistent
191
+ class Bundler::Persistent::Net::HTTP::Persistent
192
192
 
193
193
  ##
194
194
  # The beginning of Time
@@ -201,9 +201,9 @@ class Net::HTTP::Persistent
201
201
  HAVE_OPENSSL = defined? OpenSSL::SSL # :nodoc:
202
202
 
203
203
  ##
204
- # The version of Net::HTTP::Persistent you are using
204
+ # The version of Bundler::Persistent::Net::HTTP::Persistent you are using
205
205
 
206
- VERSION = '2.9.3'
206
+ VERSION = '2.9.4'
207
207
 
208
208
  ##
209
209
  # Exceptions rescued for automatic retry on ruby 2.0.0. This overlaps with
@@ -221,7 +221,7 @@ class Net::HTTP::Persistent
221
221
  ].compact
222
222
 
223
223
  ##
224
- # Error class for errors raised by Net::HTTP::Persistent. Various
224
+ # Error class for errors raised by Bundler::Persistent::Net::HTTP::Persistent. Various
225
225
  # SystemCallErrors are re-raised with a human-readable message under this
226
226
  # class.
227
227
 
@@ -241,7 +241,7 @@ class Net::HTTP::Persistent
241
241
  # NOTE: This may not work on ruby > 1.9.
242
242
 
243
243
  def self.detect_idle_timeout uri, max = 10
244
- uri = URI uri unless uri.is_a?(URI::Generic)
244
+ uri = URI uri unless URI::Generic === uri
245
245
  uri += '/'
246
246
 
247
247
  req = Net::HTTP::Head.new uri.request_uri
@@ -257,7 +257,7 @@ class Net::HTTP::Persistent
257
257
 
258
258
  $stderr.puts "HEAD #{uri} => #{response.code}" if $DEBUG
259
259
 
260
- unless response.is_a?(Net::HTTPOK) then
260
+ unless Net::HTTPOK === response then
261
261
  raise Error, "bad response code #{response.code} detecting idle timeout"
262
262
  end
263
263
 
@@ -463,7 +463,7 @@ class Net::HTTP::Persistent
463
463
  attr_accessor :retry_change_requests
464
464
 
465
465
  ##
466
- # Creates a new Net::HTTP::Persistent.
466
+ # Creates a new Bundler::Persistent::Net::HTTP::Persistent.
467
467
  #
468
468
  # Set +name+ to keep your connections apart from everybody else's. Not
469
469
  # required currently, but highly recommended. Your library name should be
@@ -594,7 +594,7 @@ class Net::HTTP::Persistent
594
594
  use_ssl = uri.scheme.downcase == 'https'
595
595
 
596
596
  if use_ssl then
597
- raise Net::HTTP::Persistent::Error, 'OpenSSL is not available' unless
597
+ raise Bundler::Persistent::Net::HTTP::Persistent::Error, 'OpenSSL is not available' unless
598
598
  HAVE_OPENSSL
599
599
 
600
600
  ssl_generation = @ssl_generation
@@ -616,6 +616,8 @@ class Net::HTTP::Persistent
616
616
  if @proxy_uri and not proxy_bypass? uri.host, uri.port then
617
617
  connection_id << @proxy_connection_id
618
618
  net_http_args.concat @proxy_args
619
+ else
620
+ net_http_args.concat [nil, nil, nil, nil]
619
621
  end
620
622
 
621
623
  connection = connections[connection_id]
@@ -728,7 +730,7 @@ class Net::HTTP::Persistent
728
730
  } or not @reuse_ssl_sessions then
729
731
  Net::HTTP
730
732
  else
731
- Net::HTTP::Persistent::SSLReuse
733
+ Bundler::Persistent::Net::HTTP::Persistent::SSLReuse
732
734
  end
733
735
  end
734
736
 
@@ -812,7 +814,7 @@ class Net::HTTP::Persistent
812
814
 
813
815
  ##
814
816
  # Pipelines +requests+ to the HTTP server at +uri+ yielding responses if a
815
- # block is given. Returns all responses recieved.
817
+ # block is given. Returns all responses received.
816
818
  #
817
819
  # See
818
820
  # Net::HTTP::Pipeline[http://docs.seattlerb.org/net-http-pipeline/Net/HTTP/Pipeline.html]
@@ -1065,7 +1067,7 @@ class Net::HTTP::Persistent
1065
1067
  # Returns the request.
1066
1068
 
1067
1069
  def request_setup req_or_uri # :nodoc:
1068
- req = if req_or_uri.is_a?(URI) then
1070
+ req = if URI === req_or_uri then
1069
1071
  Net::HTTP::Get.new req_or_uri.request_uri
1070
1072
  else
1071
1073
  req_or_uri
@@ -1092,7 +1094,7 @@ class Net::HTTP::Persistent
1092
1094
  #
1093
1095
  # Uses the current thread by default.
1094
1096
  #
1095
- # If you've used Net::HTTP::Persistent across multiple threads you should
1097
+ # If you've used Bundler::Persistent::Net::HTTP::Persistent across multiple threads you should
1096
1098
  # call this in each thread when you're done making HTTP requests.
1097
1099
  #
1098
1100
  # *NOTE*: Calling shutdown for another thread can be dangerous!
@@ -1227,4 +1229,5 @@ application:
1227
1229
 
1228
1230
  end
1229
1231
 
1230
- require 'net/http/persistent/ssl_reuse'
1232
+ require 'bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse'
1233
+
@@ -7,7 +7,7 @@
7
7
  # This class is an implementation detail and is subject to change or removal
8
8
  # at any time.
9
9
 
10
- class Net::HTTP::Persistent::SSLReuse < Net::HTTP
10
+ class Bundler::Persistent::Net::HTTP::Persistent::SSLReuse < Net::HTTP
11
11
 
12
12
  @is_proxy_class = false
13
13
  @proxy_addr = nil
@@ -126,3 +126,4 @@ class Net::HTTP::Persistent::SSLReuse < Net::HTTP
126
126
  private :connect
127
127
 
128
128
  end
129
+
@@ -1,7 +1,7 @@
1
1
  require "set"
2
- require "thor/base"
2
+ require "bundler/vendor/thor/lib/thor/base"
3
3
 
4
- class Bundler::Thor # rubocop:disable ClassLength
4
+ class Bundler::Thor
5
5
  class << self
6
6
  # Allows for custom "Command" package naming.
7
7
  #
@@ -9,7 +9,7 @@ class Bundler::Thor # rubocop:disable ClassLength
9
9
  # name<String>
10
10
  # options<Hash>
11
11
  #
12
- def package_name(name, options = {})
12
+ def package_name(name, _ = {})
13
13
  @package_name = name.nil? || name == "" ? nil : name
14
14
  end
15
15
 
@@ -57,7 +57,9 @@ class Bundler::Thor # rubocop:disable ClassLength
57
57
  command.usage = usage if usage
58
58
  command.description = description if description
59
59
  else
60
- @usage, @desc, @hide = usage, description, options[:hide] || false
60
+ @usage = usage
61
+ @desc = description
62
+ @hide = options[:hide] || false
61
63
  end
62
64
  end
63
65
 
@@ -170,7 +172,7 @@ class Bundler::Thor # rubocop:disable ClassLength
170
172
  shell.say "Usage:"
171
173
  shell.say " #{banner(command)}"
172
174
  shell.say
173
- class_options_help(shell, nil => command.options.map { |_, o| o })
175
+ class_options_help(shell, nil => command.options.values)
174
176
  if command.long_description
175
177
  shell.say "Description:"
176
178
  shell.print_wrapped(command.long_description, :indent => 2)
@@ -231,8 +233,12 @@ class Bundler::Thor # rubocop:disable ClassLength
231
233
 
232
234
  define_method(subcommand) do |*args|
233
235
  args, opts = Bundler::Thor::Arguments.split(args)
234
- args.unshift("help") if opts.include? "--help" or opts.include? "-h"
235
- invoke subcommand_class, args, opts, :invoked_via_subcommand => true, :class_options => options
236
+ invoke_args = [args, opts, {:invoked_via_subcommand => true, :class_options => options}]
237
+ invoke_args.unshift "help" if opts.delete("--help") || opts.delete("-h")
238
+ invoke subcommand_class, *invoke_args
239
+ end
240
+ subcommand_class.commands.each do |_meth, command|
241
+ command.ancestor_name = subcommand
236
242
  end
237
243
  end
238
244
  alias_method :subtask, :subcommand
@@ -319,11 +325,31 @@ class Bundler::Thor # rubocop:disable ClassLength
319
325
  command && stop_on_unknown_option.include?(command.name.to_sym)
320
326
  end
321
327
 
328
+ # Disable the check for required options for the given commands.
329
+ # This is useful if you have a command that does not need the required options
330
+ # to work, like help.
331
+ #
332
+ # ==== Parameters
333
+ # Symbol ...:: A list of commands that should be affected.
334
+ def disable_required_check!(*command_names)
335
+ disable_required_check.merge(command_names)
336
+ end
337
+
338
+ def disable_required_check?(command) #:nodoc:
339
+ command && disable_required_check.include?(command.name.to_sym)
340
+ end
341
+
322
342
  protected
343
+
323
344
  def stop_on_unknown_option #:nodoc:
324
345
  @stop_on_unknown_option ||= Set.new
325
346
  end
326
347
 
348
+ # help command has the required check disabled by default.
349
+ def disable_required_check #:nodoc:
350
+ @disable_required_check ||= Set.new([:help])
351
+ end
352
+
327
353
  # The method responsible for dispatching given the args.
328
354
  def dispatch(meth, given_args, given_opts, config) #:nodoc: # rubocop:disable MethodLength
329
355
  meth ||= retrieve_command_name(given_args)
@@ -345,12 +371,14 @@ class Bundler::Thor # rubocop:disable ClassLength
345
371
  opts.clear
346
372
  end
347
373
  else
348
- args, opts = given_args, nil
374
+ args = given_args
375
+ opts = nil
349
376
  command = dynamic_command_class.new(meth)
350
377
  end
351
378
 
352
379
  opts = given_opts || opts || []
353
- config.merge!(:current_command => command, :command_options => command.options)
380
+ config[:current_command] = command
381
+ config[:command_options] = command.options
354
382
 
355
383
  instance = new(args, opts, config)
356
384
  yield instance if block_given?
@@ -380,6 +408,7 @@ class Bundler::Thor # rubocop:disable ClassLength
380
408
  @usage ||= nil
381
409
  @desc ||= nil
382
410
  @long_desc ||= nil
411
+ @hide ||= nil
383
412
 
384
413
  if @usage && @desc
385
414
  base_class = @hide ? Bundler::Thor::HiddenCommand : Bundler::Thor::Command
@@ -389,8 +418,8 @@ class Bundler::Thor # rubocop:disable ClassLength
389
418
  elsif all_commands[meth] || meth == "method_missing"
390
419
  true
391
420
  else
392
- puts "[WARNING] Attempted to create command #{meth.inspect} without usage or description. " <<
393
- "Call desc if you want this method to be available as command or declare it inside a " <<
421
+ puts "[WARNING] Attempted to create command #{meth.inspect} without usage or description. " \
422
+ "Call desc if you want this method to be available as command or declare it inside a " \
394
423
  "no_commands{} block. Invoked from #{caller[1].inspect}."
395
424
  false
396
425
  end
@@ -405,11 +434,7 @@ class Bundler::Thor # rubocop:disable ClassLength
405
434
  # Retrieve the command name from given args.
406
435
  def retrieve_command_name(args) #:nodoc:
407
436
  meth = args.first.to_s unless args.empty?
408
- if meth && (map[meth] || meth !~ /^\-/)
409
- args.shift
410
- else
411
- nil
412
- end
437
+ args.shift if meth && (map[meth] || meth !~ /^\-/)
413
438
  end
414
439
  alias_method :retrieve_task_name, :retrieve_command_name
415
440
 
@@ -421,20 +446,20 @@ class Bundler::Thor # rubocop:disable ClassLength
421
446
  # +normalize_command_name+ also converts names like +animal-prison+
422
447
  # into +animal_prison+.
423
448
  def normalize_command_name(meth) #:nodoc:
424
- return default_command.to_s.gsub("-", "_") unless meth
449
+ return default_command.to_s.tr("-", "_") unless meth
425
450
 
426
451
  possibilities = find_command_possibilities(meth)
427
- if possibilities.size > 1
428
- fail AmbiguousTaskError, "Ambiguous command #{meth} matches [#{possibilities.join(', ')}]"
429
- elsif possibilities.size < 1
430
- meth = meth || default_command
452
+ raise AmbiguousTaskError, "Ambiguous command #{meth} matches [#{possibilities.join(', ')}]" if possibilities.size > 1
453
+
454
+ if possibilities.empty?
455
+ meth ||= default_command
431
456
  elsif map[meth]
432
457
  meth = map[meth]
433
458
  else
434
459
  meth = possibilities.first
435
460
  end
436
461
 
437
- meth.to_s.gsub("-", "_") # treat foo-bar as foo_bar
462
+ meth.to_s.tr("-", "_") # treat foo-bar as foo_bar
438
463
  end
439
464
  alias_method :normalize_task_name, :normalize_command_name
440
465
 
@@ -1,12 +1,11 @@
1
- require "fileutils"
2
1
  require "uri"
3
- require "thor/core_ext/io_binary_read"
4
- require "thor/actions/create_file"
5
- require "thor/actions/create_link"
6
- require "thor/actions/directory"
7
- require "thor/actions/empty_directory"
8
- require "thor/actions/file_manipulation"
9
- require "thor/actions/inject_into_file"
2
+ require "bundler/vendor/thor/lib/thor/core_ext/io_binary_read"
3
+ require "bundler/vendor/thor/lib/thor/actions/create_file"
4
+ require "bundler/vendor/thor/lib/thor/actions/create_link"
5
+ require "bundler/vendor/thor/lib/thor/actions/directory"
6
+ require "bundler/vendor/thor/lib/thor/actions/empty_directory"
7
+ require "bundler/vendor/thor/lib/thor/actions/file_manipulation"
8
+ require "bundler/vendor/thor/lib/thor/actions/inject_into_file"
10
9
 
11
10
  class Bundler::Thor
12
11
  module Actions
@@ -73,14 +72,15 @@ class Bundler::Thor
73
72
  #
74
73
  def initialize(args = [], options = {}, config = {})
75
74
  self.behavior = case config[:behavior].to_s
76
- when "force", "skip"
77
- _cleanup_options_and_set(options, config[:behavior])
78
- :invoke
79
- when "revoke"
80
- :revoke
81
- else
82
- :invoke
83
- end
75
+ when "force", "skip"
76
+ _cleanup_options_and_set(options, config[:behavior])
77
+ :invoke
78
+ when "revoke"
79
+ :revoke
80
+ else
81
+ :invoke
82
+ end
83
+
84
84
  super
85
85
  self.destination_root = config[:destination_root]
86
86
  end
@@ -129,7 +129,7 @@ class Bundler::Thor
129
129
 
130
130
  # Receives a file or directory and search for it in the source paths.
131
131
  #
132
- def find_in_source_paths(file) # rubocop:disable MethodLength
132
+ def find_in_source_paths(file)
133
133
  possible_files = [file, file + TEMPLATE_EXTNAME]
134
134
  relative_root = relative_to_original_destination_root(destination_root, false)
135
135
 
@@ -140,19 +140,19 @@ class Bundler::Thor
140
140
  end
141
141
  end
142
142
 
143
- message = "Could not find #{file.inspect} in any of your source paths. "
143
+ message = "Could not find #{file.inspect} in any of your source paths. ".dup
144
144
 
145
145
  unless self.class.source_root
146
146
  message << "Please invoke #{self.class.name}.source_root(PATH) with the PATH containing your templates. "
147
147
  end
148
148
 
149
- if source_paths.empty?
150
- message << "Currently you have no source paths."
151
- else
152
- message << "Your current source paths are: \n#{source_paths.join("\n")}"
153
- end
149
+ message << if source_paths.empty?
150
+ "Currently you have no source paths."
151
+ else
152
+ "Your current source paths are: \n#{source_paths.join("\n")}"
153
+ end
154
154
 
155
- fail Error, message
155
+ raise Error, message
156
156
  end
157
157
 
158
158
  # Do something in the root or on a provided subfolder. If a relative path
@@ -174,6 +174,7 @@ class Bundler::Thor
174
174
 
175
175
  # If the directory doesnt exist and we're not pretending
176
176
  if !File.exist?(destination_root) && !pretend
177
+ require "fileutils"
177
178
  FileUtils.mkdir_p(destination_root)
178
179
  end
179
180
 
@@ -181,6 +182,7 @@ class Bundler::Thor
181
182
  # In pretend mode, just yield down to the block
182
183
  block.arity == 1 ? yield(destination_root) : yield
183
184
  else
185
+ require "fileutils"
184
186
  FileUtils.cd(destination_root) { block.arity == 1 ? yield(destination_root) : yield }
185
187
  end
186
188
 
@@ -214,10 +216,10 @@ class Bundler::Thor
214
216
  say_status :apply, path, verbose
215
217
  shell.padding += 1 if verbose
216
218
 
217
- if is_uri
218
- contents = open(path, "Accept" => "application/x-thor-template") { |io| io.read }
219
+ contents = if is_uri
220
+ open(path, "Accept" => "application/x-thor-template", &:read)
219
221
  else
220
- contents = open(path) { |io| io.read }
222
+ open(path, &:read)
221
223
  end
222
224
 
223
225
  instance_eval(contents, path)
@@ -251,7 +253,7 @@ class Bundler::Thor
251
253
  say_status :run, desc, config.fetch(:verbose, true)
252
254
 
253
255
  unless options[:pretend]
254
- config[:capture] ? `#{command}` : system("#{command}")
256
+ config[:capture] ? `#{command}` : system(command.to_s)
255
257
  end
256
258
  end
257
259
 
@@ -308,7 +310,7 @@ class Bundler::Thor
308
310
  def _cleanup_options_and_set(options, key) #:nodoc:
309
311
  case options
310
312
  when Array
311
- %w[--force -f --skip -s].each { |i| options.delete(i) }
313
+ %w(--force -f --skip -s).each { |i| options.delete(i) }
312
314
  options << "--#{key}"
313
315
  when Hash
314
316
  [:force, :skip, "force", "skip"].each { |i| options.delete(i) }