bundler 2.6.9 → 2.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1136 -1033
  3. data/README.md +7 -7
  4. data/bundler.gemspec +2 -2
  5. data/lib/bundler/build_metadata.rb +10 -11
  6. data/lib/bundler/checksum.rb +6 -0
  7. data/lib/bundler/cli/cache.rb +0 -1
  8. data/lib/bundler/cli/common.rb +1 -1
  9. data/lib/bundler/cli/config.rb +2 -2
  10. data/lib/bundler/cli/gem.rb +62 -30
  11. data/lib/bundler/cli/install.rb +5 -7
  12. data/lib/bundler/cli/lock.rb +5 -5
  13. data/lib/bundler/cli/outdated.rb +1 -1
  14. data/lib/bundler/cli/show.rb +2 -6
  15. data/lib/bundler/cli/update.rb +3 -3
  16. data/lib/bundler/cli.rb +45 -49
  17. data/lib/bundler/compact_index_client.rb +1 -5
  18. data/lib/bundler/current_ruby.rb +27 -3
  19. data/lib/bundler/definition.rb +97 -81
  20. data/lib/bundler/dependency.rb +1 -1
  21. data/lib/bundler/dsl.rb +34 -24
  22. data/lib/bundler/feature_flag.rb +15 -12
  23. data/lib/bundler/fetcher/dependency.rb +2 -1
  24. data/lib/bundler/fetcher/downloader.rb +33 -7
  25. data/lib/bundler/fetcher.rb +49 -19
  26. data/lib/bundler/friendly_errors.rb +2 -1
  27. data/lib/bundler/index.rb +7 -2
  28. data/lib/bundler/installer.rb +5 -4
  29. data/lib/bundler/lazy_specification.rb +9 -7
  30. data/lib/bundler/lockfile_parser.rb +21 -5
  31. data/lib/bundler/man/bundle-add.1 +1 -1
  32. data/lib/bundler/man/bundle-binstubs.1 +1 -1
  33. data/lib/bundler/man/bundle-cache.1 +1 -1
  34. data/lib/bundler/man/bundle-check.1 +1 -1
  35. data/lib/bundler/man/bundle-clean.1 +1 -1
  36. data/lib/bundler/man/bundle-config.1 +200 -137
  37. data/lib/bundler/man/bundle-config.1.ronn +138 -109
  38. data/lib/bundler/man/bundle-console.1 +1 -1
  39. data/lib/bundler/man/bundle-doctor.1 +43 -4
  40. data/lib/bundler/man/bundle-doctor.1.ronn +48 -4
  41. data/lib/bundler/man/bundle-env.1 +1 -1
  42. data/lib/bundler/man/bundle-exec.1 +1 -1
  43. data/lib/bundler/man/bundle-fund.1 +1 -1
  44. data/lib/bundler/man/bundle-gem.1 +67 -44
  45. data/lib/bundler/man/bundle-gem.1.ronn +8 -4
  46. data/lib/bundler/man/bundle-help.1 +1 -1
  47. data/lib/bundler/man/bundle-info.1 +1 -1
  48. data/lib/bundler/man/bundle-init.1 +1 -1
  49. data/lib/bundler/man/bundle-inject.1 +2 -2
  50. data/lib/bundler/man/bundle-inject.1.ronn +1 -1
  51. data/lib/bundler/man/bundle-install.1 +4 -4
  52. data/lib/bundler/man/bundle-install.1.ronn +3 -4
  53. data/lib/bundler/man/bundle-issue.1 +1 -1
  54. data/lib/bundler/man/bundle-licenses.1 +1 -1
  55. data/lib/bundler/man/bundle-list.1 +1 -1
  56. data/lib/bundler/man/bundle-lock.1 +1 -1
  57. data/lib/bundler/man/bundle-open.1 +1 -1
  58. data/lib/bundler/man/bundle-outdated.1 +1 -1
  59. data/lib/bundler/man/bundle-platform.1 +1 -1
  60. data/lib/bundler/man/bundle-plugin.1 +40 -15
  61. data/lib/bundler/man/bundle-plugin.1.ronn +44 -15
  62. data/lib/bundler/man/bundle-pristine.1 +1 -1
  63. data/lib/bundler/man/bundle-remove.1 +1 -1
  64. data/lib/bundler/man/bundle-show.1 +1 -1
  65. data/lib/bundler/man/bundle-update.1 +5 -5
  66. data/lib/bundler/man/bundle-update.1.ronn +4 -4
  67. data/lib/bundler/man/bundle-version.1 +1 -1
  68. data/lib/bundler/man/bundle-viz.1 +1 -1
  69. data/lib/bundler/man/bundle.1 +1 -1
  70. data/lib/bundler/man/gemfile.5 +1 -1
  71. data/lib/bundler/match_platform.rb +31 -12
  72. data/lib/bundler/materialization.rb +2 -2
  73. data/lib/bundler/resolver/package.rb +2 -1
  74. data/lib/bundler/resolver.rb +1 -3
  75. data/lib/bundler/rubygems_ext.rb +116 -120
  76. data/lib/bundler/rubygems_integration.rb +11 -6
  77. data/lib/bundler/runtime.rb +1 -1
  78. data/lib/bundler/self_manager.rb +32 -42
  79. data/lib/bundler/settings/validator.rb +0 -23
  80. data/lib/bundler/settings.rb +4 -6
  81. data/lib/bundler/shared_helpers.rb +6 -4
  82. data/lib/bundler/source/gemspec.rb +4 -0
  83. data/lib/bundler/source/git/git_proxy.rb +3 -3
  84. data/lib/bundler/source/path.rb +9 -0
  85. data/lib/bundler/source_list.rb +1 -5
  86. data/lib/bundler/source_map.rb +1 -1
  87. data/lib/bundler/spec_set.rb +7 -3
  88. data/lib/bundler/templates/Executable +0 -11
  89. data/lib/bundler/templates/newgem/github/workflows/main.yml.tt +2 -0
  90. data/lib/bundler/templates/newgem/newgem.gemspec.tt +6 -5
  91. data/lib/bundler/ui/shell.rb +2 -2
  92. data/lib/bundler/vendor/net-http-persistent/README.rdoc +1 -1
  93. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +2 -1
  94. data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +81 -42
  95. data/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +42 -6
  96. data/lib/bundler/vendor/thor/lib/thor/parser/options.rb +1 -1
  97. data/lib/bundler/vendor/thor/lib/thor/runner.rb +1 -1
  98. data/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +3 -7
  99. data/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
  100. data/lib/bundler/version.rb +10 -2
  101. data/lib/bundler/worker.rb +1 -1
  102. data/lib/bundler.rb +14 -12
  103. metadata +4 -14
  104. data/lib/bundler/gem_helpers.rb +0 -144
  105. data/lib/bundler/templates/Executable.bundler +0 -109
  106. data/lib/bundler/vendor/connection_pool/.document +0 -1
  107. data/lib/bundler/vendor/fileutils/.document +0 -1
  108. data/lib/bundler/vendor/net-http-persistent/.document +0 -1
  109. data/lib/bundler/vendor/pub_grub/.document +0 -1
  110. data/lib/bundler/vendor/securerandom/.document +0 -1
  111. data/lib/bundler/vendor/thor/.document +0 -1
  112. data/lib/bundler/vendor/tsort/.document +0 -1
  113. data/lib/bundler/vendor/uri/.document +0 -1
