aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew
diff options
context:
space:
mode:
authorJack Nagel2013-07-21 20:09:55 -0500
committerJack Nagel2013-07-21 20:09:55 -0500
commit7d16d8c7d665848ebada82fda9c09fc3d1a0daae (patch)
tree3ed0a360986ea6d2bffbb378aaf9ebad7cfbe74c /Library/Homebrew
parent5a4eefe30addb948570eea9a092047ecee483d81 (diff)
downloadhomebrew-7d16d8c7d665848ebada82fda9c09fc3d1a0daae.tar.bz2
Cache pkgutil results at the source
Diffstat (limited to 'Library/Homebrew')
-rw-r--r--Library/Homebrew/macos.rb4
-rw-r--r--Library/Homebrew/os/mac/xcode.rb21
2 files changed, 14 insertions, 11 deletions
diff --git a/Library/Homebrew/macos.rb b/Library/Homebrew/macos.rb
index 1359d2b48..b86bc8f42 100644
--- a/Library/Homebrew/macos.rb
+++ b/Library/Homebrew/macos.rb
@@ -234,7 +234,9 @@ module MacOS extend self
end
def pkgutil_info id
- `/usr/sbin/pkgutil --pkg-info "#{id}" 2>/dev/null`.strip
+ (@pkginfo ||= {}).fetch(id.to_s) do
+ @pkginfo[id.to_s] = `/usr/sbin/pkgutil --pkg-info "#{id}" 2>/dev/null`.strip
+ end
end
end
diff --git a/Library/Homebrew/os/mac/xcode.rb b/Library/Homebrew/os/mac/xcode.rb
index d8ac28a9e..bfac9f9bd 100644
--- a/Library/Homebrew/os/mac/xcode.rb
+++ b/Library/Homebrew/os/mac/xcode.rb
@@ -182,16 +182,17 @@ module MacOS::CLT extend self
!latest_version?
end
+ # Version string (a pretty damn long one) of the CLT package.
+ # Note, that different ways to install the CLTs lead to different
+ # version numbers.
def version
- # The pkgutils calls are slow, don't repeat if no CLT installed.
- return @version if @version_determined
-
- @version_determined = true
- # Version string (a pretty damn long one) of the CLT package.
- # Note, that different ways to install the CLTs lead to different
- # version numbers.
- @version ||= [STANDALONE_PKG_ID, FROM_XCODE_PKG_ID].find do |id|
- MacOS.pkgutil_info(id) =~ /version: (.+)$/
- end && $1
+ @version ||= detect_version
+ end
+
+ def detect_version
+ [STANDALONE_PKG_ID, FROM_XCODE_PKG_ID].find do |id|
+ version = MacOS.pkgutil_info(id)[/version: (.+)$/, 1]
+ return version if version
+ end
end
end