diff options
| author | Alyssa Ross | 2016-09-28 19:21:47 +0100 | 
|---|---|---|
| committer | Alyssa Ross | 2016-10-25 22:34:34 +0100 | 
| commit | ecb1075390a49e292c6add3495504c24e3ec1572 (patch) | |
| tree | ef97a713c3b9b2f61bf76a8792b7ebb796bf4543 /Library/Homebrew/cmd/uninstall.rb | |
| parent | b42f76939cebb7267edaeb4fc2cb8a00af4b2789 (diff) | |
| download | brew-ecb1075390a49e292c6add3495504c24e3ec1572.tar.bz2 | |
uninstall: check for dependents even with --force
Diffstat (limited to 'Library/Homebrew/cmd/uninstall.rb')
| -rw-r--r-- | Library/Homebrew/cmd/uninstall.rb | 26 | 
1 files changed, 15 insertions, 11 deletions
diff --git a/Library/Homebrew/cmd/uninstall.rb b/Library/Homebrew/cmd/uninstall.rb index 2d7bb90e4..5ab9f116f 100644 --- a/Library/Homebrew/cmd/uninstall.rb +++ b/Library/Homebrew/cmd/uninstall.rb @@ -15,14 +15,27 @@ module Homebrew      raise KegUnspecifiedError if ARGV.named.empty?      kegs_by_rack = if ARGV.force? -      ARGV.named.map do |name| +      Hash[ARGV.named.map do |name|          rack = Formulary.to_rack(name)          [rack, rack.subdirs.map { |d| Keg.new(d) }] -      end +      end]      else        ARGV.kegs.group_by(&:rack)      end +    kegs = kegs_by_rack.values.flatten(1) + +    kegs.each do |keg| +      dependents = keg.installed_dependents - kegs +      if dependents.any? +        dependents_output = dependents.map { |k| "#{k.name} #{k.version}" }.join(", ") +        conjugation = dependents.count == 1 ? "is" : "are" +        ofail "Refusing to uninstall #{keg} because it is required by #{dependents_output}, which #{conjugation} currently installed." +        # puts "You can override this and force removal with `brew uninstall --force #{keg.name}`." +        next +      end +    end +      kegs_by_rack.each do |rack, kegs|        if ARGV.force?          name = rack.basename @@ -38,15 +51,6 @@ module Homebrew          rm_pin rack        else          kegs.each do |keg| -          dependents = keg.installed_dependents - ARGV.kegs -          if dependents.any? -            dependents_output = dependents.map { |k| "#{k.name} #{k.version}" }.join(", ") -            conjugation = dependents.count == 1 ? "is" : "are" -            ofail "Refusing to uninstall #{keg} because it is required by #{dependents_output}, which #{conjugation} currently installed." -            puts "You can override this and force removal with `brew uninstall --force #{keg.name}`." -            next -          end -            keg.lock do              puts "Uninstalling #{keg}... (#{keg.abv})"              keg.unlink  | 
