Batch up mdfind calls when possible
This commit is contained in:
parent
97ca3baedc
commit
0d3121f781
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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?
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user