@@ -88,7 +88,7 @@ module Bundler
88
88
 
89
89
  @threads = Array.new(@size) do |i|
90
90
  Thread.start { process_queue(i) }.tap do |thread|
91
- thread.name = "#{name} Worker ##{i}" if thread.respond_to?(:name=)
91
+ thread.name = "#{name} Worker ##{i}"
92
92
  end
93
93
  rescue ThreadError => e
94
94
  creation_errors << e
data/lib/bundler.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "bundler/rubygems_ext"
3
4
  require_relative "bundler/vendored_fileutils"
4
5
  require "pathname"
5
6
  require "rbconfig"
@@ -7,7 +8,6 @@ require "rbconfig"
7
8
  require_relative "bundler/errors"
8
9
  require_relative "bundler/environment_preserver"
9
10
  require_relative "bundler/plugin"
10
- require_relative "bundler/rubygems_ext"
11
11
  require_relative "bundler/rubygems_integration"
12
12
  require_relative "bundler/version"
13
13
  require_relative "bundler/current_ruby"
@@ -53,7 +53,6 @@ module Bundler
53
53
  autoload :FeatureFlag, File.expand_path("bundler/feature_flag", __dir__)
54
54
  autoload :FREEBSD, File.expand_path("bundler/constants", __dir__)
55
55
  autoload :GemHelper, File.expand_path("bundler/gem_helper", __dir__)
