class AirbrakeSymbolicate::DsymFinder
Public Class Methods
dsym_for_error(error)
click to toggle source
# File lib/airbrake_symbolicate.rb, line 7 def dsym_for_error(error) find_dsyms unless @@dsyms @@dsyms[error.app_version] end
Private Class Methods
find_dsyms()
click to toggle source
use spotlight to find all the xcode archives then use the Info.plist inside those archives to try and look up a git commit hash
# File lib/airbrake_symbolicate.rb, line 17 def find_dsyms @@dsyms = {} files = `mdfind -name ".xcarchive"`.split("\n") files.each do |f| info = `find '#{f}/Products' -name Info.plist`.chomp short_version = plist_val(info, 'CFBundleShortVersionString') long_version = plist_val(info, 'CFBundleVersion') version = if short_version "#{short_version} (#{long_version})" else long_version end if bin_file = Dir[File.join(f, '/dSYMs/*.dSYM/**/DWARF/*')].first @@dsyms[version] = bin_file end end end
plist_val(plist, key)
click to toggle source
# File lib/airbrake_symbolicate.rb, line 39 def plist_val(plist, key) `/usr/libexec/PlistBuddy -c 'Print :#{key}' '#{plist}' 2>/dev/null`.chomp end