inspectAppleBinaryArchitectures function

Future<Set<String>> inspectAppleBinaryArchitectures(
  1. File binary, {
  2. AppleCommandRunner runner = _runAppleCommand,
})

Implementation

Future<Set<String>> inspectAppleBinaryArchitectures(
  File binary, {
  AppleCommandRunner runner = _runAppleCommand,
}) async {
  final result = await runner('xcrun', ['lipo', '-info', binary.path]);
  final output = '${result.stdout}\n${result.stderr}';
  if (result.exitCode != 0) {
    throw AppleBinaryException(
      'Unable to inspect Apple binary ${binary.path}: ${output.trim()}',
    );
  }
  final architectures = parseAppleLipoArchitectures(output);
  if (architectures.isEmpty) {
    throw AppleBinaryException(
      'Apple binary ${binary.path} reported no architectures: ${output.trim()}',
    );
  }
  return architectures;
}