bundler 2.0.2 → 2.1.0

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 (249) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +735 -574
  3. data/LICENSE.md +18 -19
  4. data/README.md +8 -7
  5. data/bundler.gemspec +5 -23
  6. data/exe/bundle +19 -3
  7. data/lib/bundler.rb +202 -87
  8. data/lib/bundler/build_metadata.rb +3 -3
  9. data/lib/bundler/capistrano.rb +5 -5
  10. data/lib/bundler/cli.rb +179 -143
  11. data/lib/bundler/cli/add.rb +28 -16
  12. data/lib/bundler/cli/cache.rb +25 -13
  13. data/lib/bundler/cli/common.rb +10 -11
  14. data/lib/bundler/cli/config.rb +161 -86
  15. data/lib/bundler/cli/console.rb +2 -2
  16. data/lib/bundler/cli/doctor.rb +4 -4
  17. data/lib/bundler/cli/exec.rb +15 -18
  18. data/lib/bundler/cli/gem.rb +5 -5
  19. data/lib/bundler/cli/info.rb +17 -5
  20. data/lib/bundler/cli/init.rb +1 -1
  21. data/lib/bundler/cli/install.rb +3 -3
  22. data/lib/bundler/cli/issue.rb +1 -1
  23. data/lib/bundler/cli/open.rb +10 -6
  24. data/lib/bundler/cli/outdated.rb +85 -81
  25. data/lib/bundler/cli/plugin.rb +9 -2
  26. data/lib/bundler/cli/pristine.rb +1 -1
  27. data/lib/bundler/cli/show.rb +1 -1
  28. data/lib/bundler/cli/update.rb +31 -11
  29. data/lib/bundler/compact_index_client.rb +25 -9
  30. data/lib/bundler/compact_index_client/updater.rb +2 -6
  31. data/lib/bundler/current_ruby.rb +8 -7
  32. data/lib/bundler/definition.rb +33 -26
  33. data/lib/bundler/dependency.rb +16 -4
  34. data/lib/bundler/deployment.rb +2 -2
  35. data/lib/bundler/dsl.rb +19 -43
  36. data/lib/bundler/env.rb +6 -5
  37. data/lib/bundler/environment_preserver.rb +0 -1
  38. data/lib/bundler/feature_flag.rb +1 -13
  39. data/lib/bundler/fetcher.rb +16 -13
  40. data/lib/bundler/fetcher/compact_index.rb +26 -12
  41. data/lib/bundler/fetcher/dependency.rb +1 -1
  42. data/lib/bundler/fetcher/downloader.rb +4 -1
  43. data/lib/bundler/fetcher/index.rb +5 -3
  44. data/lib/bundler/friendly_errors.rb +6 -7
  45. data/lib/bundler/gem_helper.rb +14 -14
  46. data/lib/bundler/gem_helpers.rb +2 -4
  47. data/lib/bundler/gem_tasks.rb +1 -1
  48. data/lib/bundler/gem_version_promoter.rb +3 -3
  49. data/lib/bundler/graph.rb +2 -2
  50. data/lib/bundler/injector.rb +3 -1
  51. data/lib/bundler/inline.rb +40 -30
  52. data/lib/bundler/installer.rb +7 -14
  53. data/lib/bundler/installer/gem_installer.rb +5 -1
  54. data/lib/bundler/installer/parallel_installer.rb +4 -4
  55. data/lib/bundler/installer/standalone.rb +1 -2
  56. data/lib/bundler/lazy_specification.rb +2 -3
  57. data/lib/bundler/lockfile_parser.rb +14 -21
  58. data/lib/bundler/match_platform.rb +1 -1
  59. data/lib/bundler/mirror.rb +3 -3
  60. data/lib/bundler/plugin.rb +29 -18
  61. data/lib/bundler/plugin/api.rb +1 -1
  62. data/lib/bundler/plugin/api/source.rb +4 -6
  63. data/lib/bundler/plugin/index.rb +10 -2
  64. data/lib/bundler/plugin/installer.rb +28 -15
  65. data/lib/bundler/psyched_yaml.rb +1 -1
  66. data/lib/bundler/remote_specification.rb +0 -2
  67. data/lib/bundler/resolver.rb +72 -24
  68. data/lib/bundler/resolver/spec_group.rb +3 -2
  69. data/lib/bundler/retry.rb +2 -2
  70. data/lib/bundler/ruby_version.rb +4 -19
  71. data/lib/bundler/rubygems_ext.rb +11 -66
  72. data/lib/bundler/rubygems_gem_installer.rb +1 -1
  73. data/lib/bundler/rubygems_integration.rb +133 -410
  74. data/lib/bundler/runtime.rb +2 -9
  75. data/lib/bundler/settings.rb +22 -52
  76. data/lib/bundler/setup.rb +7 -13
  77. data/lib/bundler/shared_helpers.rb +46 -74
  78. data/lib/bundler/similarity_detector.rb +2 -2
  79. data/lib/bundler/source.rb +5 -5
  80. data/lib/bundler/source/git.rb +24 -17
  81. data/lib/bundler/source/git/git_proxy.rb +38 -41
  82. data/lib/bundler/source/metadata.rb +7 -2
  83. data/lib/bundler/source/path.rb +13 -8
  84. data/lib/bundler/source/rubygems.rb +14 -8
  85. data/lib/bundler/source/rubygems/remote.rb +2 -3
  86. data/lib/bundler/source_list.rb +9 -12
  87. data/lib/bundler/spec_set.rb +1 -6
  88. data/lib/bundler/stub_specification.rb +18 -30
  89. data/lib/bundler/templates/Executable.bundler +22 -13
  90. data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +3 -3
  91. data/lib/bundler/templates/newgem/Gemfile.tt +8 -0
  92. data/lib/bundler/templates/newgem/README.md.tt +4 -3
  93. data/lib/bundler/templates/newgem/newgem.gemspec.tt +2 -18
  94. data/lib/bundler/templates/newgem/test/test_helper.rb.tt +0 -4
  95. data/lib/bundler/templates/newgem/travis.yml.tt +0 -1
  96. data/lib/bundler/ui.rb +3 -3
  97. data/lib/bundler/ui/rg_proxy.rb +1 -1
  98. data/lib/bundler/ui/shell.rb +4 -8
  99. data/lib/bundler/uri_credentials_filter.rb +7 -3
  100. data/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +161 -0
  101. data/lib/bundler/vendor/connection_pool/lib/connection_pool/monotonic_time.rb +66 -0
  102. data/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +176 -0
  103. data/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
  104. data/lib/bundler/vendor/fileutils/lib/fileutils.rb +134 -111
  105. data/lib/bundler/vendor/molinillo/lib/molinillo.rb +6 -6
  106. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +2 -2
  107. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +1 -1
  108. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +1 -1
  109. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +1 -1
  110. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +1 -1
  111. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/log.rb +6 -6
  112. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/set_payload.rb +1 -1
  113. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +1 -1
  114. data/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/vertex.rb +30 -8
  115. data/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
  116. data/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +4 -4
  117. data/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb +2 -2
  118. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +273 -304
  119. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +40 -0
  120. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +53 -0
  121. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +79 -0
  122. data/lib/bundler/vendor/thor/lib/thor.rb +19 -4
  123. data/lib/bundler/vendor/thor/lib/thor/actions.rb +17 -12
  124. data/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +1 -1
  125. data/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +1 -1
  126. data/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +7 -17
  127. data/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +5 -5
  128. data/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +19 -8
  129. data/lib/bundler/vendor/thor/lib/thor/base.rb +51 -39
  130. data/lib/bundler/vendor/thor/lib/thor/command.rb +21 -14
  131. data/lib/bundler/vendor/thor/lib/thor/error.rb +14 -18
  132. data/lib/bundler/vendor/thor/lib/thor/group.rb +1 -1
  133. data/lib/bundler/vendor/thor/lib/thor/invocation.rb +1 -0
  134. data/lib/bundler/vendor/thor/lib/thor/line_editor.rb +2 -2
  135. data/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +1 -1
  136. data/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +6 -6
  137. data/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
  138. data/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -4
  139. data/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +2 -2
  140. data/lib/bundler/vendor/thor/lib/thor/parser/option.rb +20 -7
  141. data/lib/bundler/vendor/thor/lib/thor/parser/options.rb +13 -3
  142. data/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +1 -0
  143. data/lib/bundler/vendor/thor/lib/thor/runner.rb +13 -12
  144. data/lib/bundler/vendor/thor/lib/thor/shell.rb +3 -3
  145. data/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +10 -1
  146. data/lib/bundler/vendor/thor/lib/thor/shell/color.rb +6 -2
  147. data/lib/bundler/vendor/thor/lib/thor/shell/html.rb +3 -3
  148. data/lib/bundler/vendor/thor/lib/thor/util.rb +18 -2
  149. data/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  150. data/lib/bundler/vendor/uri/lib/uri.rb +104 -0
  151. data/lib/bundler/vendor/uri/lib/uri/common.rb +744 -0
  152. data/lib/bundler/vendor/uri/lib/uri/file.rb +94 -0
  153. data/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
  154. data/lib/bundler/vendor/uri/lib/uri/generic.rb +1568 -0
  155. data/lib/bundler/vendor/uri/lib/uri/http.rb +88 -0
  156. data/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
  157. data/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
  158. data/lib/bundler/vendor/uri/lib/uri/ldaps.rb +21 -0
  159. data/lib/bundler/vendor/uri/lib/uri/mailto.rb +294 -0
  160. data/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +546 -0
  161. data/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +125 -0
  162. data/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
  163. data/lib/bundler/vendored_fileutils.rb +1 -6
  164. data/lib/bundler/vendored_molinillo.rb +1 -1
  165. data/lib/bundler/vendored_persistent.rb +7 -5
  166. data/lib/bundler/vendored_thor.rb +2 -2
  167. data/lib/bundler/vendored_uri.rb +4 -0
  168. data/lib/bundler/version.rb +1 -20
  169. data/lib/bundler/version_ranges.rb +51 -5
  170. data/lib/bundler/vlad.rb +3 -3
  171. data/lib/bundler/worker.rb +1 -3
  172. data/lib/bundler/yaml_serializer.rb +2 -3
  173. data/man/bundle-add.1 +10 -2
  174. data/man/bundle-add.1.txt +11 -5
  175. data/man/bundle-add.ronn +7 -1
  176. data/man/bundle-binstubs.1 +2 -2
  177. data/man/bundle-binstubs.1.txt +2 -2
  178. data/man/bundle-binstubs.ronn +1 -1
  179. data/man/bundle-cache.1 +55 -0
  180. data/man/bundle-cache.1.txt +78 -0
  181. data/man/{bundle-package.ronn → bundle-cache.ronn} +15 -15
  182. data/man/bundle-check.1 +1 -1
  183. data/man/bundle-check.1.txt +6 -6
  184. data/man/bundle-clean.1 +1 -1
  185. data/man/bundle-clean.1.txt +1 -1
  186. data/man/bundle-config.1 +35 -35
  187. data/man/bundle-config.1.txt +65 -66
  188. data/man/bundle-config.ronn +41 -39
  189. data/man/bundle-doctor.1 +1 -1
  190. data/man/bundle-doctor.1.txt +1 -1
  191. data/man/bundle-exec.1 +2 -2
  192. data/man/bundle-exec.1.txt +2 -2
  193. data/man/bundle-exec.ronn +1 -1
  194. data/man/bundle-gem.1 +1 -1
  195. data/man/bundle-gem.1.txt +3 -3
  196. data/man/bundle-info.1 +1 -1
  197. data/man/bundle-info.1.txt +1 -1
  198. data/man/bundle-init.1 +1 -1
  199. data/man/bundle-init.1.txt +1 -1
  200. data/man/bundle-inject.1 +1 -1
  201. data/man/bundle-inject.1.txt +1 -1
  202. data/man/bundle-install.1 +8 -5
  203. data/man/bundle-install.1.txt +56 -51
  204. data/man/bundle-install.ronn +9 -4
  205. data/man/bundle-list.1 +1 -1
  206. data/man/bundle-list.1.txt +1 -1
  207. data/man/bundle-lock.1 +1 -1
  208. data/man/bundle-lock.1.txt +16 -16
  209. data/man/bundle-open.1 +1 -1
  210. data/man/bundle-open.1.txt +1 -1
  211. data/man/bundle-outdated.1 +1 -1
  212. data/man/bundle-outdated.1.txt +1 -1
  213. data/man/bundle-platform.1 +1 -1
  214. data/man/bundle-platform.1.txt +1 -1
  215. data/man/bundle-pristine.1 +1 -1
  216. data/man/bundle-pristine.1.txt +1 -1
  217. data/man/bundle-remove.1 +1 -1
  218. data/man/bundle-remove.1.txt +1 -1
  219. data/man/bundle-show.1 +1 -1
  220. data/man/bundle-show.1.txt +1 -1
  221. data/man/bundle-update.1 +4 -4
  222. data/man/bundle-update.1.txt +64 -65
  223. data/man/bundle-update.ronn +3 -3
  224. data/man/bundle-viz.1 +1 -1
  225. data/man/bundle-viz.1.txt +1 -1
  226. data/man/bundle.1 +2 -2
  227. data/man/bundle.1.txt +7 -7
  228. data/man/bundle.ronn +1 -1
  229. data/man/gemfile.5 +12 -15
  230. data/man/gemfile.5.ronn +9 -13
  231. data/man/gemfile.5.txt +103 -107
  232. data/man/index.txt +1 -1
  233. metadata +30 -120
  234. data/exe/bundle_ruby +0 -60
  235. data/lib/bundler/cli/package.rb +0 -49
  236. data/lib/bundler/compatibility_guard.rb +0 -13
  237. data/lib/bundler/gem_remote_fetcher.rb +0 -43
  238. data/lib/bundler/ssl_certs/.document +0 -1
  239. data/lib/bundler/ssl_certs/certificate_manager.rb +0 -66
  240. data/lib/bundler/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem +0 -21
  241. data/lib/bundler/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
  242. data/lib/bundler/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
  243. data/lib/bundler/vendor/fileutils/lib/fileutils/version.rb +0 -5
  244. data/lib/bundler/vendor/net-http-persistent/lib/net/http/faster.rb +0 -27
  245. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/ssl_reuse.rb +0 -129
  246. data/lib/bundler/vendor/thor/lib/thor/core_ext/io_binary_read.rb +0 -12
  247. data/lib/bundler/vendor/thor/lib/thor/core_ext/ordered_hash.rb +0 -129
  248. data/man/bundle-package.1 +0 -55
  249. data/man/bundle-package.1.txt +0 -79
