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,4 +1,4 @@
1
- require "thor/shell/basic"
1
+ require "bundler/vendor/thor/lib/thor/shell/basic"
2
2
 
3
3
  class Bundler::Thor
4
4
  module Shell
@@ -134,7 +134,7 @@ class Bundler::Thor
134
134
  # for diff.
135
135
  #
136
136
  def diff_lcs_loaded? #:nodoc:
137
- return true if defined?(Diff::LCS)
137
+ return true if defined?(Diff::LCS)
138
138
  return @diff_lcs_loaded unless @diff_lcs_loaded.nil?
139
139
 
140
140
  @diff_lcs_loaded = begin
@@ -1,4 +1,4 @@
1
- require "thor/shell/basic"
1
+ require "bundler/vendor/thor/lib/thor/shell/basic"
2
2
 
3
3
  class Bundler::Thor
4
4
  module Shell
@@ -51,13 +51,13 @@ class Bundler::Thor
51
51
  def set_color(string, *colors)
52
52
  if colors.all? { |color| color.is_a?(Symbol) || color.is_a?(String) }
53
53
  html_colors = colors.map { |color| lookup_color(color) }
54
- "<span style=\"#{html_colors.join("; ")};\">#{string}</span>"
54
+ "<span style=\"#{html_colors.join('; ')};\">#{string}</span>"
55
55
  else
56
56
  color, bold = colors
57
57
  html_color = self.class.const_get(color.to_s.upcase) if color.is_a?(Symbol)
58
58
  styles = [html_color]
59
59
  styles << BOLD if bold
60
- "<span style=\"#{styles.join("; ")};\">#{string}</span>"
60
+ "<span style=\"#{styles.join('; ')};\">#{string}</span>"
61
61
  end
62
62
  end
63
63
 
@@ -68,7 +68,7 @@ class Bundler::Thor
68
68
  #
69
69
  # TODO: Implement #ask for Bundler::Thor::Shell::HTML
70
70
  def ask(statement, color = nil)
71
- fail NotImplementedError, "Implement #ask for Bundler::Thor::Shell::HTML"
71
+ raise NotImplementedError, "Implement #ask for Bundler::Thor::Shell::HTML"
72
72
  end
73
73
 
74
74
  protected
@@ -111,7 +111,7 @@ class Bundler::Thor
111
111
  # for diff.
112
112
  #
113
113
  def diff_lcs_loaded? #:nodoc:
114
- return true if defined?(Diff::LCS)
114
+ return true if defined?(Diff::LCS)
115
115
  return @diff_lcs_loaded unless @diff_lcs_loaded.nil?
116
116
 
117
117
  @diff_lcs_loaded = begin
@@ -64,7 +64,7 @@ class Bundler::Thor
64
64
  new_constants = Bundler::Thor::Base.subclasses.dup
65
65
  Bundler::Thor::Base.subclasses.replace(old_constants)
66
66
 
67
- new_constants.map! { |c| c.namespace }
67
+ new_constants.map!(&:namespace)
68
68
  new_constants.compact!
69
69
  new_constants
70
70
  end
@@ -72,7 +72,7 @@ class Bundler::Thor
72
72
  # Returns the thor classes declared inside the given class.
73
73
  #
74
74
  def thor_classes_in(klass)
75
- stringfied_constants = klass.constants.map { |c| c.to_s }
75
+ stringfied_constants = klass.constants.map(&:to_s)
76
76
  Bundler::Thor::Base.subclasses.select do |subclass|
77
77
  next unless subclass.name
78
78
  stringfied_constants.include?(subclass.name.gsub("#{klass.name}::", ""))
@@ -103,7 +103,7 @@ class Bundler::Thor
103
103
  #
104
104
  def camel_case(str)
105
105
  return str if str !~ /_/ && str =~ /[A-Z]+.*/
106
- str.split("_").map { |i| i.capitalize }.join
106
+ str.split("_").map(&:capitalize).join
107
107
  end
108
108
 
109
109
  # Receives a namespace and tries to retrieve a Bundler::Thor or Bundler::Thor::Group class
@@ -135,7 +135,8 @@ class Bundler::Thor
135
135
  klass = Bundler::Thor::Util.find_by_namespace(pieces.join(":"))
136
136
  end
