diff options
| author | Jack Nagel | 2013-05-15 12:45:39 -0500 | 
|---|---|---|
| committer | Jack Nagel | 2013-05-15 12:57:01 -0500 | 
| commit | a9fcefda4efbe23dd91d124f7f8edbb95f4657e1 (patch) | |
| tree | e227e9ae5e2cee3177de55398fe81ea2d4c1ce22 /Library/Homebrew/cmd/cleanup.rb | |
| parent | 5b5bb578652f79c609cc538ae993da08b8573728 (diff) | |
| download | brew-a9fcefda4efbe23dd91d124f7f8edbb95f4657e1.tar.bz2 | |
cleanup: refactor cleanup_cache
Diffstat (limited to 'Library/Homebrew/cmd/cleanup.rb')
| -rw-r--r-- | Library/Homebrew/cmd/cleanup.rb | 33 | 
1 files changed, 21 insertions, 12 deletions
diff --git a/Library/Homebrew/cmd/cleanup.rb b/Library/Homebrew/cmd/cleanup.rb index a644fbb41..114ae1f3a 100644 --- a/Library/Homebrew/cmd/cleanup.rb +++ b/Library/Homebrew/cmd/cleanup.rb @@ -62,21 +62,30 @@ module Homebrew extend self    def cleanup_cache      return unless HOMEBREW_CACHE.directory? +      HOMEBREW_CACHE.children.select(&:file?).each do |file|        version = file.version -      name = file.basename.to_s.match(/(.*)-(#{version})/).captures.first rescue nil -      if name and version -        f = Formula.factory(name) rescue nil -        old_bottle = bottle_file_outdated? f, file -        if (f and f.version > version) or (ARGV.switch? "s" and (f and (not f.installed?))) or old_bottle -          if ARGV.dry_run? -            puts "Would remove: #{file}" -          else -            puts "Removing: #{file}..." -            rm file -          end -        end +      name = file.basename.to_s.match(/(.*)-(?:#{Regexp.escape(version)})/).captures.first rescue nil +      next unless name && version + +      begin +        f = Formula.factory(name) +      rescue FormulaUnavailableError +        next        end + +      if f.version > version || ARGV.switch?('s') && !f.installed? || bottle_file_outdated?(f, file) +        cleanup_cached_file(file) +      end +    end +  end + +  def cleanup_cached_file file +    if ARGV.dry_run? +      puts "Would remove: #{file}" +    else +      puts "Removing: #{file}..." +      file.unlink      end    end  | 