@@ -34,14 +34,7 @@ module Bundler
34
34
  spec.load_paths.reject {|path| $LOAD_PATH.include?(path) }
35
35
  end.reverse.flatten
36
36
 
37
- # See Gem::Specification#add_self_to_load_path (since RubyGems 1.8)
38
- if insert_index = Bundler.rubygems.load_path_insert_index
39
- # Gem directories must come after -I and ENV['RUBYLIB']
40
- $LOAD_PATH.insert(insert_index, *load_paths)
41
- else
42
- # We are probably testing in core, -I and RUBYLIB don't apply
43
- $LOAD_PATH.unshift(*load_paths)
44
- end
37
+ Bundler.rubygems.add_to_load_path(load_paths)
45
38
 
46
39
  setup_manpath
47
40
 
@@ -163,7 +156,7 @@ module Bundler
163
156
  gem_dirs = Dir["#{Gem.dir}/gems/*"]
164
157
  gem_files = Dir["#{Gem.dir}/cache/*.gem"]
165
158
  gemspec_files = Dir["#{Gem.dir}/specifications/*.gemspec"]
166
- extension_dirs = Dir["#{Gem.dir}/extensions/*/*/*"]
159
+ extension_dirs = Dir["#{Gem.dir}/extensions/*/*/*"] + Dir["#{Gem.dir}/bundler/gems/extensions/*/*/*"]
167
160
  spec_gem_paths = []