137
137
  unless klass # look for a Bundler::Thor::Group with the right name
138
- klass, command = Bundler::Thor::Util.find_by_namespace(namespace), nil
138
+ klass = Bundler::Thor::Util.find_by_namespace(namespace)
139
+ command = nil
139
140
  end
140
141
  if !klass && fallback # try a command in the default namespace
141
142
  command = namespace
@@ -163,7 +164,7 @@ class Bundler::Thor
163
164
  end
164
165
  end
165
166
 
166
- def user_home # rubocop:disable MethodLength
167
+ def user_home
167
168
  @@user_home ||= if ENV["HOME"]
168
169
  ENV["HOME"]
169
170
  elsif ENV["USERPROFILE"]
@@ -188,7 +189,7 @@ class Bundler::Thor
188
189
  # Returns the root where thor files are located, depending on the OS.
189
190
  #
190
191
  def thor_root
191
- File.join(user_home, ".thor").gsub(/\\/, "/")
192
+ File.join(user_home, ".thor").tr('\\', "/")
192
193
  end
193
194
 
194
195
  # Returns the files in the thor root. On Windows thor_root will be something
@@ -216,7 +217,7 @@ class Bundler::Thor
216
217
  # Return the path to the ruby interpreter taking into account multiple
217
218
  # installations and windows extensions.
218
219
  #
219
- def ruby_command # rubocop:disable MethodLength
220
+ def ruby_command
220
221
  @ruby_command ||= begin
221
222
  ruby_name = RbConfig::CONFIG["ruby_install_name"]
222
223
  ruby = File.join(RbConfig::CONFIG["bindir"], ruby_name)
@@ -1,3 +1,3 @@
1
1
  class Bundler::Thor
2
- VERSION = "0.19.1"
2
+ VERSION = "0.20.0"
3
3
  end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bundler; end
4
+ if RUBY_VERSION >= "2.4"
5
+ require "bundler/vendor/fileutils/lib/fileutils"
6
+ else
7
+ # the version we vendor is 2.4+
8
+ require "fileutils"
9
+ end
@@ -1,5 +1,4 @@
1
- vendor = File.expand_path('../vendor/Molinillo-0.2.1/lib', __FILE__)
2
- loaded = $:.include?(vendor)
3
- $:.unshift(vendor) unless loaded
4
- require 'molinillo'
5
- $:.delete(vendor) unless loaded
1
+ # frozen_string_literal: true
2
+
3
+ module Bundler; end
4
+ require "bundler/vendor/molinillo/lib/molinillo"
@@ -1,11 +1,52 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # We forcibly require OpenSSL, because net/http/persistent will only autoload
2
4
  # it. On some Rubies, autoload fails but explicit require succeeds.
3
5
  begin
4
- require 'openssl'
6
+ require "openssl"
5
7
  rescue LoadError
6
8
  # some Ruby builds don't have OpenSSL
7
9
  end
10
+ module Bundler
11
+ module Persistent
12
+ module Net
13
+ module HTTP
14
+ end
15
+ end
16
+ end
17
+ end
18
+ require "bundler/vendor/net-http-persistent/lib/net/http/persistent"
19
+
20
+ module Bundler
21
+ class PersistentHTTP < Persistent::Net::HTTP::Persistent
22
+ def connection_for(uri)
23
+ connection = super
24
+ warn_old_tls_version_rubygems_connection(uri, connection)
25
+ connection
26
+ end
8
27
 
