class Gym::XcodebuildFixes

Public Class Methods

generic_archive_fix() click to toggle source

Determine IPAs for the Watch App which aren't inside of a containing iOS App and removes them.

In the future it may be nice to modify the plist file for the archive itself so that it points to the correct IPA as well.

This is a workaround for this bug github.com/CocoaPods/CocoaPods/issues/4178

# File gym/lib/gym/xcodebuild_fixes/generic_archive_fix.rb, line 17
def generic_archive_fix
  UI.verbose("Looking For Orphaned WatchKit2 Applications")

  Dir.glob("#{BuildCommandGenerator.archive_path}/Products/Applications/*.app").each do |app_path|
    if is_watchkit_app?(app_path)
      UI.verbose("Removing Orphaned WatchKit2 Application #{app_path}")
      FileUtils.rm_rf(app_path)
    end
  end
end
is_watchkit_app?(app_path) click to toggle source

Does this application have a WatchKit target

# File gym/lib/gym/xcodebuild_fixes/generic_archive_fix.rb, line 29
def is_watchkit_app?(app_path)
  plist_path = "#{app_path}/Info.plist"
  `/usr/libexec/PlistBuddy -c 'Print :DTSDKName' #{plist_path.shellescape} 2>&1`.match(/^\s*watchos2\.\d+\s*$/) != nil
end