bundler 1.13.6 → 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 (323) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +554 -9
  3. data/README.md +28 -5
  4. data/bundler.gemspec +40 -11
  5. data/exe/bundle +4 -8
  6. data/exe/bundle_ruby +4 -3
  7. data/lib/bundler.rb +162 -68
  8. data/lib/bundler/build_metadata.rb +53 -0
  9. data/lib/bundler/capistrano.rb +5 -0
  10. data/lib/bundler/cli.rb +360 -118
  11. data/lib/bundler/cli/add.rb +35 -0
  12. data/lib/bundler/cli/binstubs.rb +18 -10
  13. data/lib/bundler/cli/cache.rb +6 -5
  14. data/lib/bundler/cli/check.rb +4 -6
  15. data/lib/bundler/cli/clean.rb +6 -7
  16. data/lib/bundler/cli/common.rb +47 -1
  17. data/lib/bundler/cli/config.rb +26 -7
  18. data/lib/bundler/cli/console.rb +2 -1
  19. data/lib/bundler/cli/doctor.rb +63 -18
  20. data/lib/bundler/cli/exec.rb +12 -5
  21. data/lib/bundler/cli/gem.rb +59 -21
  22. data/lib/bundler/cli/info.rb +50 -0
  23. data/lib/bundler/cli/init.rb +21 -7
  24. data/lib/bundler/cli/inject.rb +13 -4
  25. data/lib/bundler/cli/install.rb +72 -101
  26. data/lib/bundler/cli/issue.rb +40 -0
  27. data/lib/bundler/cli/list.rb +58 -0
  28. data/lib/bundler/cli/lock.rb +9 -6
  29. data/lib/bundler/cli/open.rb +4 -3
  30. data/lib/bundler/cli/outdated.rb +175 -60
  31. data/lib/bundler/cli/package.rb +9 -6
  32. data/lib/bundler/cli/platform.rb +2 -1
  33. data/lib/bundler/cli/plugin.rb +1 -0
  34. data/lib/bundler/cli/pristine.rb +47 -0
  35. data/lib/bundler/cli/remove.rb +18 -0
  36. data/lib/bundler/cli/show.rb +2 -2
  37. data/lib/bundler/cli/update.rb +44 -34
  38. data/lib/bundler/cli/viz.rb +5 -1
  39. data/lib/bundler/compact_index_client.rb +109 -0
  40. data/lib/bundler/compact_index_client/cache.rb +118 -0
  41. data/lib/bundler/compact_index_client/updater.rb +116 -0
  42. data/lib/bundler/compatibility_guard.rb +14 -0
  43. data/lib/bundler/constants.rb +1 -0
  44. data/lib/bundler/current_ruby.rb +17 -8
  45. data/lib/bundler/definition.rb +353 -182
  46. data/lib/bundler/dep_proxy.rb +3 -1
  47. data/lib/bundler/dependency.rb +22 -10
  48. data/lib/bundler/deployment.rb +1 -1
  49. data/lib/bundler/deprecate.rb +15 -3
  50. data/lib/bundler/dsl.rb +122 -64
  51. data/lib/bundler/endpoint_specification.rb +13 -3
  52. data/lib/bundler/env.rb +110 -38
  53. data/lib/bundler/environment_preserver.rb +27 -6
  54. data/lib/bundler/errors.rb +24 -0
  55. data/lib/bundler/feature_flag.rb +74 -0
  56. data/lib/bundler/fetcher.rb +18 -11
  57. data/lib/bundler/fetcher/base.rb +1 -0
  58. data/lib/bundler/fetcher/compact_index.rb +7 -5
  59. data/lib/bundler/fetcher/dependency.rb +3 -2
  60. data/lib/bundler/fetcher/downloader.rb +25 -7
  61. data/lib/bundler/fetcher/index.rb +3 -2
  62. data/lib/bundler/friendly_errors.rb +33 -7
  63. data/lib/bundler/gem_helper.rb +25 -11
  64. data/lib/bundler/gem_helpers.rb +70 -1
  65. data/lib/bundler/gem_remote_fetcher.rb +1 -0
  66. data/lib/bundler/gem_tasks.rb +1 -0
  67. data/lib/bundler/gem_version_promoter.rb +17 -2
  68. data/lib/bundler/gemdeps.rb +29 -0
  69. data/lib/bundler/graph.rb +1 -0
  70. data/lib/bundler/index.rb +28 -15
  71. data/lib/bundler/injector.rb +216 -33
  72. data/lib/bundler/inline.rb +12 -12
  73. data/lib/bundler/installer.rb +139 -53
  74. data/lib/bundler/installer/gem_installer.rb +15 -5
  75. data/lib/bundler/installer/parallel_installer.rb +113 -28
  76. data/lib/bundler/installer/standalone.rb +1 -0
  77. data/lib/bundler/lazy_specification.rb +31 -3
  78. data/lib/bundler/lockfile_generator.rb +95 -0
  79. data/lib/bundler/lockfile_parser.rb +50 -37
  80. data/lib/bundler/match_platform.rb +13 -3
  81. data/lib/bundler/mirror.rb +10 -5
  82. data/lib/bundler/plugin.rb +22 -8
  83. data/lib/bundler/plugin/api.rb +2 -1
  84. data/lib/bundler/plugin/api/source.rb +17 -4
  85. data/lib/bundler/plugin/events.rb +61 -0
  86. data/lib/bundler/plugin/index.rb +9 -2
  87. data/lib/bundler/plugin/installer.rb +7 -6
  88. data/lib/bundler/plugin/source_list.rb +7 -8
  89. data/lib/bundler/process_lock.rb +24 -0
  90. data/lib/bundler/psyched_yaml.rb +10 -0
  91. data/lib/bundler/remote_specification.rb +30 -1
  92. data/lib/bundler/resolver.rb +187 -194
  93. data/lib/bundler/resolver/spec_group.rb +106 -0
  94. data/lib/bundler/retry.rb +5 -1
  95. data/lib/bundler/ruby_dsl.rb +1 -0
  96. data/lib/bundler/ruby_version.rb +12 -2
  97. data/lib/bundler/rubygems_ext.rb +23 -8
  98. data/lib/bundler/rubygems_gem_installer.rb +90 -0
  99. data/lib/bundler/rubygems_integration.rb +193 -70
  100. data/lib/bundler/runtime.rb +39 -22
  101. data/lib/bundler/settings.rb +245 -85
  102. data/lib/bundler/settings/validator.rb +102 -0
  103. data/lib/bundler/setup.rb +4 -7
  104. data/lib/bundler/shared_helpers.rb +183 -40
  105. data/lib/bundler/similarity_detector.rb +1 -0
  106. data/lib/bundler/source.rb +58 -1
  107. data/lib/bundler/source/gemspec.rb +1 -0
  108. data/lib/bundler/source/git.rb +52 -23
  109. data/lib/bundler/source/git/git_proxy.rb +30 -14
  110. data/lib/bundler/source/metadata.rb +62 -0
  111. data/lib/bundler/source/path.rb +42 -16
  112. data/lib/bundler/source/path/installer.rb +4 -2
  113. data/lib/bundler/source/rubygems.rb +171 -82
  114. data/lib/bundler/source/rubygems/remote.rb +12 -2
  115. data/lib/bundler/source_list.rb +75 -15
  116. data/lib/bundler/spec_set.rb +67 -32
  117. data/lib/bundler/ssl_certs/certificate_manager.rb +2 -1
  118. data/lib/bundler/stub_specification.rb +86 -2
  119. data/lib/bundler/templates/.document +1 -0
  120. data/lib/bundler/templates/Executable +13 -1
  121. data/lib/bundler/templates/Executable.bundler +105 -0
  122. data/lib/bundler/templates/Executable.standalone +5 -5
  123. data/lib/bundler/templates/Gemfile +3 -0
  124. data/lib/bundler/templates/gems.rb +8 -0
  125. data/lib/bundler/templates/newgem/Gemfile.tt +4 -2
  126. data/lib/bundler/templates/newgem/LICENSE.txt.tt +1 -1
  127. data/lib/bundler/templates/newgem/README.md.tt +14 -8
  128. data/lib/bundler/templates/newgem/Rakefile.tt +5 -5
  129. data/lib/bundler/templates/newgem/bin/console.tt +1 -1
  130. data/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +4 -4
  131. data/lib/bundler/templates/newgem/ext/newgem/newgem.h.tt +3 -3
  132. data/lib/bundler/templates/newgem/gitignore.tt +5 -1
  133. data/lib/bundler/templates/newgem/lib/newgem.rb.tt +7 -6
  134. data/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +4 -4
  135. data/lib/bundler/templates/newgem/newgem.gemspec.tt +21 -12
  136. data/lib/bundler/templates/newgem/rspec.tt +1 -0
  137. data/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +1 -3
  138. data/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +13 -1
  139. data/lib/bundler/templates/newgem/test/newgem_test.rb.tt +1 -1
  140. data/lib/bundler/templates/newgem/test/test_helper.rb.tt +3 -3
  141. data/lib/bundler/templates/newgem/{.travis.yml.tt → travis.yml.tt} +2 -0
  142. data/lib/bundler/ui.rb +1 -0
  143. data/lib/bundler/ui/rg_proxy.rb +1 -0
  144. data/lib/bundler/ui/shell.rb +30 -10
  145. data/lib/bundler/ui/silent.rb +21 -1
  146. data/lib/bundler/uri_credentials_filter.rb +1 -0
  147. data/lib/bundler/vendor/fileutils/lib/fileutils.rb +1638 -0
  148. data/lib/bundler/vendor/molinillo/lib/molinillo.rb +2 -0
  149. data/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +26 -0
  150. data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
  151. data/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb +1 -0
  152. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +26 -6
  153. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/action.rb +2 -1
  154. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +12 -4
  155. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +3 -2
  156. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +63 -0
  157. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +11 -3
  158. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +13 -1
  159. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +3 -2
  160. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +3 -2
  161. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +18 -5
  162. data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +75 -7
  163. data/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +2 -1
  164. data/lib/bundler/vendor/molinillo/lib/molinillo/modules/specification_provider.rb +1 -0
  165. data/lib/bundler/vendor/molinillo/lib/molinillo/modules/ui.rb +3 -1
  166. data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +499 -128
  167. data/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +1 -0
  168. data/lib/bundler/vendor/molinillo/lib/molinillo/state.rb +8 -4
  169. data/lib/bundler/vendor/{net → net-http-persistent/lib/net}/http/faster.rb +1 -0
  170. data/lib/bundler/vendor/{net → net-http-persistent/lib/net}/http/persistent.rb +27 -24
  171. data/lib/bundler/vendor/{net → net-http-persistent/lib/net}/http/persistent/ssl_reuse.rb +2 -1
  172. data/lib/bundler/vendor/thor/lib/thor.rb +46 -21
  173. data/lib/bundler/vendor/thor/lib/thor/actions.rb +24 -22
  174. data/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +2 -1
  175. data/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
  176. data/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +2 -2
  177. data/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb +16 -8
  178. data/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +66 -18
  179. data/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +17 -15
  180. data/lib/bundler/vendor/thor/lib/thor/base.rb +55 -32
  181. data/lib/bundler/vendor/thor/lib/thor/command.rb +13 -11
  182. data/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +21 -1
  183. data/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb +7 -5
  184. data/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb +94 -63
  185. data/lib/bundler/vendor/thor/lib/thor/error.rb +3 -3
  186. data/lib/bundler/vendor/thor/lib/thor/group.rb +13 -13
  187. data/lib/bundler/vendor/thor/lib/thor/invocation.rb +4 -5
  188. data/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +2 -0
  189. data/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +4 -7
  190. data/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +16 -16
  191. data/lib/bundler/vendor/thor/lib/thor/parser/option.rb +42 -21
  192. data/lib/bundler/vendor/thor/lib/thor/parser/options.rb +13 -10
  193. data/lib/bundler/vendor/thor/lib/thor/runner.rb +31 -29
  194. data/lib/bundler/vendor/thor/lib/thor/shell.rb +1 -1
  195. data/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +49 -33
  196. data/lib/bundler/vendor/thor/lib/thor/shell/color.rb +1 -1
  197. data/lib/bundler/vendor/thor/lib/thor/shell/html.rb +4 -4
  198. data/lib/bundler/vendor/thor/lib/thor/util.rb +8 -7
  199. data/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  200. data/lib/bundler/vendored_fileutils.rb +9 -0
  201. data/lib/bundler/vendored_molinillo.rb +1 -0
  202. data/lib/bundler/vendored_persistent.rb +43 -3
  203. data/lib/bundler/vendored_thor.rb +6 -2
  204. data/lib/bundler/version.rb +19 -2
  205. data/lib/bundler/version_ranges.rb +76 -0
  206. data/lib/bundler/vlad.rb +5 -0
  207. data/lib/bundler/worker.rb +30 -6
  208. data/lib/bundler/yaml_serializer.rb +4 -4
  209. data/man/bundle-add.1 +58 -0
  210. data/man/bundle-add.1.txt +52 -0
  211. data/man/bundle-add.ronn +40 -0
  212. data/{lib/bundler/man/bundle-binstubs → man/bundle-binstubs.1} +11 -1
  213. data/man/bundle-binstubs.1.txt +48 -0
  214. data/man/bundle-binstubs.ronn +15 -1
  215. data/man/bundle-check.1 +31 -0
  216. data/man/bundle-check.1.txt +33 -0
  217. data/man/bundle-check.ronn +26 -0
  218. data/man/bundle-clean.1 +24 -0
  219. data/man/bundle-clean.1.txt +26 -0
  220. data/man/bundle-clean.ronn +18 -0
  221. data/man/bundle-config.1 +497 -0
  222. data/man/bundle-config.1.txt +529 -0
  223. data/man/bundle-config.ronn +233 -61
  224. data/man/bundle-doctor.1 +44 -0
  225. data/man/bundle-doctor.1.txt +44 -0
  226. data/man/bundle-doctor.ronn +33 -0
  227. data/{lib/bundler/man/bundle-exec → man/bundle-exec.1} +6 -3
  228. data/man/bundle-exec.1.txt +178 -0
  229. data/man/bundle-exec.ronn +10 -3
  230. data/{lib/bundler/man/bundle-gem → man/bundle-gem.1} +4 -4
  231. data/man/bundle-gem.1.txt +91 -0
  232. data/man/bundle-gem.ronn +3 -2
  233. data/man/bundle-info.1 +20 -0
  234. data/man/bundle-info.1.txt +21 -0
  235. data/man/bundle-info.ronn +17 -0
  236. data/man/bundle-init.1 +25 -0
  237. data/man/bundle-init.1.txt +34 -0
  238. data/man/bundle-init.ronn +29 -0
  239. data/man/bundle-inject.1 +33 -0
  240. data/man/bundle-inject.1.txt +32 -0
  241. data/man/bundle-inject.ronn +22 -0
  242. data/{lib/bundler/man/bundle-install → man/bundle-install.1} +32 -29
  243. data/man/bundle-install.1.txt +396 -0
  244. data/man/bundle-install.ronn +45 -36
  245. data/man/bundle-list.1 +50 -0
  246. data/man/bundle-list.1.txt +43 -0
  247. data/man/bundle-list.ronn +33 -0
  248. data/{lib/bundler/man/bundle-lock → man/bundle-lock.1} +43 -2
  249. data/man/bundle-lock.1.txt +93 -0
  250. data/man/bundle-lock.ronn +47 -0
  251. data/man/bundle-open.1 +32 -0
  252. data/man/bundle-open.1.txt +29 -0
  253. data/man/bundle-open.ronn +19 -0
  254. data/man/bundle-outdated.1 +155 -0
  255. data/man/bundle-outdated.1.txt +131 -0
  256. data/man/bundle-outdated.ronn +111 -0
  257. data/{lib/bundler/man/bundle-package → man/bundle-package.1} +6 -3
  258. data/man/bundle-package.1.txt +79 -0
  259. data/man/bundle-package.ronn +7 -2
  260. data/{lib/bundler/man/bundle-platform → man/bundle-platform.1} +1 -1
  261. data/man/bundle-platform.1.txt +57 -0
  262. data/man/bundle-pristine.1 +34 -0
  263. data/man/bundle-pristine.1.txt +44 -0
  264. data/man/bundle-pristine.ronn +34 -0
  265. data/man/bundle-remove.1 +31 -0
  266. data/man/bundle-remove.1.txt +34 -0
  267. data/man/bundle-remove.ronn +23 -0
  268. data/man/bundle-show.1 +23 -0
  269. data/man/bundle-show.1.txt +27 -0
  270. data/man/bundle-show.ronn +21 -0
  271. data/man/bundle-update.1 +394 -0
  272. data/man/bundle-update.1.txt +391 -0
  273. data/man/bundle-update.ronn +172 -16
  274. data/man/bundle-viz.1 +39 -0
  275. data/man/bundle-viz.1.txt +39 -0
  276. data/man/bundle-viz.ronn +30 -0
  277. data/{lib/bundler/man/bundle → man/bundle.1} +44 -28
  278. data/man/bundle.1.txt +116 -0
  279. data/man/bundle.ronn +39 -27
  280. data/{lib/bundler/man → man}/gemfile.5 +67 -84
  281. data/man/gemfile.5.ronn +77 -55
  282. data/man/gemfile.5.txt +653 -0
  283. data/man/index.txt +25 -8
  284. metadata +118 -58
  285. data/.codeclimate.yml +0 -25
  286. data/.gitignore +0 -16
  287. data/.rspec +0 -3
  288. data/.rubocop.yml +0 -128
  289. data/.rubocop_todo.yml +0 -248
  290. data/.travis.yml +0 -108
  291. data/CODE_OF_CONDUCT.md +0 -42
  292. data/CONTRIBUTING.md +0 -36
  293. data/DEVELOPMENT.md +0 -148
  294. data/ISSUES.md +0 -100
  295. data/Rakefile +0 -333
  296. data/bin/rake +0 -19
  297. data/bin/rspec +0 -15
  298. data/bin/rubocop +0 -17
  299. data/bin/with_rubygems +0 -39
  300. data/lib/bundler/man/bundle-binstubs.txt +0 -33
  301. data/lib/bundler/man/bundle-config +0 -254
  302. data/lib/bundler/man/bundle-config.txt +0 -282
  303. data/lib/bundler/man/bundle-exec.txt +0 -171
  304. data/lib/bundler/man/bundle-gem.txt +0 -90
  305. data/lib/bundler/man/bundle-install.txt +0 -385
  306. data/lib/bundler/man/bundle-lock.txt +0 -52
  307. data/lib/bundler/man/bundle-package.txt +0 -74
  308. data/lib/bundler/man/bundle-platform.txt +0 -57
  309. data/lib/bundler/man/bundle-update +0 -221
  310. data/lib/bundler/man/bundle-update.txt +0 -227
  311. data/lib/bundler/man/bundle.txt +0 -104
  312. data/lib/bundler/man/gemfile.5.txt +0 -636
  313. data/lib/bundler/postit_trampoline.rb +0 -68
  314. data/lib/bundler/vendor/compact_index_client/lib/compact_index_client.rb +0 -79
  315. data/lib/bundler/vendor/compact_index_client/lib/compact_index_client/cache.rb +0 -112
  316. data/lib/bundler/vendor/compact_index_client/lib/compact_index_client/updater.rb +0 -80
  317. data/lib/bundler/vendor/compact_index_client/lib/compact_index_client/version.rb +0 -4
  318. data/lib/bundler/vendor/postit/lib/postit.rb +0 -15
  319. data/lib/bundler/vendor/postit/lib/postit/environment.rb +0 -44
  320. data/lib/bundler/vendor/postit/lib/postit/installer.rb +0 -28
  321. data/lib/bundler/vendor/postit/lib/postit/parser.rb +0 -21
  322. data/lib/bundler/vendor/postit/lib/postit/setup.rb +0 -12
  323. data/lib/bundler/vendor/postit/lib/postit/version.rb +0 -3