9
- vendor = File.expand_path('../vendor', __FILE__)
10
- $:.unshift(vendor) unless $:.include?(vendor)
11
- require 'net/http/persistent'
28
+ def warn_old_tls_version_rubygems_connection(uri, connection)
29
+ return unless connection.use_ssl?
30
+ return unless (uri.host || "").end_with?("rubygems.org")
31
+
32
+ socket = connection.instance_variable_get(:@socket)
33
+ return unless socket
34
+ socket_io = socket.io
35
+ return unless socket_io.respond_to?(:ssl_version)
36
+ ssl_version = socket_io.ssl_version
37
+
38
+ case ssl_version
39
+ when /TLSv([\d\.]+)/
40
+ version = Gem::Version.new($1)
41
+ if version < Gem::Version.new("1.2")
42
+ Bundler.ui.warn \
43
+ "Warning: Your Ruby version is compiled against a copy of OpenSSL that is very old. " \
44
+ "Starting in January 2018, RubyGems.org will refuse connection requests from these " \
45
+ "very old versions of OpenSSL. If you will need to continue installing gems after " \
46
+ "January 2018, please follow this guide to upgrade: http://ruby.to/tls-outdated.",
47
+ :wrap => true
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -1,5 +1,8 @@
1
- vendor = File.expand_path('../vendor/thor-0.19.1/lib', __FILE__)
2
- loaded = $:.include?(vendor)
3
- $:.unshift(vendor) unless loaded
4
- require 'thor'
5
- require 'thor/actions'
1
+ # frozen_string_literal: true
2
+
3
+ module Bundler
4
+ def self.require_thor_actions
5
+ Kernel.send(:require, "bundler/vendor/thor/lib/thor/actions")
6
+ end
7
+ end
8
+ require "bundler/vendor/thor/lib/thor"
@@ -1,6 +1,28 @@
1
+ # frozen_string_literal: false
2
+
3
+ # Ruby 1.9.3 and old RubyGems don't play nice with frozen version strings
4
+ # rubocop:disable MutableConstant
5
+
1
6
  module Bundler
2
7
  # We're doing this because we might write tests that deal
3
8
  # with other versions of bundler and we are unsure how to
4
9
  # handle this better.
5
- VERSION = "1.9.0" unless defined?(::Bundler::VERSION)
10
+ VERSION = "1.17.3" unless defined?(::Bundler::VERSION)
11
+
12
+ def self.overwrite_loaded_gem_version
13
+ begin
14
+ require "rubygems"
15
+ rescue LoadError
16
+ return
17
+ end
18
+ return unless bundler_spec = Gem.loaded_specs["bundler"]
19
+ return if bundler_spec.version == VERSION
20
+ bundler_spec.version = Bundler::VERSION
21
+ end
22
+ private_class_method :overwrite_loaded_gem_version
23
+ overwrite_loaded_gem_version
24
+
25
+ def self.bundler_major_version
26
+ @bundler_major_version ||= VERSION.split(".").first.to_i
27
+ end
6
28
  end
@@ -0,0 +1,76 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bundler
4
+ module VersionRanges
5
+ NEq = Struct.new(:version)
6
+ ReqR = Struct.new(:left, :right)
7
+ class ReqR
8
+ Endpoint = Struct.new(:version, :inclusive)
9
+ def to_s
10
+ "#{left.inclusive ? "[" : "("}#{left.version}, #{right.version}#{right.inclusive ? "]" : ")"}"
11
+ end
12
+ INFINITY = Object.new.freeze
13
+ ZERO = Gem::Version.new("0.a")
14
+
15
+ def cover?(v)
16
+ return false if left.inclusive && left.version > v
17
+ return false if !left.inclusive && left.version >= v
18
+
19
+ if right.version != INFINITY
20
+ return false if right.inclusive && right.version < v
21
+ return false if !right.inclusive && right.version <= v
22
+ end
23
+
24
+ true
25
+ end
26
+
27
+ def empty?
28
+ left.version == right.version && !(left.inclusive && right.inclusive)
29
+ end
30
+
31
+ def single?
32
+ left.version == right.version
33
+ end
34
+
35
+ UNIVERSAL = ReqR.new(ReqR::Endpoint.new(Gem::Version.new("0.a"), true), ReqR::Endpoint.new(ReqR::INFINITY, false)).freeze
36
+ end
37
+
38
+ def self.for_many(requirements)
39
+ requirements = requirements.map(&:requirements).flatten(1).map {|r| r.join(" ") }
40
+ requirements << ">= 0.a" if requirements.empty?
41
+ requirement = Gem::Requirement.new(requirements)
42
+ self.for(requirement)
43
+ end
44
+
45
+ def self.for(requirement)
46
+ ranges = requirement.requirements.map do |op, v|
47
+ case op
48
+ when "=" then ReqR.new(ReqR::Endpoint.new(v, true), ReqR::Endpoint.new(v, true))
49
+ when "!=" then NEq.new(v)
50
+ when ">=" then ReqR.new(ReqR::Endpoint.new(v, true), ReqR::Endpoint.new(ReqR::INFINITY, false))
51
+ when ">" then ReqR.new(ReqR::Endpoint.new(v, false), ReqR::Endpoint.new(ReqR::INFINITY, false))
52
+ when "<" then ReqR.new(ReqR::Endpoint.new(ReqR::ZERO, true), ReqR::Endpoint.new(v, false))
53
+ when "<=" then ReqR.new(ReqR::Endpoint.new(ReqR::ZERO, true), ReqR::Endpoint.new(v, true))
54
+ when "~>" then ReqR.new(ReqR::Endpoint.new(v, true), ReqR::Endpoint.new(v.bump, false))
55
+ else raise "unknown version op #{op} in requirement #{requirement}"
56
+ end
57
+ end.uniq
58
+ ranges, neqs = ranges.partition {|r| !r.is_a?(NEq) }
59
+
60
+ [ranges.sort_by {|range| [range.left.version, range.left.inclusive ? 0 : 1] }, neqs.map(&:version)]
61
+ end
62
+
63
+ def self.empty?(ranges, neqs)
64
+ !ranges.reduce(ReqR::UNIVERSAL) do |last_range, curr_range|
65
+ next false unless last_range
66
+ next false if curr_range.single? && neqs.include?(curr_range.left.version)
67
+ next curr_range if last_range.right.version == ReqR::INFINITY
68
+ case last_range.right.version <=> curr_range.left.version
69
+ when 1 then next curr_range
70
+ when 0 then next(last_range.right.inclusive && curr_range.left.inclusive && !neqs.include?(curr_range.left.version) && curr_range)
71
+ when -1 then next false
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
@@ -1,8 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/shared_helpers"
4
+ Bundler::SharedHelpers.major_deprecation 2,
5
+ "The Bundler task for Vlad"
6
+
1
7
  # Vlad task for Bundler.