56
- autoload :GemHelpers, File.expand_path("bundler/gem_helpers", __dir__)
57
56
  autoload :GemVersionPromoter, File.expand_path("bundler/gem_version_promoter", __dir__)
58
57
  autoload :Graph, File.expand_path("bundler/graph", __dir__)
59
58
  autoload :Index, File.expand_path("bundler/index", __dir__)
@@ -114,13 +113,13 @@ module Bundler
114
113
  end
115
114
 
116
115
  def configured_bundle_path
117
- @configured_bundle_path ||= settings.path.tap(&:validate!)
116
+ @configured_bundle_path ||= Bundler.settings.path.tap(&:validate!)
118
117
  end
119
118
 
120
119
  # Returns absolute location of where binstubs are installed to.
121
120
  def bin_path
122
121
  @bin_path ||= begin
123
- path = settings[:bin] || "bin"
122
+ path = Bundler.settings[:bin] || "bin"
124
123
  path = Pathname.new(path).expand_path(root).expand_path
125
124
  mkdir_p(path)
126
125
  path
@@ -174,14 +173,14 @@ module Bundler
174
173
  self_manager.restart_with_locked_bundler_if_needed
175
174
  end
176
175
 
177
- # Automatically install dependencies if Bundler.settings[:auto_install] exists.
176
+ # Automatically install dependencies if settings[:auto_install] exists.
178
177
  # This is set through config cmd `bundle config set --global auto_install 1`.
179
178
  #
180
179
  # Note that this method `nil`s out the global Definition object, so it
181
180
  # should be called first, before you instantiate anything like an
182
181
  # `Installer` that'll keep a reference to the old one instead.
183
182
  def auto_install
184
- return unless settings[:auto_install]
183
+ return unless Bundler.settings[:auto_install]
185
184
 
186
185
  begin
187
186
  definition.specs
@@ -239,10 +238,10 @@ module Bundler
239
238
  end
240
239
 
241
240
  def frozen_bundle?
242
- frozen = settings[:frozen]
241
+ frozen = Bundler.settings[:frozen]
243
242
  return frozen unless frozen.nil?
244
243
 
245
- settings[:deployment]
244
+ Bundler.settings[:deployment]
246
245
  end
247
246
 
248
247
  def locked_gems
@@ -343,7 +342,7 @@ module Bundler
343
342
 
344
343
  def app_cache(custom_path = nil)
345
344
  path = custom_path || root
346
- Pathname.new(path).join(settings.app_cache_path)
345
+ Pathname.new(path).join(Bundler.settings.app_cache_path)
347
346
  end
348
347
 
349
348
  def tmp(name = Process.pid.to_s)
@@ -455,10 +454,14 @@ module Bundler
455
454
  end
456
455
 
457
456
  def local_platform
458
- return Gem::Platform::RUBY if settings[:force_ruby_platform]
457
+ return Gem::Platform::RUBY if Bundler.settings[:force_ruby_platform]
459
458
  Gem::Platform.local
460
459
  end
461
460
 
461
+ def generic_local_platform
462
+ Gem::Platform.generic(local_platform)
463
+ end
464
+
462
465
  def default_gemfile
463
466
  SharedHelpers.default_gemfile
464
467
  end
@@ -564,7 +567,7 @@ module Bundler
564
567
  end
565
568
 
566
569
  def feature_flag
567
- @feature_flag ||= FeatureFlag.new(VERSION)
570
+ @feature_flag ||= FeatureFlag.new(Bundler.settings[:simulate_version] || VERSION)
568
571
  end
569
572
 
570
573
  def reset!
@@ -580,7 +583,6 @@ module Bundler
580
583
 
581
584
  def reset_paths!
582
585
  @bin_path = nil
583
- @bundler_major_version = nil
584
586
  @bundle_path = nil
585
587
  @configure = nil
586
588
  @configured_bundle_path = nil
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bundler
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.9
4
+ version: 2.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - André Arko
@@ -104,7 +104,6 @@ files:
104
104
  - lib/bundler/force_platform.rb
105
105
  - lib/bundler/friendly_errors.rb
106
106
  - lib/bundler/gem_helper.rb
107
- - lib/bundler/gem_helpers.rb
108
107
  - lib/bundler/gem_tasks.rb
109
108
  - lib/bundler/gem_version_promoter.rb
110
109
  - lib/bundler/graph.rb
@@ -242,7 +241,6 @@ files:
242
241
  - lib/bundler/stub_specification.rb
243
242
  - lib/bundler/templates/.document
