diff options
Diffstat (limited to 'Library/Homebrew/cmd/cleanup.rb')
| -rw-r--r-- | Library/Homebrew/cmd/cleanup.rb | 42 | 
1 files changed, 42 insertions, 0 deletions
| diff --git a/Library/Homebrew/cmd/cleanup.rb b/Library/Homebrew/cmd/cleanup.rb new file mode 100644 index 000000000..f5e4637ec --- /dev/null +++ b/Library/Homebrew/cmd/cleanup.rb @@ -0,0 +1,42 @@ +require 'formula' +require 'cmd/prune' + +module Homebrew extend self +  def cleanup +    if ARGV.named.empty? +      HOMEBREW_CELLAR.children.each do |rack| +        begin +          cleanup_formula rack.basename.to_s if rack.directory? +        rescue FormulaUnavailableError => e +          opoo "Formula not found for #{e.name}" +        end +      end +      # seems like a good time to do some additional cleanup +      Homebrew.prune +    else +      ARGV.formulae.each do |f| +        cleanup_formula f +      end +    end +  end + +  def cleanup_formula f +    f = Formula.factory f +    rack = f.prefix.parent + +    if f.installed? and rack.directory? +      rack.children.each do |keg| +        if f.installed_prefix != keg +          print "Uninstalling #{keg}..." +          rm_rf keg +          puts +        end +      end +    elsif rack.children.length > 1 +      # If the cellar only has one version installed, don't complain +      # that we can't tell which one to keep. +      opoo "Skipping #{name}: most recent version #{f.version} not installed" +    end +  end + +end | 