@@ -9,7 +9,7 @@ class Bundler::Thor
9
9
  # it will use a colored log, otherwise it will use a basic one without color.
10
10
  #
11
11
  def shell
12
- @shell ||= if ENV["THOR_SHELL"] && ENV["THOR_SHELL"].size > 0
12
+ @shell ||= if ENV["THOR_SHELL"] && !ENV["THOR_SHELL"].empty?
13
13
  Bundler::Thor::Shell.const_get(ENV["THOR_SHELL"])
14
14
  elsif RbConfig::CONFIG["host_os"] =~ /mswin|mingw/ && !ENV["ANSICON"]
15
15
  Bundler::Thor::Shell::Basic
@@ -1,16 +1,16 @@
1
- require "tempfile"
2
- require "io/console" if RUBY_VERSION > "1.9.2"
3
-
4
1
  class Bundler::Thor
5
2
  module Shell
6
- class Basic # rubocop:disable ClassLength
3
+ class Basic
7
4
  attr_accessor :base
8
5
  attr_reader :padding
9
6
 
10
7
  # Initialize base, mute and padding to nil.
11
8
  #
12
9
  def initialize #:nodoc:
13
- @base, @mute, @padding, @always_force = nil, false, 0, false
10
+ @base = nil
11
+ @mute = false
12
+ @padding = 0
13
+ @always_force = false
14
14
  end
