aboutsummaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
Diffstat (limited to 'bin')
-rwxr-xr-xbin/brew31
1 files changed, 23 insertions, 8 deletions
diff --git a/bin/brew b/bin/brew
index 3e2dbf9a7..7531d59ed 100755
--- a/bin/brew
+++ b/bin/brew
@@ -188,15 +188,30 @@ begin
ARGV.kegs.each {|keg| puts "#{keg.unlink} links removed for #{keg}"}
when 'rm', 'uninstall', 'remove'
- begin
- ARGV.kegs.each do |keg|
- puts "Uninstalling #{keg}..."
- keg.unlink
- keg.uninstall
+ if ARGV.flag? "--force"
+ require 'formula'
+ ARGV.formulae.each do |f|
+ formula_cellar = f.prefix.parent
+ next unless File.exist? formula_cellar
+ puts "Uninstalling #{f.name}..."
+ formula_cellar.children do |k|
+ keg = Keg.new(k)
+ keg.unlink
+ end
+
+ formula_cellar.rmtree
+ end
+ else
+ begin
+ ARGV.kegs.each do |keg|
+ puts "Uninstalling #{keg}..."
+ keg.unlink
+ keg.uninstall
+ end
+ rescue MultipleVersionsInstalledError => e
+ onoe e
+ puts "Use `brew remove --force #{e.name}` to remove all versions."
end
- rescue MultipleVersionsInstalledError => e
- onoe e
- puts "Use `brew remove --force #{e.name}` to remove all versions."
end
when 'prune'