2
8
  #
3
- # Just add "require 'bundler/vlad'" in your Vlad deploy.rb, and
9
+ # Add "require 'bundler/vlad'" in your Vlad deploy.rb, and
4
10
  # include the vlad:bundle:install task in your vlad:deploy task.
5
- require 'bundler/deployment'
11
+ require "bundler/deployment"
6
12
 
7
13
  include Rake::DSL if defined? Rake::DSL
8
14
 
@@ -1,4 +1,6 @@
1
- require 'thread'
1
+ # frozen_string_literal: true
2
+
3
+ require "thread"
2
4
 
3
5
  module Bundler
4
6
  class Worker
@@ -11,22 +13,29 @@ module Bundler
11
13
  end
12
14
  end
13
15
 
16
+ # @return [String] the name of the worker
17
+ attr_reader :name
18
+
14
19
  # Creates a worker pool of specified size
15
20
  #
16
21
  # @param size [Integer] Size of pool
22
+ # @param name [String] name the name of the worker
17
23
  # @param func [Proc] job to run in inside the worker pool
18
- def initialize(size, func)
24
+ def initialize(size, name, func)
25
+ @name = name
19
26
  @request_queue = Queue.new
20
27
  @response_queue = Queue.new
21
28
  @func = func
22
- @threads = size.times.map { |i| Thread.start { process_queue(i) } }
23
- trap("INT") { abort_threads }
29
+ @size = size
30
+ @threads = nil
31
+ SharedHelpers.trap("INT") { abort_threads }
24
32
  end
25
33
 
26
34
  # Enqueue a request to be executed in the worker pool
27
35
  #
28
36
  # @param obj [String] mostly it is name of spec that should be downloaded
29
37
  def enq(obj)
38
+ create_threads unless @threads
30
39
  @request_queue.enq obj
31
40
  end
32
41
 
@@ -60,14 +69,38 @@ module Bundler
60
69
  # Stop the worker threads by sending a poison object down the request queue
61
70
  # so as worker threads after retrieving it, shut themselves down
62
71
  def stop_threads
72
+ return unless @threads
63
73
  @threads.each { @request_queue.enq POISON }
64
- @threads.each { |thread| thread.join }
74
+ @threads.each(&:join)
75
+ @threads = nil
65
76
  end
66
77
 
67
78
  def abort_threads
