Descriptions.cache_fresh?: return early

This commit is contained in:
Xu Cheng 2015-09-09 13:46:08 +08:00
parent 80514ee5d7
commit 71be19235f

View File

@ -42,20 +42,26 @@ class Descriptions
# Return true if the cache exists, and neither Homebrew nor any of the Taps
# repos were updated more recently than it was.
def self.cache_fresh?
if CACHE_FILE.exist?
cache_date = File.mtime(CACHE_FILE)
return false unless CACHE_FILE.exist?
cache_mtime = File.mtime(CACHE_FILE)
ref_master = ".git/refs/heads/master"
ref_master = ".git/refs/heads/master"
master = HOMEBREW_REPOSITORY/ref_master
master = HOMEBREW_REPOSITORY/ref_master
last_update = (master.exist? ? File.mtime(master) : Time.at(0))
Dir.glob(HOMEBREW_LIBRARY/"Taps/**"/ref_master).each do |repo|
repo_mtime = File.mtime(repo)
last_update = repo_mtime if repo_mtime > last_update
end
last_update <= cache_date
# If ref_master doesn't exist, it means brew update is never run.
# Since cache is found, we can assume it's fresh.
if master.exist?
core_mtime = File.mtime(master)
return false if core_mtime > cache_mtime
end
Tap.each do |tap|
next unless tap.git?
repo_mtime = File.mtime(tap.path/ref_master)
return false if repo_mtime > cache_mtime
end
true
end
# Create the cache if it doesn't already exist.