From 0d3121f7811ed3bf55565065bf1ed2e1d1b646c2 Mon Sep 17 00:00:00 2001 From: Jack Nagel Date: Tue, 1 Apr 2014 20:47:26 -0500 Subject: [PATCH] Batch up mdfind calls when possible --- Library/Homebrew/cmd/doctor.rb | 2 +- Library/Homebrew/os/mac.rb | 16 ++++++++++------ Library/Homebrew/os/mac/xcode.rb | 2 +- Library/Homebrew/os/mac/xquartz.rb | 2 +- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/Library/Homebrew/cmd/doctor.rb b/Library/Homebrew/cmd/doctor.rb index 25ac8bbe4f..84ab5c1130 100644 --- a/Library/Homebrew/cmd/doctor.rb +++ b/Library/Homebrew/cmd/doctor.rb @@ -438,7 +438,7 @@ end def check_xcode_select_path if not MacOS::CLT.installed? and not File.file? "#{MacOS::Xcode.folder}/usr/bin/xcodebuild" - path = MacOS.app_with_bundle_id(MacOS::Xcode::V4_BUNDLE_ID) || MacOS.app_with_bundle_id(MacOS::Xcode::V3_BUNDLE_ID) + path = MacOS.app_with_bundle_id(MacOS::Xcode::V4_BUNDLE_ID, MacOS::Xcode::V3_BUNDLE_ID) path = '/Developer' if path.nil? or not path.directory? <<-EOS.undent Your Xcode is configured with an invalid path. diff --git a/Library/Homebrew/os/mac.rb b/Library/Homebrew/os/mac.rb index dc6d7093e3..7fa95cd560 100644 --- a/Library/Homebrew/os/mac.rb +++ b/Library/Homebrew/os/mac.rb @@ -269,22 +269,26 @@ module OS EOS end - def app_with_bundle_id id - path = mdfind(id).first + def app_with_bundle_id(*ids) + path = mdfind(*ids).first Pathname.new(path) unless path.nil? or path.empty? end - def mdfind id + def mdfind(*ids) return [] unless OS.mac? - (@mdfind ||= {}).fetch(id.to_s) do |key| - @mdfind[key] = `/usr/bin/mdfind "kMDItemCFBundleIdentifier == '#{key}'"`.split("\n") + (@mdfind ||= {}).fetch(ids) do + @mdfind[ids] = `/usr/bin/mdfind "#{mdfind_query(*ids)}"`.split("\n") end end - def pkgutil_info id + def pkgutil_info(id) (@pkginfo ||= {}).fetch(id.to_s) do |key| @pkginfo[key] = `/usr/sbin/pkgutil --pkg-info "#{key}" 2>/dev/null`.strip end end + + def mdfind_query(*ids) + ids.map! { |id| "kMDItemCFBundleIdentifier == #{id}" }.join(" || ") + end end end diff --git a/Library/Homebrew/os/mac/xcode.rb b/Library/Homebrew/os/mac/xcode.rb index b64fc6edb5..d89aa8d261 100644 --- a/Library/Homebrew/os/mac/xcode.rb +++ b/Library/Homebrew/os/mac/xcode.rb @@ -70,7 +70,7 @@ module OS # helper tools and installed Xcode in a non-conventional place, this # is our only option. See: http://superuser.com/questions/390757 def bundle_path - MacOS.app_with_bundle_id(V4_BUNDLE_ID) || MacOS.app_with_bundle_id(V3_BUNDLE_ID) + MacOS.app_with_bundle_id(V4_BUNDLE_ID, V3_BUNDLE_ID) end def installed? diff --git a/Library/Homebrew/os/mac/xquartz.rb b/Library/Homebrew/os/mac/xquartz.rb index f864720f95..9a2266c391 100644 --- a/Library/Homebrew/os/mac/xquartz.rb +++ b/Library/Homebrew/os/mac/xquartz.rb @@ -52,7 +52,7 @@ module OS end def bundle_path - MacOS.app_with_bundle_id(FORGE_BUNDLE_ID) || MacOS.app_with_bundle_id(APPLE_BUNDLE_ID) + MacOS.app_with_bundle_id(FORGE_BUNDLE_ID, APPLE_BUNDLE_ID) end def version_from_mdls(path)