From ea5da9b592f7be3396f22c839bc36e55b81591d6 Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Sat, 10 Sep 2016 16:11:01 +0100 Subject: [PATCH] bottle: further improve --keep-old mismatching. - Make the code more similar between `bottle` and `bottle --merge`. - Also output the mismatched values when using `--merge`. --- Library/Homebrew/dev-cmd/bottle.rb | 32 ++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/Library/Homebrew/dev-cmd/bottle.rb b/Library/Homebrew/dev-cmd/bottle.rb index 306296b46f..f912109ede 100644 --- a/Library/Homebrew/dev-cmd/bottle.rb +++ b/Library/Homebrew/dev-cmd/bottle.rb @@ -289,22 +289,22 @@ module Homebrew old_spec = f.bottle_specification if ARGV.include?("--keep-old") && !old_spec.checksums.empty? - bad_fields = [:root_url, :prefix, :cellar, :rebuild].select do |field| + mismatches = [:root_url, :prefix, :cellar, :rebuild].select do |field| old_spec.send(field) != bottle.send(field) end - bad_fields.delete(:cellar) if old_spec.cellar == :any && bottle.cellar == :any_skip_relocation - unless bad_fields.empty? + mismatches.delete(:cellar) if old_spec.cellar == :any && bottle.cellar == :any_skip_relocation + unless mismatches.empty? bottle_path.unlink if bottle_path.exist? - bad_changes = bad_fields.map do |field| + mismatches.map! do |field| old_value = old_spec.send(field).inspect - bottle_value = bottle.send(field).inspect - "#{field}: old: #{old_value}, new: #{bottle_value}" + value = bottle.send(field).inspect + "#{field}: old: #{old_value}, new: #{value}" end odie <<-EOS.undent --keep-old was passed but there are changes in: - #{bad_changes.join("\n")} + #{mismatches.join("\n")} EOS end end @@ -383,11 +383,11 @@ module Homebrew bottle_block_contents.lines.each do |line| line = line.strip next if line.empty? - key, value, _, tag = line.split " ", 4 + key, value_original, _, tag = line.split " ", 4 valid_key = %w[root_url prefix cellar rebuild sha1 sha256].include? key next unless valid_key - value = value.to_s.delete ":'\"" + value = value_original.to_s.delete ":'\"" tag = tag.to_s.delete ":" if !tag.empty? @@ -399,11 +399,21 @@ module Homebrew next end - old_value = bottle_hash["bottle"][key].to_s + old_value_original = bottle_hash["bottle"][key] + old_value = old_value_original.to_s next if key == "cellar" && old_value == "any" && value == "any_skip_relocation" - mismatches << key if old_value.empty? || value != old_value + if old_value.empty? || value != old_value + old_value = old_value_original.inspect + value = value_original.inspect + mismatches << "#{field}: old: #{old_value}, new: #{value}" + end end + unless mismatches.empty? + odie <<-EOS.undent + --keep-old was passed but there are changes in: + #{mismatches.join("\n")} + EOS odie "--keep-old was passed but there were changes in #{mismatches.join(", ")}!" end output = bottle_output bottle