check to see if the xcode eula has been signed
diff --git a/packages/flutter_tools/lib/src/ios/ios_workflow.dart b/packages/flutter_tools/lib/src/ios/ios_workflow.dart
index 106a0e1..6c2026c 100644
--- a/packages/flutter_tools/lib/src/ios/ios_workflow.dart
+++ b/packages/flutter_tools/lib/src/ios/ios_workflow.dart
@@ -28,15 +28,7 @@
);
Function _xcodeExists = () {
- if (xcode.isInstalledAndMeetsVersionCheck) {
- return ValidationType.installed;
- }
-
- if (xcode.isInstalled) {
- return ValidationType.partial;
- }
-
- return ValidationType.missing;
+ return xcode.isInstalled ? ValidationType.installed : ValidationType.missing;
};
Function _xcodeVersionSatisfactory = () {
@@ -47,6 +39,10 @@
return ValidationType.missing;
};
+ Function _xcodeEulaSigned = () {
+ return xcode.eulaSigned ? ValidationType.installed : ValidationType.missing;
+ };
+
Function _brewExists = () {
return exitsHappy(<String>['brew', '-v'])
? ValidationType.installed : ValidationType.missing;
@@ -71,12 +67,19 @@
iosValidator.addValidator(xcodeValidator);
xcodeValidator.addValidator(new Validator(
- 'Version Check',
- description: 'Xcode version is at least $kXcodeRequiredVersionMajor.$kXcodeRequiredVersionMinor',
+ 'version',
+ description: 'Xcode minimum version of $kXcodeRequiredVersionMajor.$kXcodeRequiredVersionMinor.0',
resolution: 'Download the latest version or update via the Mac App Store',
validatorFunction: _xcodeVersionSatisfactory
));
+ xcodeValidator.addValidator(new Validator(
+ 'EULA',
+ description: 'XCode end user license agreement',
+ resolution: "Open XCode or run the command 'sudo xcodebuild -license'",
+ validatorFunction: _xcodeEulaSigned
+ ));
+
Validator brewValidator = new Validator(
'brew',
description: 'install additional development packages',
diff --git a/packages/flutter_tools/lib/src/ios/mac.dart b/packages/flutter_tools/lib/src/ios/mac.dart
index ef95ce0..e17cec5 100644
--- a/packages/flutter_tools/lib/src/ios/mac.dart
+++ b/packages/flutter_tools/lib/src/ios/mac.dart
@@ -40,6 +40,23 @@
return _isInstalled;
}
+ /// Has the EULA been signed?
+ bool get eulaSigned {
+ if (!isInstalled)
+ return false;
+
+ try {
+ ProcessResult result = Process.runSync('/usr/bin/xcrun', <String>['clang']);
+ if (result.stdout != null && result.stdout.contains('license'))
+ return false;
+ if (result.stderr != null && result.stderr.contains('license'))
+ return false;
+ return true;
+ } catch (error) {
+ return false;
+ }
+ }
+
bool _xcodeVersionSatisfactory;
bool get xcodeVersionSatisfactory {
if (_xcodeVersionSatisfactory != null) {