15
15
 
16
16
  # Mute everything that's inside given block
@@ -24,7 +24,7 @@ class Bundler::Thor
24
24
 
25
25
  # Check if base is muted
26
26
  #
27
- def mute? # rubocop:disable TrivialAccessors
27
+ def mute?
28
28
  @mute
29
29
  end
30
30
 
@@ -34,6 +34,15 @@ class Bundler::Thor
34
34
  @padding = [0, value].max
35
35
  end
36
36
 
37
+ # Sets the output padding while executing a block and resets it.
38
+ #
39
+ def indent(count = 1)
40
+ orig_padding = padding
41
+ self.padding = padding + count
42
+ yield
43
+ self.padding = orig_padding
44
+ end
45
+
37
46
  # Asks something to the user and receives a response.
38
47
  #
39
48
  # If asked to limit the correct responses, you can pass in an
@@ -98,7 +107,7 @@ class Bundler::Thor
98
107
  status = set_color status, color, true if color
99
108
 
100
109
  buffer = "#{status}#{spaces}#{message}"
101
- buffer << "\n" unless buffer.end_with?("\n")
110
+ buffer = "#{buffer}\n" unless buffer.end_with?("\n")
102
111
 
103
112
  stdout.print(buffer)
104
113
  stdout.flush
@@ -148,10 +157,12 @@ class Bundler::Thor
148
157
  def print_table(array, options = {}) # rubocop:disable MethodLength