168
161
  # need to keep git sources around
169
162
  spec_git_paths = @definition.spec_git_paths
@@ -1,12 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "uri"
4
-
5
3
  module Bundler
6
4
  class Settings
7
- autoload :Mirror, "bundler/mirror"
8
- autoload :Mirrors, "bundler/mirror"
9
- autoload :Validator, "bundler/settings/validator"
5
+ autoload :Mirror, File.expand_path("mirror", __dir__)
6
+ autoload :Mirrors, File.expand_path("mirror", __dir__)
7
+ autoload :Validator, File.expand_path("settings/validator", __dir__)
10
8
 
11
9
  BOOL_KEYS = %w[
12
10
  allow_bundler_dependency_conflicts
@@ -17,8 +15,6 @@ module Bundler
17
15
  auto_config_jobs
18
16
  cache_all
19
17
  cache_all_platforms
20
- cache_command_is_package
21
- console_command
22
18
  default_install_uses_path
23
19
  deployment
24
20
  deployment_means_frozen
@@ -29,29 +25,24 @@ module Bundler
29
25
  disable_platform_warnings
30
26
  disable_shared_gems
31
27
  disable_version_check
32
- error_on_stderr
33
28
  force_ruby_platform
34
29
  forget_cli_options
35
30
  frozen
36
31
  gem.coc
37
32
  gem.mit
38
- global_path_appends_ruby_scope
39
33
  global_gem_cache
40
34
  ignore_messages
41
35
  init_gems_rb
42
- list_command
43
- lockfile_upgrade_warning
44
- lockfile_uses_separate_rubygems_sources
45
- major_deprecations
46
36
  no_install
47
37
  no_prune
48
38
  only_update_to_newer_versions
49
39
  path_relative_to_cwd
50
40
  path.system
51
41
  plugins
52
- prefer_gems_rb
42
+ prefer_patch
53
43
  print_only_version_number
54
44
  setup_makes_kernel_gem_public
45
+ silence_deprecations
55
46
  silence_root_warning
56
47
  skip_default_git_sources
57
48
  specific_platform
@@ -59,7 +50,6 @@ module Bundler
59
50
  unlock_source_unlocks_spec
60
51
  update_requires_all_flag
61
52
  use_gem_version_promoter_for_major_updates
62
- viz_command
63
53
  ].freeze