244
243
  - lib/bundler/templates/Executable
245
- - lib/bundler/templates/Executable.bundler
246
244
  - lib/bundler/templates/Executable.standalone
247
245
  - lib/bundler/templates/Gemfile
248
246
  - lib/bundler/templates/newgem/CHANGELOG.md.tt
@@ -285,22 +283,18 @@ files:
285
283
  - lib/bundler/uri_credentials_filter.rb
286
284
  - lib/bundler/uri_normalizer.rb
287
285
  - lib/bundler/vendor/.document
288
- - lib/bundler/vendor/connection_pool/.document
289
286
  - lib/bundler/vendor/connection_pool/LICENSE
290
287
  - lib/bundler/vendor/connection_pool/lib/connection_pool.rb
291
288
  - lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb
292
289
  - lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb
293
290
  - lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb
294
- - lib/bundler/vendor/fileutils/.document
295
291
  - lib/bundler/vendor/fileutils/COPYING
296
292
  - lib/bundler/vendor/fileutils/lib/fileutils.rb
297
- - lib/bundler/vendor/net-http-persistent/.document
298
293
  - lib/bundler/vendor/net-http-persistent/README.rdoc
299
294
  - lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb
300
295
  - lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb
301
296
  - lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb
302
297
  - lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb
303
- - lib/bundler/vendor/pub_grub/.document
304
298
  - lib/bundler/vendor/pub_grub/LICENSE.txt
305
299
  - lib/bundler/vendor/pub_grub/lib/pub_grub.rb
306
300
  - lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb
@@ -319,10 +313,8 @@ files:
319
313
  - lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb
320
314
  - lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb
321
315
  - lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb
322
- - lib/bundler/vendor/securerandom/.document
323
316
  - lib/bundler/vendor/securerandom/COPYING
324
317
  - lib/bundler/vendor/securerandom/lib/securerandom.rb
325
- - lib/bundler/vendor/thor/.document
326
318
  - lib/bundler/vendor/thor/LICENSE.md
327
319
  - lib/bundler/vendor/thor/lib/thor.rb
328
320
  - lib/bundler/vendor/thor/lib/thor/actions.rb
@@ -359,10 +351,8 @@ files:
359
351
  - lib/bundler/vendor/thor/lib/thor/shell/wrapped_printer.rb
360
352
  - lib/bundler/vendor/thor/lib/thor/util.rb
361
353
  - lib/bundler/vendor/thor/lib/thor/version.rb
362
- - lib/bundler/vendor/tsort/.document
363
354
  - lib/bundler/vendor/tsort/LICENSE.txt
364
355
  - lib/bundler/vendor/tsort/lib/tsort.rb
365
- - lib/bundler/vendor/uri/.document
366
356
  - lib/bundler/vendor/uri/COPYING
367
357
  - lib/bundler/vendor/uri/lib/uri.rb
368
358
  - lib/bundler/vendor/uri/lib/uri/common.rb
@@ -407,14 +397,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
407
397
  requirements:
408
398
  - - ">="
409
399
  - !ruby/object:Gem::Version
410
- version: 3.1.0
400
+ version: 3.2.0
411
401
  required_rubygems_version: !ruby/object:Gem::Requirement
412
402
  requirements:
413
403
  - - ">="
414
404
  - !ruby/object:Gem::Version
415
- version: 3.3.3
405
+ version: 3.4.1
416
406
  requirements: []
417
- rubygems_version: 3.6.9
407
+ rubygems_version: 3.7.2
418
408
  specification_version: 4
419
409
  summary: The best way to manage your application's dependencies
420
410
  test_files: []
