bundler 2.3.4 → 2.3.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '07833d3c4b77a6566dce7964d5a9aa188967a39df2a81a78d145de9f27159019'
4
- data.tar.gz: eb3e37e52c9ec73e4f59a63fca82d09b0469910a7f01f86ed734e4799926856c
3
+ metadata.gz: 5b0d885e627a0cd83ab152b691c763806970a6cc0b3660a58cada89848613b3c
4
+ data.tar.gz: be879e2e5d4bc4a5bdc9c34d12e1dd4644ca6a15a3cf109100a7717e4b84d7bf
5
5
  SHA512:
6
- metadata.gz: 3c58cbd37d07fff2205a51f8157146d80eca0f155c1ec5d7396801bc5bc482767ec7e418e6549d7fed88904ab7fa9588b47f36b8bce8f2176dbe2062ffcd397b
7
- data.tar.gz: '0118cc34cd853d7b51d116eb88d692b2637ab894a8029ee9d853ee2824705b55d6685ecfeaf51dd102fe8361afef0e606a581a511beaf91a92fef50403a56cec'
6
+ metadata.gz: 5054958fd89192f4cf35e74b5c779e394e23e991f966cca3b4a4961ece6181ff0f0c7c17bfb52a0cd956ad45a110ea75597a96865d2f17f2dff9f4bcd5b84113
7
+ data.tar.gz: c8ec46b4b31b44b45f72f03ac076a8626d6075ac38069b676deb696051d220e761305a0f1c8432ef9b2556095eb2de4ce23fc42424ac453034e0cc80e88d4588
data/CHANGELOG.md CHANGED
@@ -1,3 +1,16 @@
1
+ # 2.3.5 (January 12, 2022)
2
+
3
+ ## Enhancements:
4
+
5
+ - Make `bundle update --bundler` actually lock to the latest bundler version (even if not yet installed) [#5182](https://github.com/rubygems/rubygems/pull/5182)
6
+ - Use thor-1.2.1 [#5260](https://github.com/rubygems/rubygems/pull/5260)
7
+ - Exclude bin directory for newgem template [#5259](https://github.com/rubygems/rubygems/pull/5259)
8
+
9
+ ## Bug fixes:
10
+
11
+ - Fix metadata requirements being bypassed when custom gem servers are used [#5256](https://github.com/rubygems/rubygems/pull/5256)
12
+ - Fix `rake build:checksum` writing checksum of package path, not package contents [#5250](https://github.com/rubygems/rubygems/pull/5250)
13
+
1
14
  # 2.3.4 (December 29, 2021)
2
15
 
3
16
  ## Enhancements:
@@ -4,8 +4,8 @@ module Bundler
4
4
  # Represents metadata from when the Bundler gem was built.
5
5
  module BuildMetadata
6
6
  # begin ivars
7
- @built_at = "2021-12-29".freeze
8
- @git_commit_sha = "2296a0d6cc".freeze
7
+ @built_at = "2022-01-12".freeze
8
+ @git_commit_sha = "a13d015fcb".freeze
9
9
  @release = true
10
10
  # end ivars
11
11
 
@@ -11,12 +11,16 @@ module Bundler
11
11
  def run
12
12
  Bundler.ui.level = "warn" if options[:quiet]
13
13
 
14
+ update_bundler = options[:bundler]
15
+
16
+ Bundler.self_manager.update_bundler_and_restart_with_it_if_needed(update_bundler) if update_bundler
17
+
14
18
  Plugin.gemfile_install(Bundler.default_gemfile) if Bundler.feature_flag.plugins?
15
19
 
16
20
  sources = Array(options[:source])
17
21
  groups = Array(options[:group]).map(&:to_sym)
18
22
 
19
- full_update = gems.empty? && sources.empty? && groups.empty? && !options[:ruby] && !options[:bundler]
23
+ full_update = gems.empty? && sources.empty? && groups.empty? && !options[:ruby] && !update_bundler
20
24
 
21
25
  if full_update && !options[:all]
22
26
  if Bundler.feature_flag.update_requires_all_flag?
@@ -49,7 +53,7 @@ module Bundler
49
53
 
50
54
  Bundler.definition(:gems => gems, :sources => sources, :ruby => options[:ruby],
51
55
  :conservative => conservative,
52
- :bundler => options[:bundler])
56
+ :bundler => update_bundler)
53
57
  end
54
58
 
55
59
  Bundler::CLI::Common.configure_gem_version_promoter(Bundler.definition, options)
data/lib/bundler/cli.rb CHANGED
@@ -809,17 +809,10 @@ module Bundler
809
809
 
810
810
  current = Gem::Version.new(VERSION)
811
811
  return if current >= latest
812
- latest_installed = Bundler.rubygems.find_name("bundler").map(&:version).max
813
812
 
814
- installation = "To install the latest version, run `gem install bundler#{" --pre" if latest.prerelease?}`"
815
- if latest_installed && latest_installed > current
816
- suggestion = "To update to the most recent installed version (#{latest_installed}), run `bundle update --bundler`"
817
- suggestion = "#{installation}\n#{suggestion}" if latest_installed < latest
818
- else
819
- suggestion = installation
820
- end
821
-
822
- Bundler.ui.warn "The latest bundler is #{latest}, but you are currently running #{current}.\n#{suggestion}"
813
+ Bundler.ui.warn \
814
+ "The latest bundler is #{latest}, but you are currently running #{current}.\n" \
815
+ "To update to the most recent version, run `bundle update --bundler`"
823
816
  rescue RuntimeError
824
817
  nil
825
818
  end
@@ -76,15 +76,6 @@ module Bundler
76
76
  end
77
77
  end
78
78
 
79
- def specific_dependency(name, version, platform)
80
- pattern = [version, platform].compact.join("-")
81
- return nil if pattern.empty?
82
-
83
- gem_lines = info_path(name).read
84
- gem_line = gem_lines[/^#{Regexp.escape(pattern)}\b.*/, 0]
85
- gem_line ? parse_gem(gem_line) : nil
86
- end
87
-
88
79
  private
89
80
 
90
81
  def lines(path)
@@ -73,12 +73,6 @@ module Bundler
73
73
  end.flatten(1)
74
74
  end
75
75
 
76
- def spec(name, version, platform = nil)
77
- Bundler::CompactIndexClient.debug { "spec(name = #{name}, version = #{version}, platform = #{platform})" }
78
- update_info(name)
79
- @cache.specific_dependency(name, version, platform)
80
- end
81
-
82
76
  def update_and_parse_checksums!
83
77
  Bundler::CompactIndexClient.debug { "update_and_parse_checksums!" }
84
78
  return @info_checksums_by_name if @parsed_checksums
@@ -309,14 +309,6 @@ module Bundler
309
309
  end
310
310
  end
311
311
 
312
- def locked_bundler_version
313
- if @locked_bundler_version && @locked_bundler_version < Gem::Version.new(Bundler::VERSION)
314
- new_version = Bundler::VERSION
315
- end
316
-
317
- new_version || @locked_bundler_version || Bundler::VERSION
318
- end
319
-
320
312
  def locked_ruby_version
321
313
  return unless ruby_version
322
314
  if @unlock[:ruby] || !@locked_ruby_version
@@ -5,14 +5,15 @@ module Bundler
5
5
  class EndpointSpecification < Gem::Specification
6
6
  include MatchPlatform
7
7
 
8
- attr_reader :name, :version, :platform, :required_rubygems_version, :required_ruby_version, :checksum
8
+ attr_reader :name, :version, :platform, :checksum
9
9
  attr_accessor :source, :remote, :dependencies
10
10
 
11
- def initialize(name, version, platform, dependencies, metadata = nil)
11
+ def initialize(name, version, platform, spec_fetcher, dependencies, metadata = nil)
12
12
  super()
13
13
  @name = name
14
14
  @version = Gem::Version.create version
15
15
  @platform = platform
16
+ @spec_fetcher = spec_fetcher
16
17
  @dependencies = dependencies.map {|dep, reqs| build_dependency(dep, reqs) }
17
18
 
18
19
  @loaded_from = nil
@@ -21,6 +22,14 @@ module Bundler
21
22
  parse_metadata(metadata)
22
23
  end
23
24
 
25
+ def required_ruby_version
26
+ @required_ruby_version ||= _remote_specification.required_ruby_version
27
+ end
28
+
29
+ def required_rubygems_version
30
+ @required_rubygems_version ||= _remote_specification.required_rubygems_version
31
+ end
32
+
24
33
  def fetch_platform
25
34
  @platform
26
35
  end
@@ -105,12 +114,21 @@ module Bundler
105
114
 
106
115
  private
107
116
 
117
+ def _remote_specification
118
+ @_remote_specification ||= @spec_fetcher.fetch_spec([@name, @version, @platform])
119
+ end
120
+
108
121
  def local_specification_path
109
122
  "#{base_dir}/specifications/#{full_name}.gemspec"
110
123
  end
111
124
 
112
125
  def parse_metadata(data)
113
- return unless data
126
+ unless data
127
+ @required_ruby_version = nil
128
+ @required_rubygems_version = nil
129
+ return
130
+ end
131
+
114
132
  data.each do |k, v|
115
133
  next unless v
116
134
  case k.to_s
@@ -57,16 +57,6 @@ module Bundler
57
57
  gem_info
58
58
  end
59
59
 
60
- def fetch_spec(spec)
61
- spec -= [nil, "ruby", ""]
62
- contents = compact_index_client.spec(*spec)
63
- return nil if contents.nil?
64
- contents.unshift(spec.first)
65
- contents[3].map! {|d| Gem::Dependency.new(*d) }
66
- EndpointSpecification.new(*contents)
67
- end
68
- compact_index_request :fetch_spec
69
-
70
60
  def available?
71
61
  unless SharedHelpers.md5_available?
72
62
  Bundler.ui.debug("FIPS mode is enabled, bundler can't use the CompactIndex API")
@@ -21,32 +21,6 @@ module Bundler
21
21
  raise HTTPError, "Could not fetch specs from #{display_uri} due to underlying error <#{e.message}>"
22
22
  end
23
23
  end
24
-
25
- def fetch_spec(spec)
26
- spec -= [nil, "ruby", ""]
27
- spec_file_name = "#{spec.join "-"}.gemspec"
28
-
29
- uri = Bundler::URI.parse("#{remote_uri}#{Gem::MARSHAL_SPEC_DIR}#{spec_file_name}.rz")
30
- if uri.scheme == "file"
31
- path = Bundler.rubygems.correct_for_windows_path(uri.path)
32
- Bundler.load_marshal Bundler.rubygems.inflate(Gem.read_binary(path))
33
- elsif cached_spec_path = gemspec_cached_path(spec_file_name)
34
- Bundler.load_gemspec(cached_spec_path)
35
- else
36
- Bundler.load_marshal Bundler.rubygems.inflate(downloader.fetch(uri).body)
37
- end
38
- rescue MarshalError
39
- raise HTTPError, "Gemspec #{spec} contained invalid data.\n" \
40
- "Your network or your gem server is probably having issues right now."
41
- end
42
-
43
- private
44
-
45
- # cached gem specification path, if one exists
46
- def gemspec_cached_path(spec_file_name)
47
- paths = Bundler.rubygems.spec_cache_dirs.map {|dir| File.join(dir, spec_file_name) }
48
- paths.find {|path| File.file? path }
49
- end
50
24
  end
51
25
  end
52
26
  end
@@ -129,17 +129,15 @@ module Bundler
129
129
  specs = fetchers.last.specs(gem_names)
130
130
  else
131
131
  specs = []
132
- fetchers.shift until fetchers.first.available? || fetchers.empty?
133
- fetchers.dup.each do |f|
134
- break unless f.api_fetcher? && !gem_names || !specs = f.specs(gem_names)
135
- fetchers.delete(f)
132
+ @fetchers = fetchers.drop_while do |f|
133
+ !f.available? || (f.api_fetcher? && !gem_names) || !specs = f.specs(gem_names)
136
134
  end
137
135
  @use_api = false if fetchers.none?(&:api_fetcher?)
138
136
  end
139
137
 
140
138
  specs.each do |name, version, platform, dependencies, metadata|
141
139
  spec = if dependencies
142
- EndpointSpecification.new(name, version, platform, dependencies, metadata)
140
+ EndpointSpecification.new(name, version, platform, self, dependencies, metadata)
143
141
  else
144
142
  RemoteSpecification.new(name, version, platform, self)
145
143
  end
@@ -272,8 +270,7 @@ module Bundler
272
270
  # cached gem specification path, if one exists
273
271
  def gemspec_cached_path(spec_file_name)
274
272
  paths = Bundler.rubygems.spec_cache_dirs.map {|dir| File.join(dir, spec_file_name) }
275
- paths = paths.select {|path| File.file? path }
276
- paths.first
273
+ paths.find {|path| File.file? path }
277
274
  end
278
275
 
279
276
  HTTP_ERRORS = [
@@ -301,8 +298,6 @@ module Bundler
301
298
  store
302
299
  end
303
300
 
304
- private
305
-
306
301
  def remote_uri
307
302
  @remote.uri
308
303
  end
@@ -107,9 +107,9 @@ module Bundler
107
107
  SharedHelpers.filesystem_access(File.join(base, "checksums")) {|p| FileUtils.mkdir_p(p) }
108
108
  file_name = "#{File.basename(built_gem_path)}.sha512"
109
109
  require "digest/sha2"
110
- checksum = ::Digest::SHA512.new.hexdigest(built_gem_path.to_s)
110
+ checksum = ::Digest::SHA512.file(built_gem_path).hexdigest
111
111
  target = File.join(base, "checksums", file_name)
112
- File.write(target, checksum)
112
+ File.write(target, checksum + "\n")
113
113
  Bundler.ui.confirm "#{name} #{version} checksum written to checksums/#{file_name}."
114
114
  end
115
115
 
@@ -90,11 +90,11 @@ module Bundler
90
90
  MatchPlatform.platforms_match?(spec.platform, platform_object)
91
91
  end
92
92
  installable_candidates = same_platform_candidates.select do |spec|
93
- !spec.is_a?(EndpointSpecification) ||
93
+ spec.is_a?(StubSpecification) ||
94
94
  (spec.required_ruby_version.satisfied_by?(Gem.ruby_version) &&
95
95
  spec.required_rubygems_version.satisfied_by?(Gem.rubygems_version))
96
96
  end
97
- search = installable_candidates.last || same_platform_candidates.last
97
+ search = installable_candidates.last
98
98
  search.dependencies = dependencies if search && (search.is_a?(RemoteSpecification) || search.is_a?(EndpointSpecification))
99
99
  search
100
100
  end
@@ -71,7 +71,7 @@ module Bundler
71
71
  end
72
72
 
73
73
  def add_bundled_with
74
- add_section("BUNDLED WITH", definition.locked_bundler_version.to_s)
74
+ add_section("BUNDLED WITH", Bundler::VERSION)
75
75
  end
76
76
 
77
77
  def add_section(name, value)
@@ -95,7 +95,7 @@ module Bundler
95
95
 
96
96
  def metadata_dependencies(platform)
97
97
  spec = @specs[platform].first
98
- return [] unless spec.is_a?(Gem::Specification)
98
+ return [] if spec.is_a?(LazySpecification)
99
99
  dependencies = []
100
100
  if !spec.required_ruby_version.nil? && !spec.required_ruby_version.none?
101
101
  dependencies << DepProxy.get_proxy(Gem::Dependency.new("Ruby\0", spec.required_ruby_version), platform)
@@ -358,24 +358,18 @@ module Bundler
358
358
  o << "\n"
359
359
  o << %(Running `bundle update` will rebuild your snapshot from scratch, using only\n)
360
360
  o << %(the gems in your Gemfile, which may resolve the conflict.\n)
361
- elsif !conflict.existing
361
+ elsif !conflict.existing && !name.end_with?("\0")
362
362
  o << "\n"
363
363
 
364
364
  relevant_source = conflict.requirement.source || source_for(name)
365
365
 
366
- metadata_requirement = name.end_with?("\0")
367
-
368
366
  extra_message = if conflict.requirement_trees.first.size > 1
369
367
  ", which is required by gem '#{SharedHelpers.pretty_dependency(conflict.requirement_trees.first[-2])}',"
370
368
  else
371
369
  ""
372
370
  end
373
371
 
374
- if metadata_requirement
375
- o << "#{SharedHelpers.pretty_dependency(conflict.requirement)}#{extra_message} is not available in #{relevant_source}"
376
- else
377
- o << gem_not_found_message(name, conflict.requirement, relevant_source, extra_message)
378
- end
372
+ o << gem_not_found_message(name, conflict.requirement, relevant_source, extra_message)
379
373
  end
380
374
  end,
381
375
  :version_for_spec => lambda {|spec| spec.version },
@@ -9,46 +9,58 @@ module Bundler
9
9
  def restart_with_locked_bundler_if_needed
10
10
  return unless needs_switching? && installed?
11
11
 
12
- restart_with_locked_bundler
12
+ restart_with(lockfile_version)
13
13
  end
14
14
 
15
15
  def install_locked_bundler_and_restart_with_it_if_needed
16
16
  return unless needs_switching?
17
17
 
18
- install_and_restart_with_locked_bundler
18
+ Bundler.ui.info \
19
+ "Bundler #{current_version} is running, but your lockfile was generated with #{lockfile_version}. " \
20
+ "Installing Bundler #{lockfile_version} and restarting using that version."
21
+
22
+ install_and_restart_with(lockfile_version)
23
+ end
24
+
25
+ def update_bundler_and_restart_with_it_if_needed(target)
26
+ return unless autoswitching_applies?
27
+
28
+ spec = resolve_update_version_from(target)
29
+ return unless spec
30
+
31
+ version = spec.version
32
+
33
+ Bundler.ui.info "Updating bundler to #{version}."
34
+
35
+ install(spec)
36
+
37
+ restart_with(version)
19
38
  end
20
39
 
21
40
  private
22
41
 
23
- def install_and_restart_with_locked_bundler
24
- bundler_dep = Gem::Dependency.new("bundler", lockfile_version)
25
- spec = fetch_spec_for(bundler_dep)
26
- return if spec.nil?
42
+ def install_and_restart_with(version)
43
+ requirement = Gem::Requirement.new(version)
44
+ spec = find_latest_matching_spec(requirement)
27
45
 
28
- Bundler.ui.info \
29
- "Bundler #{current_version} is running, but your lockfile was generated with #{lockfile_version}. " \
30
- "Installing Bundler #{lockfile_version} and restarting using that version."
46
+ if spec.nil?
47
+ Bundler.ui.warn "Your lockfile is locked to a version of bundler (#{lockfile_version}) that doesn't exist at https://rubygems.org/. Going on using #{current_version}"
48
+ return
49
+ end
31
50
 
32
- spec.source.install(spec)
51
+ install(spec)
33
52
  rescue StandardError => e
34
53
  Bundler.ui.trace e
35
54
  Bundler.ui.warn "There was an error installing the locked bundler version (#{lockfile_version}), rerun with the `--verbose` flag for more details. Going on using bundler #{current_version}."
36
55
  else
37
- restart_with_locked_bundler
56
+ restart_with(version)
38
57
  end
39
58
 
40
- def fetch_spec_for(bundler_dep)
41
- source = Bundler::Source::Rubygems.new("remotes" => "https://rubygems.org")
42
- source.remote!
43
- source.add_dependency_names("bundler")
44
- spec = source.specs.search(bundler_dep).first
45
- if spec.nil?
46
- Bundler.ui.warn "Your lockfile is locked to a version of bundler (#{lockfile_version}) that doesn't exist at https://rubygems.org/. Going on using #{current_version}"
47
- end
48
- spec
59
+ def install(spec)
60
+ spec.source.install(spec)
49
61
  end
50
62
 
51
- def restart_with_locked_bundler
63
+ def restart_with(version)
52
64
  configured_gem_home = ENV["GEM_HOME"]
53
65
  configured_gem_path = ENV["GEM_PATH"]
54
66
 
@@ -57,20 +69,79 @@ module Bundler
57
69
 
58
70
  Bundler.with_original_env do
59
71
  Kernel.exec(
60
- { "GEM_HOME" => configured_gem_home, "GEM_PATH" => configured_gem_path, "BUNDLER_VERSION" => lockfile_version },
72
+ { "GEM_HOME" => configured_gem_home, "GEM_PATH" => configured_gem_path, "BUNDLER_VERSION" => version.to_s },
61
73
  *cmd
62
74
  )
63
75
  end
64
76
  end
65
77
 
66
78
  def needs_switching?
79
+ autoswitching_applies? &&
80
+ released?(lockfile_version) &&
81
+ !running?(lockfile_version) &&
82
+ !updating?
83
+ end
84
+
85
+ def autoswitching_applies?
67
86
  ENV["BUNDLER_VERSION"].nil? &&
68
87
  Bundler.rubygems.supports_bundler_trampolining? &&
69
88
  SharedHelpers.in_bundle? &&
70
- lockfile_version &&
71
- !lockfile_version.end_with?(".dev") &&
72
- lockfile_version != current_version &&
73
- !updating?
89
+ lockfile_version
90
+ end
91
+
92
+ def resolve_update_version_from(target)
93
+ requirement = Gem::Requirement.new(target)
94
+ update_candidate = find_latest_matching_spec(requirement)
95
+
96
+ if update_candidate.nil?
97
+ raise InvalidOption, "The `bundle update --bundler` target version (#{target}) does not exist"
98
+ end
99
+
100
+ resolved_version = update_candidate.version
101
+ needs_update = requirement.specific? ? !running?(resolved_version) : running_older_than?(resolved_version)
102
+
103
+ return unless needs_update
104
+
105
+ update_candidate
106
+ end
107
+
108
+ def local_specs
109
+ @local_specs ||= Bundler::Source::Rubygems.new("allow_local" => true).specs.select {|spec| spec.name == "bundler" }
110
+ end
111
+
112
+ def remote_specs
113
+ @remote_specs ||= begin
114
+ source = Bundler::Source::Rubygems.new("remotes" => "https://rubygems.org")
115
+ source.remote!
116
+ source.add_dependency_names("bundler")
117
+ source.specs
118
+ end
119
+ end
120
+
121
+ def find_latest_matching_spec(requirement)
122
+ local_result = find_latest_matching_spec_from_collection(local_specs, requirement)
123
+ return local_result if local_result && requirement.specific?
124
+
125
+ remote_result = find_latest_matching_spec_from_collection(remote_specs, requirement)
126
+ return remote_result if local_result.nil?
127
+
128
+ [local_result, remote_result].max
129
+ end
130
+
131
+ def find_latest_matching_spec_from_collection(specs, requirement)
132
+ specs.sort.reverse_each.find {|spec| requirement.satisfied_by?(spec.version) }
133
+ end
134
+
135
+ def running?(version)
136
+ version == current_version
137
+ end
138
+
139
+ def running_older_than?(version)
140
+ current_version < version
141
+ end
142
+
143
+ def released?(version)
144
+ !version.to_s.end_with?(".dev")
74
145
  end
75
146
 
76
147
  def updating?
@@ -80,15 +151,18 @@ module Bundler
80
151
  def installed?
81
152
  Bundler.configure
82
153
 
83
- Bundler.rubygems.find_bundler(lockfile_version)
154
+ Bundler.rubygems.find_bundler(lockfile_version.to_s)
84
155
  end
85
156
 
86
157
  def current_version
87
- @current_version ||= Bundler::VERSION
158
+ @current_version ||= Gem::Version.new(Bundler::VERSION)
88
159
  end
89
160
 
90
161
  def lockfile_version
91
- @lockfile_version ||= Bundler::LockfileParser.bundled_with
162
+ return @lockfile_version if defined?(@lockfile_version)
163
+
164
+ parsed_version = Bundler::LockfileParser.bundled_with
165
+ @lockfile_version = parsed_version ? Gem::Version.new(parsed_version) : nil
92
166
  end
93
167
  end
94
168
  end
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
26
26
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
27
27
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
28
28
  `git ls-files -z`.split("\x0").reject do |f|
29
- (f == __FILE__) || f.match(%r{\A(?:(?:test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
29
+ (f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
30
30
  end
31
31
  end
32
32
  spec.bindir = "exe"
@@ -107,10 +107,7 @@ class Bundler::Thor
107
107
  #
108
108
  def replace!(regexp, string, force)
109
109
  content = File.read(destination)
110
- before, after = content.split(regexp, 2)
111
- snippet = (behavior == :after ? after : before).to_s
112
-
113
- if force || !snippet.include?(replacement)
110
+ if force || !content.include?(replacement)
114
111
  success = content.gsub!(regexp, string)
115
112
 
116
113
  File.open(destination, "wb") { |file| file.write(content) } unless pretend?
@@ -1,3 +1,3 @@
1
1
  class Bundler::Thor
2
- VERSION = "1.1.0"
2
+ VERSION = "1.2.1"
3
3
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: false
2
2
 
3
3
  module Bundler
4
- VERSION = "2.3.4".freeze
4
+ VERSION = "2.3.5".freeze
5
5
 
6
6
  def self.bundler_major_version
7
7
  @bundler_major_version ||= VERSION.split(".").first.to_i
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.3.4
4
+ version: 2.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - André Arko
@@ -22,7 +22,7 @@ authors:
22
22
  autorequire:
23
23
  bindir: exe
24
24
  cert_chain: []
25
- date: 2021-12-29 00:00:00.000000000 Z
25
+ date: 2022-01-12 00:00:00.000000000 Z
26
26
  dependencies: []
27
27
  description: Bundler manages an application's dependencies through its entire life,
28
28
  across many machines, systematically and repeatably
@@ -370,7 +370,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
370
370
  - !ruby/object:Gem::Version
371
371
  version: 2.5.2
372
372
  requirements: []
373
- rubygems_version: 3.3.4
373
+ rubygems_version: 3.3.5
374
374
  signing_key:
375
375
  specification_version: 4
376
376
  summary: The best way to manage your application's dependencies