diff options
| author | Jack Nagel | 2013-05-15 12:45:39 -0500 |
|---|---|---|
| committer | Jack Nagel | 2013-05-15 12:57:01 -0500 |
| commit | 243089faf9affd0a40d38e582d3b7949dec915f3 (patch) | |
| tree | 7fe9cd05d4b9e5fa279052876449174ca6b03f2a | |
| parent | 1539d8f598dfeaaf4e573021d10cefc8396e9316 (diff) | |
| download | homebrew-243089faf9affd0a40d38e582d3b7949dec915f3.tar.bz2 | |
cleanup: refactor cleanup_cache
| -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 |