149
158
  return if array.empty?
150
159
 
151
- formats, indent, colwidth = [], options[:indent].to_i, options[:colwidth]
160
+ formats = []
161
+ indent = options[:indent].to_i
162
+ colwidth = options[:colwidth]
152
163
  options[:truncate] = terminal_width if options[:truncate] == true
153
164
 
154
- formats << "%-#{colwidth + 2}s" if colwidth
165
+ formats << "%-#{colwidth + 2}s".dup if colwidth
155
166
  start = colwidth ? 1 : 0
156
167
 
157
168
  colcount = array.max { |a, b| a.size <=> b.size }.size
@@ -161,32 +172,32 @@ class Bundler::Thor
161
172
  start.upto(colcount - 1) do |index|
162
173
  maxima = array.map { |row| row[index] ? row[index].to_s.size : 0 }.max
163
174
  maximas << maxima
164
- if index == colcount - 1
165
- # Don't output 2 trailing spaces when printing the last column
166
- formats << "%-s"
167
- else
168
- formats << "%-#{maxima + 2}s"
169
- end
175
+ formats << if index == colcount - 1
176
+ # Don't output 2 trailing spaces when printing the last column
177
+ "%-s".dup
178
+ else
179
+ "%-#{maxima + 2}s".dup
180
+ end
170
181
  end
