From 4ac186811f041c6c847e2f1b9009ef869ccbf56a Mon Sep 17 00:00:00 2001 From: Devon Carew Date: Mon, 28 Mar 2016 16:20:43 -0700 Subject: [PATCH] fix an exception from flutter doctor --- packages/flutter_tools/lib/executable.dart | 4 +-- packages/flutter_tools/lib/src/ios/mac.dart | 33 +++++++++++++-------- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/packages/flutter_tools/lib/executable.dart b/packages/flutter_tools/lib/executable.dart index 2539869003b..87d56c4dfec 100644 --- a/packages/flutter_tools/lib/executable.dart +++ b/packages/flutter_tools/lib/executable.dart @@ -140,7 +140,7 @@ String _doctorText() { appContext.runInZone(() => doctor.diagnose()); return logger.statusText; - } catch (error) { - return ''; + } catch (error, trace) { + return 'encountered exception: $error\n$trace'; } } diff --git a/packages/flutter_tools/lib/src/ios/mac.dart b/packages/flutter_tools/lib/src/ios/mac.dart index 3745bc52ba7..7a71226b9be 100644 --- a/packages/flutter_tools/lib/src/ios/mac.dart +++ b/packages/flutter_tools/lib/src/ios/mac.dart @@ -31,17 +31,21 @@ class XCode { _xcodeVersionText = runSync(['xcodebuild', '-version']).replaceAll('\n', ', '); - try { - printTrace('xcrun clang'); + if (!xcodeVersionRegex.hasMatch(_xcodeVersionText)) { + _isInstalled = false; + } else { + try { + printTrace('xcrun clang'); + ProcessResult result = Process.runSync('/usr/bin/xcrun', ['clang']); - ProcessResult result = Process.runSync('/usr/bin/xcrun', ['clang']); - if (result.stdout != null && result.stdout.contains('license')) - _eulaSigned = false; - else if (result.stderr != null && result.stderr.contains('license')) - _eulaSigned = false; - else - _eulaSigned = true; - } catch (error) { + if (result.stdout != null && result.stdout.contains('license')) + _eulaSigned = false; + else if (result.stderr != null && result.stderr.contains('license')) + _eulaSigned = false; + else + _eulaSigned = true; + } catch (error) { + } } } catch (error) { _isInstalled = false; @@ -66,10 +70,13 @@ class XCode { String _xcodeVersionText; String get xcodeVersionText => _xcodeVersionText; - bool get xcodeVersionSatisfactory { - RegExp regex = new RegExp(r'Xcode ([0-9.]+)'); + final RegExp xcodeVersionRegex = new RegExp(r'Xcode ([0-9.]+)'); - String version = regex.firstMatch(xcodeVersionText).group(1); + bool get xcodeVersionSatisfactory { + if (!xcodeVersionRegex.hasMatch(xcodeVersionText)) + return false; + + String version = xcodeVersionRegex.firstMatch(xcodeVersionText).group(1); List components = version.split('.'); int major = int.parse(components[0]);