68
- @threads.each {|i| i.exit }
79
+ return unless @threads
80
+ Bundler.ui.debug("\n#{caller.join("\n")}")
81
+ @threads.each(&:exit)
69
82
  exit 1
70
83
  end
71
84
 
85
+ def create_threads
86
+ creation_errors = []
87
+
88
+ @threads = Array.new(@size) do |i|
89
+ begin
90
+ Thread.start { process_queue(i) }.tap do |thread|
91
+ thread.name = "#{name} Worker ##{i}" if thread.respond_to?(:name=)
92
+ end
93
+ rescue ThreadError => e
94
+ creation_errors << e
95
+ nil
96
+ end
97
+ end.compact
98
+
99
+ return if creation_errors.empty?
100
+
101
+ message = "Failed to create threads for the #{name} worker: #{creation_errors.map(&:to_s).uniq.join(", ")}"
102
+ raise ThreadCreationError, message if @threads.empty?
103
+ Bundler.ui.info message
104
+ end
72
105
  end
73
106
  end
@@ -0,0 +1,90 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bundler
4
+ # A stub yaml serializer that can handle only hashes and strings (as of now).
5
+ module YAMLSerializer
6
+ module_function
7
+
8
+ def dump(hash)
9
+ yaml = String.new("---")
10
+ yaml << dump_hash(hash)
11
+ end
12
+
13
+ def dump_hash(hash)
14
+ yaml = String.new("\n")
15
+ hash.each do |k, v|
16
+ yaml << k << ":"
17
+ if v.is_a?(Hash)
18
+ yaml << dump_hash(v).gsub(/^(?!$)/, " ") # indent all non-empty lines
19
+ elsif v.is_a?(Array) # Expected to be array of strings
20
+ yaml << "\n- " << v.map {|s| s.to_s.gsub(/\s+/, " ").inspect }.join("\n- ") << "\n"
21
+ else
22
+ yaml << " " << v.to_s.gsub(/\s+/, " ").inspect << "\n"
23
+ end
24
+ end
25
+ yaml
26
+ end
27
+
28
+ ARRAY_REGEX = /
29
+ ^
30
+ (?:[ ]*-[ ]) # '- ' before array items
31
+ (['"]?) # optional opening quote
32
+ (.*) # value
33
+ \1 # matching closing quote
34
+ $
35
+ /xo
36
+
37
+ HASH_REGEX = /
38
+ ^
39
+ ([ ]*) # indentations
40
+ (.+) # key
41
+ (?::(?=(?:\s|$))) # : (without the lookahead the #key includes this when : is present in value)
42
+ [ ]?
43
+ (?: !\s)? # optional exclamation mark found with ruby 1.9.3
44
+ (['"]?) # optional opening quote
45
+ (.*) # value
46
+ \3 # matching closing quote
47
+ $
48
+ /xo
49
+
50
+ def load(str)
51
+ res = {}
52
+ stack = [res]
53
+ last_hash = nil
54
+ last_empty_key = nil
55
+ str.split(/\r?\n/).each do |line|
56
+ if match = HASH_REGEX.match(line)
57
+ indent, key, quote, val = match.captures
58
+ key = convert_to_backward_compatible_key(key)
59
+ depth = indent.scan(/ /).length
60
+ if quote.empty? && val.empty?
61
+ new_hash = {}
62
+ stack[depth][key] = new_hash
63
+ stack[depth + 1] = new_hash
64
+ last_empty_key = key
65
+ last_hash = stack[depth]
66
+ else
67
+ stack[depth][key] = val
68
+ end
69
+ elsif match = ARRAY_REGEX.match(line)
70
+ _, val = match.captures
71
+ last_hash[last_empty_key] = [] unless last_hash[last_empty_key].is_a?(Array)
72
+
73
+ last_hash[last_empty_key].push(val)
74
+ end
75
+ end
76
+ res
77
+ end
78
+
79
+ # for settings' keys
80
+ def convert_to_backward_compatible_key(key)
81
+ key = "#{key}/" if key =~ /https?:/i && key !~ %r{/\Z}
82
+ key = key.gsub(".", "__") if key.include?(".")
83
+ key
84
+ end
85
+
86
+ class << self
87
+ private :dump_hash, :convert_to_backward_compatible_key
88
+ end
89
+ end
90
+ end