171
182
 
172
183
  formats[0] = formats[0].insert(0, " " * indent)
173
184
  formats << "%s"
174
185
 
175
186
  array.each do |row|
176
- sentence = ""
187
+ sentence = "".dup
177
188
 
178
189
  row.each_with_index do |column, index|
179
190
  maxima = maximas[index]
180
191
 
181
- if column.is_a?(Numeric)
192
+ f = if column.is_a?(Numeric)
182
193
  if index == row.size - 1
183
194
  # Don't output 2 trailing spaces when printing the last column
184
- f = "%#{maxima}s"
195
+ "%#{maxima}s"
185
196
  else
186
- f = "%#{maxima}s "
197
+ "%#{maxima}s "
187
198
  end
188
199
  else
189
- f = formats[index]
200
+ formats[index]
190
201
  end
191
202
  sentence << f % column.to_s
192
203
  end
@@ -211,7 +222,7 @@ class Bundler::Thor
211
222
  paras = message.split("\n\n")
212
223
 
213
224
  paras.map! do |unwrapped|
214
- unwrapped.strip.gsub(/\n/, " ").squeeze(" ").gsub(/.{1,#{width}}(?:\s|\Z)/) { ($& + 5.chr).gsub(/\n\005/, "\n").gsub(/\005/, "\n") }
225
+ unwrapped.strip.tr("\n", " ").squeeze(" ").gsub(/.{1,#{width}}(?:\s|\Z)/) { ($& + 5.chr).gsub(/\n\005/, "\n").gsub(/\005/, "\n") }
215
226
  end
216
227
 
217
228
  paras.each do |para|
@@ -230,7 +241,7 @@ class Bundler::Thor
230
241
  # destination<String>:: the destination file to solve conflicts
231
242
  # block<Proc>:: an optional block that returns the value to be used in diff
232
243
  #
233
- def file_collision(destination) # rubocop:disable MethodLength
244
+ def file_collision(destination)
234
245
  return true if @always_force
235
246
  options = block_given? ? "[Ynaqdh]" : "[Ynaqh]"
236
247
 
@@ -241,6 +252,9 @@ class Bundler::Thor
241
252
  )
242
253
 
243
254
  case answer
255
+ when nil
256
+ say ""
257
+ return true
244
258
  when is?(:yes), is?(:force), ""
245
259
  return true
246
260
  when is?(:no), is?(:skip)
@@ -249,7 +263,7 @@ class Bundler::Thor
249
263
  return @always_force = true
250
264
  when is?(:quit)
251
265
  say "Aborting..."
252
- fail SystemExit
266
+ raise SystemExit
253
267
  when is?(:diff)
254
268
  show_diff(destination, yield) if block_given?
255
269
  say "Retrying..."
@@ -262,10 +276,10 @@ class Bundler::Thor
262
276
  # This code was copied from Rake, available under MIT-LICENSE
263
277
  # Copyright (c) 2003, 2004 Jim Weirich
264
278
  def terminal_width
265
- if ENV["THOR_COLUMNS"]
266
- result = ENV["THOR_COLUMNS"].to_i
279
+ result = if ENV["THOR_COLUMNS"]
280
+ ENV["THOR_COLUMNS"].to_i
267
281
  else
268
- result = unix? ? dynamic_width : 80
282
+ unix? ? dynamic_width : 80
269
283
  end
270
284
  result < 10 ? 80 : result
271
285
  rescue
@@ -284,7 +298,7 @@ class Bundler::Thor
284
298
  # Apply color to the given string with optional bold. Disabled in the
285
299
  # Bundler::Thor::Shell::Basic class.
286
300
  #
287
- def set_color(string, *args) #:nodoc:
301
+ def set_color(string, *) #:nodoc:
288
302
  string
289
303
  end
290
304
 
@@ -336,6 +350,7 @@ class Bundler::Thor
336
350
  def show_diff(destination, content) #:nodoc:
337
351
  diff_cmd = ENV["THOR_DIFF"] || ENV["RAILS_DIFF"] || "diff -u"
338
352
 
353
+ require "tempfile"
339
354
  Tempfile.open(File.basename(destination), File.dirname(destination)) do |temp|
340
355
  temp.write content
341
356
  temp.rewind
@@ -353,11 +368,11 @@ class Bundler::Thor
353
368
  end
354
369
 
355
370
  def dynamic_width_stty
356
- %x(stty size 2>/dev/null).split[1].to_i
371
+ `stty size 2>/dev/null`.split[1].to_i
357
372
  end
358
373
 
359
374
  def dynamic_width_tput
360
- %x(tput cols 2>/dev/null).to_i
375
+ `tput cols 2>/dev/null`.to_i
361
376
  end
362
377
 
363
378
  def unix?
@@ -370,7 +385,7 @@ class Bundler::Thor
370
385
  if chars.length <= width
371
386
  chars.join
372
387
  else
373
- ( chars[0, width - 3].join) + "..."
388
+ chars[0, width - 3].join + "..."
374
389
  end
375
390
  end
376
391
  end
@@ -381,7 +396,8 @@ class Bundler::Thor
381
396
  end
382
397
  else
383
398
  def as_unicode
384
- old, $KCODE = $KCODE, "U"
399
+ old = $KCODE
400
+ $KCODE = "U"
385
401
  yield
386
402
  ensure
387
403
  $KCODE = old
@@ -391,12 +407,12 @@ class Bundler::Thor
391
407
  def ask_simply(statement, color, options)
392
408
  default = options[:default]
393
409
  message = [statement, ("(#{default})" if default), nil].uniq.join(" ")
394
- message = prepare_message(message, color)
410
+ message = prepare_message(message, *color)
395
411
  result = Bundler::Thor::LineEditor.readline(message, options)
396
412
 
397
413
  return unless result
398
414
 
399
- result.strip!
415
+ result = result.strip
400
416
 
401
417
  if default && result == ""
402
418
  default
@@ -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
@@ -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,3 +1,4 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Bundler; end
3
4
  require "bundler/vendor/molinillo/lib/molinillo"
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  # We forcibly require OpenSSL, because net/http/persistent will only autoload
3
4
  # it. On some Rubies, autoload fails but explicit require succeeds.
4
5
  begin
@@ -6,7 +7,46 @@ begin
6
7
  rescue LoadError
7
8
  # some Ruby builds don't have OpenSSL
8
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
9
27
 
10
- vendor = File.expand_path("../vendor", __FILE__)
11
- $:.unshift(vendor) unless $:.include?(vendor)
12
- 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,4 +1,8 @@
1
1
  # frozen_string_literal: true
2
- module Bundler; end
2
+
3
+ module Bundler
4
+ def self.require_thor_actions
5
+ Kernel.send(:require, "bundler/vendor/thor/lib/thor/actions")
6
+ end
7
+ end
3
8
  require "bundler/vendor/thor/lib/thor"
4
- require "bundler/vendor/thor/lib/thor/actions"
@@ -1,4 +1,4 @@
1
- # frozen_string_literal: true
1
+ # frozen_string_literal: false
2
2
 
3
3
  # Ruby 1.9.3 and old RubyGems don't play nice with frozen version strings
4
4
  # rubocop:disable MutableConstant
@@ -7,5 +7,22 @@ module Bundler
7
7
  # We're doing this because we might write tests that deal
8
8
  # with other versions of bundler and we are unsure how to
9
9
  # handle this better.
10
- VERSION = "1.13.6" 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
11
28
  end