@@ -1,144 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Bundler
4
- module GemHelpers
5
- GENERIC_CACHE = { Gem::Platform::RUBY => Gem::Platform::RUBY } # rubocop:disable Style/MutableConstant
6
- GENERICS = [
7
- Gem::Platform::JAVA,
8
- *Gem::Platform::WINDOWS,
9
- ].freeze
10
-
11
- def generic(p)
12
- GENERIC_CACHE[p] ||= begin
13
- found = GENERICS.find do |match|
14
- p === match
15
- end
16
- found || Gem::Platform::RUBY
17
- end
18
- end
19
- module_function :generic
20
-
21
- def generic_local_platform
22
- generic(local_platform)
23
- end
24
- module_function :generic_local_platform
25
-
26
- def local_platform
27
- Bundler.local_platform
28
- end
29
- module_function :local_platform
30
-
31
- def generic_local_platform_is_ruby?
32
- generic_local_platform == Gem::Platform::RUBY
33
- end
34
- module_function :generic_local_platform_is_ruby?
35
-
36
- def platform_specificity_match(spec_platform, user_platform)
37
- spec_platform = Gem::Platform.new(spec_platform)
38
-
39
- PlatformMatch.specificity_score(spec_platform, user_platform)
40
- end
41
- module_function :platform_specificity_match
42
-
43
- def select_all_platform_match(specs, platform, force_ruby: false, prefer_locked: false)
44
- matching = if force_ruby
45
- specs.select {|spec| spec.match_platform(Gem::Platform::RUBY) && spec.force_ruby_platform! }
46
- else
47
- specs.select {|spec| spec.match_platform(platform) }
48
- end
49
-
50
- if prefer_locked
51
- locked_originally = matching.select {|spec| spec.is_a?(LazySpecification) }
52
- return locked_originally if locked_originally.any?
53
- end
54
-
55
- matching
56
- end
57
- module_function :select_all_platform_match
58
-
59
- def select_best_platform_match(specs, platform, force_ruby: false, prefer_locked: false)
60
- matching = select_all_platform_match(specs, platform, force_ruby: force_ruby, prefer_locked: prefer_locked)
61
-
62
- sort_and_filter_best_platform_match(matching, platform)
63
- end
64
- module_function :select_best_platform_match
65
-
66
- def select_best_local_platform_match(specs, force_ruby: false)
67
- matching = select_all_platform_match(specs, local_platform, force_ruby: force_ruby).filter_map(&:materialized_for_installation)
68
-
69
- sort_best_platform_match(matching, local_platform)
70
- end
71
- module_function :select_best_local_platform_match
72
-
73
- def sort_and_filter_best_platform_match(matching, platform)
74
- return matching if matching.one?
75
-
76
- exact = matching.select {|spec| spec.platform == platform }
77
- return exact if exact.any?
78
-
79
- sorted_matching = sort_best_platform_match(matching, platform)
80
- exemplary_spec = sorted_matching.first
81
-
82
- sorted_matching.take_while {|spec| same_specificity(platform, spec, exemplary_spec) && same_deps(spec, exemplary_spec) }
83
- end
84
- module_function :sort_and_filter_best_platform_match
85
-
86
- def sort_best_platform_match(matching, platform)
87
- matching.sort_by {|spec| platform_specificity_match(spec.platform, platform) }
88
- end
89
- module_function :sort_best_platform_match
90
-
91
- class PlatformMatch
92
- def self.specificity_score(spec_platform, user_platform)
93
- return -1 if spec_platform == user_platform
94
- return 1_000_000 if spec_platform.nil? || spec_platform == Gem::Platform::RUBY || user_platform == Gem::Platform::RUBY
95
-
96
- os_match(spec_platform, user_platform) +
97
- cpu_match(spec_platform, user_platform) * 10 +
98
- platform_version_match(spec_platform, user_platform) * 100
99
- end
100
-
101
- def self.os_match(spec_platform, user_platform)
102
- if spec_platform.os == user_platform.os
103
- 0
104
- else
105
- 1
106
- end
107
- end
108
-
109
- def self.cpu_match(spec_platform, user_platform)
110
- if spec_platform.cpu == user_platform.cpu
111
- 0
112
- elsif spec_platform.cpu == "arm" && user_platform.cpu.to_s.start_with?("arm")
113
- 0
114
- elsif spec_platform.cpu.nil? || spec_platform.cpu == "universal"
115
- 1
116
- else
117
- 2
118
- end
119
- end
120
-
121
- def self.platform_version_match(spec_platform, user_platform)
122
- if spec_platform.version == user_platform.version
123
- 0
124
- elsif spec_platform.version.nil?
125
- 1
126
- else
127
- 2
128
- end
129
- end
130
- end
131
-
132
- def same_specificity(platform, spec, exemplary_spec)
133
- platform_specificity_match(spec.platform, platform) == platform_specificity_match(exemplary_spec.platform, platform)
134
- end
135
- module_function :same_specificity
136
-
137
- def same_deps(spec, exemplary_spec)
138
- same_runtime_deps = spec.dependencies.sort == exemplary_spec.dependencies.sort
139
- same_metadata_deps = spec.required_ruby_version == exemplary_spec.required_ruby_version && spec.required_rubygems_version == exemplary_spec.required_rubygems_version
140
- same_runtime_deps && same_metadata_deps
141
- end
142
- module_function :same_deps
143
- end
144
- end
@@ -1,109 +0,0 @@
1
- #!/usr/bin/env <%= Bundler.settings[:shebang] || RbConfig::CONFIG["ruby_install_name"] %>
2
- # frozen_string_literal: true
3
-
4
- #
5
- # This file was generated by Bundler.
6
- #
7
- # The application '<%= executable %>' is installed as part of a gem, and
8
- # this file is here to facilitate running it.
9
- #
10
-
11
- require "rubygems"
12
-
13
- m = Module.new do
14
- module_function
15
-
16
- def invoked_as_script?
17
- File.expand_path($0) == File.expand_path(__FILE__)
18
- end
19
-
20
- def env_var_version
21
- ENV["BUNDLER_VERSION"]
22
- end
23
-
24
- def cli_arg_version
25
- return unless invoked_as_script? # don't want to hijack other binstubs
26
- return unless "update".start_with?(ARGV.first || " ") # must be running `bundle update`
27
- bundler_version = nil
28
- update_index = nil
29
- ARGV.each_with_index do |a, i|
30
- if update_index && update_index.succ == i && a.match?(Gem::Version::ANCHORED_VERSION_PATTERN)
31
- bundler_version = a
32
- end
33
- next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/
34
- bundler_version = $1
35
- update_index = i
36
- end
37
- bundler_version
38
- end
39
-
40
- def gemfile
41
- gemfile = ENV["BUNDLE_GEMFILE"]
42
- return gemfile if gemfile && !gemfile.empty?
43
-
44
- File.expand_path("<%= relative_gemfile_path %>", __dir__)
45
- end
46
-
47
- def lockfile
48
- lockfile =
49
- case File.basename(gemfile)
50
- when "gems.rb" then gemfile.sub(/\.rb$/, ".locked")
51
- else "#{gemfile}.lock"
52
- end
53
- File.expand_path(lockfile)
54
- end
55
-
56
- def lockfile_version
57
- return unless File.file?(lockfile)
58
- lockfile_contents = File.read(lockfile)
59
- return unless lockfile_contents =~ /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/
60
- Regexp.last_match(1)
61
- end
62
-
63
- def bundler_requirement
64
- @bundler_requirement ||=
65
- env_var_version ||
66
- cli_arg_version ||
67
- bundler_requirement_for(lockfile_version)
68
- end
69
-
70
- def bundler_requirement_for(version)
71
- return "#{Gem::Requirement.default}.a" unless version
72
-
73
- bundler_gem_version = Gem::Version.new(version)
74
-
75
- bundler_gem_version.approximate_recommendation
76
- end
77
-
78
- def load_bundler!
79
- ENV["BUNDLE_GEMFILE"] ||= gemfile
80
-
81
- activate_bundler
82
- end
83
-
84
- def activate_bundler
85
- gem_error = activation_error_handling do
86
- gem "bundler", bundler_requirement
87
- end
88
- return if gem_error.nil?
89
- require_error = activation_error_handling do
90
- require "bundler/version"
91
- end
92
- return if require_error.nil? && Gem::Requirement.new(bundler_requirement).satisfied_by?(Gem::Version.new(Bundler::VERSION))
93
- warn "Activating bundler (#{bundler_requirement}) failed:\n#{gem_error.message}\n\nTo install the version of bundler this project requires, run `gem install bundler -v '#{bundler_requirement}'`"
94
- exit 42
95
- end
96
-
97
- def activation_error_handling
98
- yield
99
- nil
100
- rescue StandardError, LoadError => e
101
- e
102
- end
103
- end
104
-
105
- m.load_bundler!
106
-
107
- if m.invoked_as_script?
108
- load Gem.bin_path("<%= spec.name %>", "<%= executable %>")
109
- end
@@ -1 +0,0 @@
1
- # Vendored files do not need to be documented
@@ -1 +0,0 @@
1
- # Vendored files do not need to be documented
@@ -1 +0,0 @@
1
- # Vendored files do not need to be documented
@@ -1 +0,0 @@
1
- # Vendored files do not need to be documented
@@ -1 +0,0 @@
1
- # Vendored files do not need to be documented
@@ -1 +0,0 @@
1
- # Vendored files do not need to be documented
@@ -1 +0,0 @@
1
- # Vendored files do not need to be documented
@@ -1 +0,0 @@
1
- # Vendored files do not need to be documented