64
54
 
65
55
  NUMBER_KEYS = %w[
@@ -76,7 +66,9 @@ module Bundler
76
66
  ].freeze
77
67
 
78
68
  DEFAULT_CONFIG = {
69
+ :silence_deprecations => false,
79
70
  :disable_version_check => true,
71
+ :prefer_patch => false,
80
72
  :redirect => 5,
81
73
  :retry => 3,
82
74
  :timeout => 10,
@@ -107,18 +99,6 @@ module Bundler
107
99
  temporary(key => value)
108
100
  value
109
101
  else
110
- command = if value.nil?
111
- "bundle config --delete #{key}"
112
- else
113
- "bundle config #{key} #{Array(value).join(":")}"
114
- end
115
-
116
- Bundler::SharedHelpers.major_deprecation 3,\
117
- "flags passed to commands " \
118
- "will no longer be automatically remembered. Instead please set flags " \
119
- "you want remembered between commands using `bundle config " \
120
- "<setting name> <setting value>`, i.e. `#{command}`"
121
-
122
102
  set_local(key, value)
123
103
  end
124
104
  end
@@ -170,7 +150,11 @@ module Bundler
170
150
  end
171
151
 
172
152
  def mirror_for(uri)
173
- uri = URI(uri.to_s) unless uri.is_a?(URI)
153
+ if uri.is_a?(String)
154
+ require_relative "vendored_uri"
155
+ uri = Bundler::URI(uri)
156
+ end
157
+
174
158
  gem_mirrors.for(uri.to_s).uri
175
159
  end
176
160
 
@@ -221,23 +205,22 @@ module Bundler
221
205
  locations
222
206
  end
223
207
 
224
- # for legacy reasons, in Bundler 1, the ruby scope isnt appended when the setting comes from ENV or the global config,
225
- # nor do we respect :disable_shared_gems
208
+ # for legacy reasons, in Bundler 2, we do not respect :disable_shared_gems
226
209
  def path
227
210
  key = key_for(:path)
228
211
  path = ENV[key] || @global_config[key]
229
212
  if path && !@temporary.key?(key) && !@local_config.key?(key)
230
- return Path.new(path, Bundler.feature_flag.global_path_appends_ruby_scope?, false, false)
213
+ return Path.new(path, false, false)
231
214
  end
232
215
 
233
216
  system_path = self["path.system"] || (self[:disable_shared_gems] == false)
234
- Path.new(self[:path], true, system_path, Bundler.feature_flag.default_install_uses_path?)
217
+ Path.new(self[:path], system_path, Bundler.feature_flag.default_install_uses_path?)
235
218
  end
236
219
 
237
- Path = Struct.new(:explicit_path, :append_ruby_scope, :system_path, :default_install_uses_path) do
220
+ Path = Struct.new(:explicit_path, :system_path, :default_install_uses_path) do
238
221
  def path
239
222
  path = base_path
240
- path = File.join(path, Bundler.ruby_scope) if append_ruby_scope && !use_system_gems?
223
+ path = File.join(path, Bundler.ruby_scope) unless use_system_gems?
241
224
  path
242
225
  end
243
226
 
@@ -372,7 +355,7 @@ module Bundler
372
355
  return unless file
373
356
  SharedHelpers.filesystem_access(file) do |p|
374
357
  FileUtils.mkdir_p(p.dirname)
375
- require "bundler/yaml_serializer"
358
+ require_relative "yaml_serializer"
376
359
  p.open("w") {|f| f.write(YAMLSerializer.dump(hash)) }
377
360
  end
378
361
  end
@@ -407,26 +390,12 @@ module Bundler
407
390
  Pathname.new(@root).join("config") if @root
408
391
  end
409
392
 
410
- CONFIG_REGEX = %r{ # rubocop:disable Style/RegexpLiteral
411
- ^
412
- (BUNDLE_.+):\s # the key
413
- (?: !\s)? # optional exclamation mark found with ruby 1.9.3
414
- (['"]?) # optional opening quote
415
- (.* # contents of the value
416
- (?: # optionally, up until the next key
417
- (\n(?!BUNDLE).+)*
418
- )
419
- )
420
- \2 # matching closing quote
421
- $
422
- }xo
423
-
424
393
  def load_config(config_file)
425
394
  return {} if !config_file || ignore_config?
426
395
  SharedHelpers.filesystem_access(config_file, :read) do |file|
427
396
  valid_file = file.exist? && !file.size.zero?
428
397
  return {} unless valid_file
429
- require "bundler/yaml_serializer"
398
+ require_relative "yaml_serializer"
430
399
  YAMLSerializer.load file.read
431
400
  end
432
401
  end
@@ -442,7 +411,7 @@ module Bundler
442
411
  (https?.*?) # URI
443
412
  (\.#{Regexp.union(PER_URI_OPTIONS)})? # optional suffix key
444
413
  \z
445
- /ix
414
+ /ix.freeze
446
415
 
447
416
  # TODO: duplicates Rubygems#normalize_uri
448
417
  # TODO: is this the correct place to validate mirror URIs?
@@ -454,7 +423,8 @@ module Bundler
454
423
  suffix = $3
455
424
  end
456
425
  uri = "#{uri}/" unless uri.end_with?("/")
457
- uri = URI(uri)
426
+ require_relative "vendored_uri"
427
+ uri = Bundler::URI(uri)
458
428
  unless uri.absolute?
459
429
  raise ArgumentError, format("Gem sources must be absolute. You provided '%s'.", uri)
460
430
  end
@@ -1,28 +1,22 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "bundler/shared_helpers"
3
+ require_relative "shared_helpers"
4
4
 
5
5
  if Bundler::SharedHelpers.in_bundle?
6
- require "bundler"
6
+ require_relative "../bundler"
7
7
 
8
8
  if STDOUT.tty? || ENV["BUNDLER_FORCE_TTY"]
9
9
  begin
10
- Bundler.setup
10
+ Bundler.ui.silence { Bundler.setup }
11
11
  rescue Bundler::BundlerError => e
12
- puts "\e[31m#{e.message}\e[0m"
13
- puts e.backtrace.join("\n") if ENV["DEBUG"]
12
+ Bundler.ui.warn "\e[31m#{e.message}\e[0m"
13
+ Bundler.ui.warn e.backtrace.join("\n") if ENV["DEBUG"]
14
14
  if e.is_a?(Bundler::GemNotFound)
15
- puts "\e[33mRun `bundle install` to install missing gems.\e[0m"
15
+ Bundler.ui.warn "\e[33mRun `bundle install` to install missing gems.\e[0m"
16
16
  end
17
17
  exit e.status_code
18
18
  end
19
19
  else
20
- Bundler.setup
20
+ Bundler.ui.silence { Bundler.setup }
21
21
  end
22
-
23
- # Add bundler to the load path after disabling system gems
24
- bundler_lib = File.expand_path("../..", __FILE__)
25
- $LOAD_PATH.unshift(bundler_lib) unless $LOAD_PATH.include?(bundler_lib)
26
-
27
- Bundler.ui = nil
28
22
  end
@@ -1,39 +1,25 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "bundler/compatibility_guard"
4
-
5
3
  require "pathname"
6
4
  require "rbconfig"
7
- require "rubygems"
8
-
9
- require "bundler/version"
10
- require "bundler/constants"
11
- require "bundler/rubygems_integration"
12
- require "bundler/current_ruby"
13
-
14
- module Gem
15
- class Dependency
16
- # This is only needed for RubyGems < 1.4
17
- unless method_defined? :requirement
18
- def requirement
19
- version_requirements
20
- end
21
- end
22
- end
23
- end
5
+
6
+ require_relative "version"
7
+ require_relative "constants"
8
+ require_relative "rubygems_integration"
9
+ require_relative "current_ruby"
24
10
 
25
11
  module Bundler
26
12
  module SharedHelpers
27
13
  def root
28
14
  gemfile = find_gemfile
29
15
  raise GemfileNotFound, "Could not locate Gemfile" unless gemfile
30
- Pathname.new(gemfile).untaint.expand_path.parent
16
+ Pathname.new(gemfile).tap{|x| x.untaint if RUBY_VERSION < "2.7" }.expand_path.parent
31
17
  end
32
18
 
33
19
  def default_gemfile
34
- gemfile = find_gemfile(:order_matters)
20
+ gemfile = find_gemfile
35
21
  raise GemfileNotFound, "Could not locate Gemfile" unless gemfile
36
- Pathname.new(gemfile).untaint.expand_path
22
+ Pathname.new(gemfile).tap{|x| x.untaint if RUBY_VERSION < "2.7" }.expand_path
37
23
  end
38
24
 
39
25
  def default_lockfile
@@ -42,7 +28,7 @@ module Bundler
42
28
  case gemfile.basename.to_s
43
29
  when "gems.rb" then Pathname.new(gemfile.sub(/.rb$/, ".locked"))
44
30
  else Pathname.new("#{gemfile}.lock")
45
- end.untaint
31
+ end.tap{|x| x.untaint if RUBY_VERSION < "2.7" }
46
32
  end
47
33
 
48
34
  def default_bundle_dir
@@ -114,9 +100,7 @@ module Bundler
114
100
  #
115
101
  # @see {Bundler::PermissionError}
116
102
  def filesystem_access(path, action = :write, &block)
117
- # Use block.call instead of yield because of a bug in Ruby 2.2.2
118
- # See https://github.com/bundler/bundler/issues/5341 for details
119
- block.call(path.dup.untaint)
103
+ yield(path.dup.tap{|x| x.untaint if RUBY_VERSION < "2.7" })
120
104
  rescue Errno::EACCES
121
105
  raise PermissionError.new(path, action)
122
106
  rescue Errno::EAGAIN
@@ -140,35 +124,32 @@ module Bundler
140
124
  namespace.const_get(constant_name)
141
125
  end
142
126
 
143
- def major_deprecation(major_version, message)
127
+ def major_deprecation(major_version, message, print_caller_location: false)
128
+ if print_caller_location
129
+ caller_location = caller_locations(2, 2).first
130
+ message = "#{message} (called at #{caller_location.path}:#{caller_location.lineno})"
131
+ end
132
+
144
133
  bundler_major_version = Bundler.bundler_major_version
145
134
  if bundler_major_version > major_version
146
- require "bundler/errors"
147
- raise DeprecatedError, "[REMOVED FROM #{major_version.succ}.0] #{message}"
135
+ require_relative "errors"
136
+ raise DeprecatedError, "[REMOVED] #{message}"
148
137
  end
149
138
 
150
- return unless bundler_major_version >= major_version || prints_major_deprecations?
151
- @major_deprecation_ui ||= Bundler::UI::Shell.new("no-color" => true)
152
- ui = Bundler.ui.is_a?(@major_deprecation_ui.class) ? Bundler.ui : @major_deprecation_ui
153
- ui.warn("[DEPRECATED FOR #{major_version}.0] #{message}")
139
+ return unless bundler_major_version >= major_version && prints_major_deprecations?
140
+ Bundler.ui.warn("[DEPRECATED] #{message}")
154
141
  end
155
142
 
156
143
  def print_major_deprecations!
157
144
  multiple_gemfiles = search_up(".") do |dir|
158
145
  gemfiles = gemfile_names.select {|gf| File.file? File.expand_path(gf, dir) }
159
146
  next if gemfiles.empty?
160
- break false if gemfiles.size == 1
147
+ break gemfiles.size != 1
161
148
  end
162
- if multiple_gemfiles && Bundler.bundler_major_version == 2
163
- Bundler::SharedHelpers.major_deprecation 3, \
164
- "gems.rb and gems.locked will be preferred to Gemfile and Gemfile.lock."
165
- end
166
-
167
- if RUBY_VERSION < "2"
168
- major_deprecation(2, "Bundler will only support ruby >= 2.0, you are running #{RUBY_VERSION}")
169
- end
170
- return if Bundler.rubygems.provides?(">= 2")
171
- major_deprecation(2, "Bundler will only support rubygems >= 2.0, you are running #{Bundler.rubygems.version}")
149
+ return unless multiple_gemfiles
150
+ message = "Multiple gemfiles (gems.rb and Gemfile) detected. " \
151
+ "Make sure you remove Gemfile and Gemfile.lock since bundler is ignoring them in favor of gems.rb and gems.rb.locked."
152
+ Bundler.ui.warn message
172
153
  end
173
154
 
174
155
  def trap(signal, override = false, &block)
@@ -245,16 +226,14 @@ module Bundler
245
226
  raise Bundler::PathError, message
246
227
  end
247
228
 
248
- def find_gemfile(order_matters = false)
229
+ def find_gemfile
249
230
  given = ENV["BUNDLE_GEMFILE"]
250
231
  return given if given && !given.empty?
251
- names = gemfile_names
252
- names.reverse! if order_matters && Bundler.feature_flag.prefer_gems_rb?
253
- find_file(*names)
232
+ find_file(*gemfile_names)
254
233
  end
255
234
 
256
235
  def gemfile_names
257
- ["Gemfile", "gems.rb"]
236
+ ["gems.rb", "Gemfile"]
258
237
  end
259
238
 
260
239
  def find_file(*names)
@@ -271,12 +250,12 @@ module Bundler
271
250
 
272
251
  def search_up(*names)
273
252
  previous = nil
274
- current = File.expand_path(SharedHelpers.pwd).untaint
253
+ current = File.expand_path(SharedHelpers.pwd).tap{|x| x.untaint if RUBY_VERSION < "2.7" }
275
254
 
276
255
  until !File.directory?(current) || current == previous
277
256
  if ENV["BUNDLE_SPEC_RUN"]
278
257
  # avoid stepping above the tmp directory when testing
279
- gemspec = if ENV["BUNDLE_RUBY"] && ENV["BUNDLE_GEM"]
258
+ gemspec = if ENV["GEM_COMMAND"]
280
259
  # for Ruby Core
281
260
  "lib/bundler/bundler.gemspec"
282
261
  else
@@ -308,21 +287,17 @@ module Bundler
308
287
  public :set_env
309
288
 
310
289
  def set_bundle_variables
311
- begin
312
- exe_file = Bundler.rubygems.bin_path("bundler", "bundle", VERSION)
313
- unless File.exist?(exe_file)
314
- exe_file = File.expand_path("../../../exe/bundle", __FILE__)
315
- end
316
- Bundler::SharedHelpers.set_env "BUNDLE_BIN_PATH", exe_file
317
- rescue Gem::GemNotFoundException
318
- exe_file = File.expand_path("../../../exe/bundle", __FILE__)
319
- # for Ruby core repository
320
- exe_file = File.expand_path("../../../../bin/bundle", __FILE__) unless File.exist?(exe_file)
321
- Bundler::SharedHelpers.set_env "BUNDLE_BIN_PATH", exe_file
322
- end
290
+ # bundler exe & lib folders have same root folder, typical gem installation
291
+ exe_file = File.expand_path("../../../exe/bundle", __FILE__)
292
+
293
+ # for Ruby core repository testing
294
+ exe_file = File.expand_path("../../../libexec/bundle", __FILE__) unless File.exist?(exe_file)
323
295
 
324
- # Set BUNDLE_GEMFILE
325
- Bundler::SharedHelpers.set_env "BUNDLE_GEMFILE", find_gemfile(:order_matters).to_s
296
+ # bundler is a default gem, exe path is separate
297
+ exe_file = Bundler.rubygems.bin_path("bundler", "bundle", VERSION) unless File.exist?(exe_file)
298
+
299
+ Bundler::SharedHelpers.set_env "BUNDLE_BIN_PATH", exe_file
300
+ Bundler::SharedHelpers.set_env "BUNDLE_GEMFILE", find_gemfile.to_s
326
301
  Bundler::SharedHelpers.set_env "BUNDLER_VERSION", Bundler::VERSION
327
302
  end
328
303
 
@@ -335,8 +310,9 @@ module Bundler
335
310
 
336
311
  def set_rubyopt
337
312
  rubyopt = [ENV["RUBYOPT"]].compact
338
- return if !rubyopt.empty? && rubyopt.first =~ %r{-rbundler/setup}
339
- rubyopt.unshift %(-rbundler/setup)
313
+ setup_require = "-r#{File.expand_path("setup", __dir__)}"
314
+ return if !rubyopt.empty? && rubyopt.first =~ /#{setup_require}/
315
+ rubyopt.unshift setup_require
340
316
  Bundler::SharedHelpers.set_env "RUBYOPT", rubyopt.join(" ")
341
317
  end
342
318
 
@@ -351,9 +327,6 @@ module Bundler
351
327
  end
352
328
 
353
329
  def clean_load_path
354
- # handle 1.9 where system gems are always on the load path
355
- return unless defined?(::Gem)
356
-
357
330
  bundler_lib = bundler_ruby_lib
358
331
 
359
332
  loaded_gem_paths = Bundler.rubygems.loaded_gem_paths
@@ -373,10 +346,9 @@ module Bundler
373
346
  end
374
347
 
375
348
  def prints_major_deprecations?
376
- require "bundler"
377
- deprecation_release = Bundler::VERSION.split(".").drop(1).include?("99")
378
- return false if !deprecation_release && !Bundler.settings[:major_deprecations]
379
- require "bundler/deprecate"
349
+ require_relative "../bundler"
350
+ return false if Bundler.settings[:silence_deprecations]
351
+ require_relative "deprecate"
380
352
  return false if Bundler::Deprecate.skip
381
353
  true
382
354
  end