add a summary option to the doctor class
diff --git a/packages/flutter_tools/lib/src/android/adb.dart b/packages/flutter_tools/lib/src/android/adb.dart index f5a5840..2392dc3 100644 --- a/packages/flutter_tools/lib/src/android/adb.dart +++ b/packages/flutter_tools/lib/src/android/adb.dart
@@ -5,8 +5,8 @@ import 'dart:async'; import 'dart:io'; -import '../base/globals.dart'; import '../base/process.dart'; +import '../globals.dart'; // https://android.googlesource.com/platform/system/core/+/android-4.4_r1/adb/OVERVIEW.TXT // https://android.googlesource.com/platform/system/core/+/android-4.4_r1/adb/SERVICES.TXT
diff --git a/packages/flutter_tools/lib/src/android/android_sdk.dart b/packages/flutter_tools/lib/src/android/android_sdk.dart index 27096f2..819f64f 100644 --- a/packages/flutter_tools/lib/src/android/android_sdk.dart +++ b/packages/flutter_tools/lib/src/android/android_sdk.dart
@@ -7,8 +7,8 @@ import 'package:path/path.dart' as path; import 'package:pub_semver/pub_semver.dart'; -import '../base/globals.dart'; import '../base/os.dart'; +import '../globals.dart'; // Android SDK layout: //
diff --git a/packages/flutter_tools/lib/src/android/android_workflow.dart b/packages/flutter_tools/lib/src/android/android_workflow.dart index 3bbc619..52b9942 100644 --- a/packages/flutter_tools/lib/src/android/android_workflow.dart +++ b/packages/flutter_tools/lib/src/android/android_workflow.dart
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import '../base/globals.dart'; import '../doctor.dart'; +import '../globals.dart'; import 'android_sdk.dart'; class AndroidWorkflow extends Workflow { @@ -15,8 +15,11 @@ bool get canLaunchDevices => androidSdk != null && androidSdk.validateSdkWellFormed(complain: false); - void diagnose() { - Validator androidValidator = new Validator('Develop for Android devices'); + ValidationResult validate() { + Validator androidValidator = new Validator( + '$name toolchain', + description: 'develop for Android devices' + ); Function _sdkExists = () { return androidSdk == null ? ValidationType.missing : ValidationType.installed; @@ -29,6 +32,8 @@ validatorFunction: _sdkExists )); - androidValidator.validate().print(); + return androidValidator.validate(); } + + void diagnose() => validate().print(); }
diff --git a/packages/flutter_tools/lib/src/android/device_android.dart b/packages/flutter_tools/lib/src/android/device_android.dart index 5a3ec9c..2deaa9c 100644 --- a/packages/flutter_tools/lib/src/android/device_android.dart +++ b/packages/flutter_tools/lib/src/android/device_android.dart
@@ -11,12 +11,12 @@ import '../android/android_sdk.dart'; import '../application_package.dart'; import '../base/common.dart'; -import '../base/globals.dart'; import '../base/os.dart'; import '../base/process.dart'; import '../build_configuration.dart'; import '../device.dart'; import '../flx.dart' as flx; +import '../globals.dart'; import '../toolchain.dart'; import 'adb.dart'; import 'android.dart';
diff --git a/packages/flutter_tools/lib/src/artifacts.dart b/packages/flutter_tools/lib/src/artifacts.dart index b57d81b..6f962a9 100644 --- a/packages/flutter_tools/lib/src/artifacts.dart +++ b/packages/flutter_tools/lib/src/artifacts.dart
@@ -8,10 +8,10 @@ import 'package:archive/archive.dart'; import 'package:path/path.dart' as path; -import 'base/globals.dart'; import 'base/os.dart'; import 'base/process.dart'; import 'build_configuration.dart'; +import 'globals.dart'; String _getNameForHostPlatform(HostPlatform platform) { switch (platform) {
diff --git a/packages/flutter_tools/lib/src/base/process.dart b/packages/flutter_tools/lib/src/base/process.dart index 28b4df5..1009e96 100644 --- a/packages/flutter_tools/lib/src/base/process.dart +++ b/packages/flutter_tools/lib/src/base/process.dart
@@ -6,7 +6,7 @@ import 'dart:convert'; import 'dart:io'; -import 'globals.dart'; +import '../globals.dart'; typedef String StringConverter(String string);
diff --git a/packages/flutter_tools/lib/src/build_configuration.dart b/packages/flutter_tools/lib/src/build_configuration.dart index 160334b..0dc165f 100644 --- a/packages/flutter_tools/lib/src/build_configuration.dart +++ b/packages/flutter_tools/lib/src/build_configuration.dart
@@ -6,7 +6,7 @@ import 'package:path/path.dart' as path; -import 'base/globals.dart'; +import 'globals.dart'; enum BuildType { prebuilt,
diff --git a/packages/flutter_tools/lib/src/commands/analyze.dart b/packages/flutter_tools/lib/src/commands/analyze.dart index b50b90e..d5a929d 100644 --- a/packages/flutter_tools/lib/src/commands/analyze.dart +++ b/packages/flutter_tools/lib/src/commands/analyze.dart
@@ -11,14 +11,14 @@ import 'package:path/path.dart' as path; import '../artifacts.dart'; -import '../base/globals.dart'; import '../base/process.dart'; import '../build_configuration.dart'; +import '../globals.dart'; import '../runner/flutter_command.dart'; class AnalyzeCommand extends FlutterCommand { String get name => 'analyze'; - String get description => 'Runs a carefully configured dartanalyzer over the current project\'s Dart code.'; + String get description => 'Analyze the project\'s Dart code.'; AnalyzeCommand() { argParser.addFlag('flutter-repo', help: 'Include all the examples and tests from the Flutter repository.', defaultsTo: false);
diff --git a/packages/flutter_tools/lib/src/commands/apk.dart b/packages/flutter_tools/lib/src/commands/apk.dart index ffc6781..57fb54e 100644 --- a/packages/flutter_tools/lib/src/commands/apk.dart +++ b/packages/flutter_tools/lib/src/commands/apk.dart
@@ -11,12 +11,12 @@ import '../application_package.dart'; import '../artifacts.dart'; import '../base/file_system.dart'; -import '../base/globals.dart'; import '../base/os.dart'; import '../base/process.dart'; import '../build_configuration.dart'; import '../device.dart'; import '../flx.dart' as flx; +import '../globals.dart'; import '../runner/flutter_command.dart'; import '../services.dart'; import '../toolchain.dart';
diff --git a/packages/flutter_tools/lib/src/commands/build.dart b/packages/flutter_tools/lib/src/commands/build.dart index 5e1f763..4318334 100644 --- a/packages/flutter_tools/lib/src/commands/build.dart +++ b/packages/flutter_tools/lib/src/commands/build.dart
@@ -4,14 +4,14 @@ import 'dart:async'; -import '../base/globals.dart'; import '../flx.dart'; +import '../globals.dart'; import '../runner/flutter_command.dart'; import '../toolchain.dart'; class BuildCommand extends FlutterCommand { final String name = 'build'; - final String description = 'Packages your Flutter app into an FLX.'; + final String description = 'Package your Flutter app into an FLX.'; BuildCommand() { argParser.addFlag('precompiled', negatable: false);
diff --git a/packages/flutter_tools/lib/src/commands/cache.dart b/packages/flutter_tools/lib/src/commands/cache.dart index 872dc43..c33d046 100644 --- a/packages/flutter_tools/lib/src/commands/cache.dart +++ b/packages/flutter_tools/lib/src/commands/cache.dart
@@ -7,7 +7,7 @@ import 'package:args/command_runner.dart'; import '../artifacts.dart'; -import '../base/globals.dart'; +import '../globals.dart'; class CacheCommand extends Command { final String name = 'cache';
diff --git a/packages/flutter_tools/lib/src/commands/create.dart b/packages/flutter_tools/lib/src/commands/create.dart index 3f9f0cf..14f6db9 100644 --- a/packages/flutter_tools/lib/src/commands/create.dart +++ b/packages/flutter_tools/lib/src/commands/create.dart
@@ -11,8 +11,8 @@ import '../android/android.dart' as android; import '../artifacts.dart'; -import '../base/globals.dart'; import '../dart/pub.dart'; +import '../globals.dart'; import '../ios/setup_xcodeproj.dart'; class CreateCommand extends Command {
diff --git a/packages/flutter_tools/lib/src/commands/daemon.dart b/packages/flutter_tools/lib/src/commands/daemon.dart index 4fdb860..252e929 100644 --- a/packages/flutter_tools/lib/src/commands/daemon.dart +++ b/packages/flutter_tools/lib/src/commands/daemon.dart
@@ -10,9 +10,9 @@ import '../android/android_sdk.dart'; import '../android/device_android.dart'; import '../base/context.dart'; -import '../base/globals.dart'; import '../base/logger.dart'; import '../device.dart'; +import '../globals.dart'; import '../ios/device_ios.dart'; import '../ios/simulator.dart'; import '../runner/flutter_command.dart';
diff --git a/packages/flutter_tools/lib/src/commands/devices.dart b/packages/flutter_tools/lib/src/commands/devices.dart index 3ff2697..6531c63 100644 --- a/packages/flutter_tools/lib/src/commands/devices.dart +++ b/packages/flutter_tools/lib/src/commands/devices.dart
@@ -4,8 +4,8 @@ import 'dart:async'; -import '../base/globals.dart'; import '../device.dart'; +import '../globals.dart'; import '../runner/flutter_command.dart'; class DevicesCommand extends FlutterCommand {
diff --git a/packages/flutter_tools/lib/src/commands/doctor.dart b/packages/flutter_tools/lib/src/commands/doctor.dart index ed049d0..dd30c60 100644 --- a/packages/flutter_tools/lib/src/commands/doctor.dart +++ b/packages/flutter_tools/lib/src/commands/doctor.dart
@@ -5,20 +5,20 @@ import 'dart:async'; import '../artifacts.dart'; -import '../base/globals.dart'; +import '../globals.dart'; import '../runner/flutter_command.dart'; import '../runner/version.dart'; class DoctorCommand extends FlutterCommand { final String name = 'doctor'; - final String description = 'Diagnose the flutter tool.'; + final String description = 'Show information about the installed tooling.'; bool get requiresProjectRoot => false; Future<int> runInProject() async { // general info String flutterRoot = ArtifactStore.flutterRoot; - printStatus('Flutter root is $flutterRoot.'); + printStatus('Flutter root: $flutterRoot.'); printStatus(''); // doctor
diff --git a/packages/flutter_tools/lib/src/commands/listen.dart b/packages/flutter_tools/lib/src/commands/listen.dart index f768088..e52cfc0 100644 --- a/packages/flutter_tools/lib/src/commands/listen.dart +++ b/packages/flutter_tools/lib/src/commands/listen.dart
@@ -5,8 +5,8 @@ import 'dart:async'; import 'dart:io'; -import '../base/globals.dart'; import '../base/process.dart'; +import '../globals.dart'; import 'run.dart'; class ListenCommand extends RunCommandBase {
diff --git a/packages/flutter_tools/lib/src/commands/logs.dart b/packages/flutter_tools/lib/src/commands/logs.dart index 81956b6..06d6622 100644 --- a/packages/flutter_tools/lib/src/commands/logs.dart +++ b/packages/flutter_tools/lib/src/commands/logs.dart
@@ -4,13 +4,13 @@ import 'dart:async'; -import '../base/globals.dart'; import '../device.dart'; +import '../globals.dart'; import '../runner/flutter_command.dart'; class LogsCommand extends FlutterCommand { final String name = 'logs'; - final String description = 'Show logs for running Flutter apps.'; + final String description = 'Show log output for running Flutter apps.'; LogsCommand() { argParser.addFlag('clear',
diff --git a/packages/flutter_tools/lib/src/commands/refresh.dart b/packages/flutter_tools/lib/src/commands/refresh.dart index d4d5fc1..bed138d 100644 --- a/packages/flutter_tools/lib/src/commands/refresh.dart +++ b/packages/flutter_tools/lib/src/commands/refresh.dart
@@ -7,8 +7,8 @@ import 'package:path/path.dart' as path; -import '../base/globals.dart'; import '../flx.dart'; +import '../globals.dart'; import '../runner/flutter_command.dart'; class RefreshCommand extends FlutterCommand {
diff --git a/packages/flutter_tools/lib/src/commands/run.dart b/packages/flutter_tools/lib/src/commands/run.dart index 1ae20a5..c4fcb7b 100644 --- a/packages/flutter_tools/lib/src/commands/run.dart +++ b/packages/flutter_tools/lib/src/commands/run.dart
@@ -9,11 +9,11 @@ import '../application_package.dart'; import '../base/common.dart'; -import '../base/globals.dart'; import '../build_configuration.dart'; import '../dart/pub.dart'; import '../device.dart'; import '../flx.dart'; +import '../globals.dart'; import '../runner/flutter_command.dart'; import '../toolchain.dart'; import 'apk.dart';
diff --git a/packages/flutter_tools/lib/src/commands/run_mojo.dart b/packages/flutter_tools/lib/src/commands/run_mojo.dart index 28b6fbd..d6e8a92 100644 --- a/packages/flutter_tools/lib/src/commands/run_mojo.dart +++ b/packages/flutter_tools/lib/src/commands/run_mojo.dart
@@ -8,10 +8,10 @@ import 'package:path/path.dart' as path; import '../artifacts.dart'; -import '../base/globals.dart'; import '../base/process.dart'; import '../build_configuration.dart'; import '../flx.dart' as flx; +import '../globals.dart'; import '../runner/flutter_command.dart'; import 'run.dart';
diff --git a/packages/flutter_tools/lib/src/commands/test.dart b/packages/flutter_tools/lib/src/commands/test.dart index 91e0fbe..fcd2324 100644 --- a/packages/flutter_tools/lib/src/commands/test.dart +++ b/packages/flutter_tools/lib/src/commands/test.dart
@@ -9,14 +9,14 @@ import 'package:test/src/executable.dart' as executable; import '../artifacts.dart'; -import '../base/globals.dart'; import '../build_configuration.dart'; +import '../globals.dart'; import '../runner/flutter_command.dart'; import '../test/loader.dart' as loader; class TestCommand extends FlutterCommand { String get name => 'test'; - String get description => 'Runs Flutter unit tests for the current project (Linux only).'; + String get description => 'Run Flutter unit tests for the current project (Linux only).'; bool get requiresProjectRoot => false;
diff --git a/packages/flutter_tools/lib/src/commands/trace.dart b/packages/flutter_tools/lib/src/commands/trace.dart index 365d552..a5b0744 100644 --- a/packages/flutter_tools/lib/src/commands/trace.dart +++ b/packages/flutter_tools/lib/src/commands/trace.dart
@@ -6,7 +6,7 @@ import '../android/device_android.dart'; import '../application_package.dart'; -import '../base/globals.dart'; +import '../globals.dart'; import '../runner/flutter_command.dart'; class TraceCommand extends FlutterCommand {
diff --git a/packages/flutter_tools/lib/src/commands/upgrade.dart b/packages/flutter_tools/lib/src/commands/upgrade.dart index 48b4c8f..fbe67ee 100644 --- a/packages/flutter_tools/lib/src/commands/upgrade.dart +++ b/packages/flutter_tools/lib/src/commands/upgrade.dart
@@ -5,8 +5,8 @@ import 'dart:async'; import '../artifacts.dart'; -import '../base/globals.dart'; import '../base/process.dart'; +import '../globals.dart'; import '../runner/flutter_command.dart'; import '../runner/version.dart';
diff --git a/packages/flutter_tools/lib/src/dart/pub.dart b/packages/flutter_tools/lib/src/dart/pub.dart index 1856561..709d034 100644 --- a/packages/flutter_tools/lib/src/dart/pub.dart +++ b/packages/flutter_tools/lib/src/dart/pub.dart
@@ -7,8 +7,8 @@ import 'package:path/path.dart' as path; -import '../base/globals.dart'; import '../base/process.dart'; +import '../globals.dart'; Future<int> pubGet({ String directory,
diff --git a/packages/flutter_tools/lib/src/device.dart b/packages/flutter_tools/lib/src/device.dart index 274d1ff..28c9333 100644 --- a/packages/flutter_tools/lib/src/device.dart +++ b/packages/flutter_tools/lib/src/device.dart
@@ -7,8 +7,8 @@ import 'android/device_android.dart'; import 'application_package.dart'; import 'base/common.dart'; -import 'base/globals.dart'; import 'build_configuration.dart'; +import 'globals.dart'; import 'ios/device_ios.dart'; import 'toolchain.dart';
diff --git a/packages/flutter_tools/lib/src/doctor.dart b/packages/flutter_tools/lib/src/doctor.dart index 4fb4386..d5f1d99 100644 --- a/packages/flutter_tools/lib/src/doctor.dart +++ b/packages/flutter_tools/lib/src/doctor.dart
@@ -4,7 +4,7 @@ import 'android/android_workflow.dart'; import 'base/context.dart'; -import 'base/globals.dart'; +import 'globals.dart'; import 'ios/ios_workflow.dart'; class Doctor { @@ -34,6 +34,35 @@ List<Workflow> get workflows => _workflows; + /// Print a summary of the state of the tooling, as well as how to get more info. + void summary() => printStatus(summaryText); + + String get summaryText { + StringBuffer buffer = new StringBuffer(); + + bool allGood = true; + + for (Workflow workflow in workflows) { + ValidationResult result = workflow.validate(); + buffer.write('${result.leadingBox} The ${workflow.name} toolchain is '); + if (result.type == ValidationType.missing) + buffer.writeln('not installed.'); + else if (result.type == ValidationType.partial) + buffer.writeln('partially installed; more components are available.'); + else + buffer.writeln('fully installed.'); + if (result.type != ValidationType.installed) + allGood = false; + } + + if (!allGood) { + buffer.writeln(); + buffer.write('Run "flutter doctor" for information about installing additional components.'); + } + + return buffer.toString(); + } + /// Print verbose information about the state of installed tooling. void diagnose() { for (int i = 0; i < workflows.length; i++) { @@ -63,6 +92,8 @@ /// Could this thing launch *something*? It may still have minor issues. bool get canLaunchDevices; + ValidationResult validate(); + /// Print verbose information about the state of the workflow. void diagnose(); @@ -85,20 +116,28 @@ final String resolution; final ValidationFunction validatorFunction; - List<Validator> _children = []; + List<Validator> _children = <Validator>[]; ValidationResult validate() { + List<ValidationResult> childResults; + ValidationType type; + if (validatorFunction != null) - return new ValidationResult(validatorFunction(), this); + type = validatorFunction(); - List<ValidationResult> results = _children.map((Validator child) { - return child.validate(); - }).toList(); + childResults = _children.map((Validator child) => child.validate()).toList(); - ValidationType type = _combine(results.map((ValidationResult result) { - return result.type; - })); - return new ValidationResult(type, this, results); + // If there's no immediate validator, the result we return is synthesized + // from the sub-tree of children. This is so we can show that the branch is + // not fully installed. + if (type == null) { + type = _combine(childResults + .expand((ValidationResult child) => child._allResults) + .map((ValidationResult result) => result.type) + ); + } + + return new ValidationResult(type, this, childResults); } ValidationType _combine(Iterable<ValidationType> types) { @@ -119,6 +158,15 @@ final Validator validator; final List<ValidationResult> childResults; + String get leadingBox { + if (type == ValidationType.missing) + return '[ ]'; + else if (type == ValidationType.installed) + return '[✓]'; + else + return '[-]'; + } + void print([String indent = '']) { printSelf(indent); @@ -126,15 +174,15 @@ child.print(indent + ' '); } - void printSelf(String indent) { + void printSelf([String indent = '']) { String result = indent; if (type == ValidationType.missing) - result += '[ ] '; + result += '$leadingBox '; else if (type == ValidationType.installed) - result += '[✓] '; + result += '$leadingBox '; else - result += '[-] '; + result += '$leadingBox '; result += '${validator.name} '; @@ -151,4 +199,10 @@ if (type == ValidationType.missing && validator.resolution != null) printStatus('$indent ${validator.resolution}'); } + + List<ValidationResult> get _allResults { + List<ValidationResult> results = <ValidationResult>[this]; + results.addAll(childResults); + return results; + } }
diff --git a/packages/flutter_tools/lib/src/flx.dart b/packages/flutter_tools/lib/src/flx.dart index 2e03bd1..e12c434 100644 --- a/packages/flutter_tools/lib/src/flx.dart +++ b/packages/flutter_tools/lib/src/flx.dart
@@ -14,7 +14,7 @@ import 'package:yaml/yaml.dart'; import 'base/file_system.dart'; -import 'base/globals.dart'; +import 'globals.dart'; import 'toolchain.dart'; const String defaultMainPath = 'lib/main.dart';
diff --git a/packages/flutter_tools/lib/src/base/globals.dart b/packages/flutter_tools/lib/src/globals.dart similarity index 86% rename from packages/flutter_tools/lib/src/base/globals.dart rename to packages/flutter_tools/lib/src/globals.dart index d4f1398..efd072e 100644 --- a/packages/flutter_tools/lib/src/base/globals.dart +++ b/packages/flutter_tools/lib/src/globals.dart
@@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import '../android/android_sdk.dart'; -import '../device.dart'; -import '../doctor.dart'; -import '../ios/mac.dart'; -import 'context.dart'; -import 'logger.dart'; +import 'android/android_sdk.dart'; +import 'base/context.dart'; +import 'base/logger.dart'; +import 'device.dart'; +import 'doctor.dart'; +import 'ios/mac.dart'; DeviceManager get deviceManager => context[DeviceManager]; Logger get logger => context[Logger];
diff --git a/packages/flutter_tools/lib/src/ios/device_ios.dart b/packages/flutter_tools/lib/src/ios/device_ios.dart index eebcf18..b6a667c 100644 --- a/packages/flutter_tools/lib/src/ios/device_ios.dart +++ b/packages/flutter_tools/lib/src/ios/device_ios.dart
@@ -3,21 +3,21 @@ // found in the LICENSE file. import 'dart:async'; -import 'dart:io'; import 'dart:convert'; +import 'dart:io'; import 'package:path/path.dart' as path; import '../application_package.dart'; import '../artifacts.dart'; import '../base/common.dart'; -import '../base/globals.dart'; import '../base/process.dart'; import '../build_configuration.dart'; import '../device.dart'; +import '../globals.dart'; +import '../ios/setup_xcodeproj.dart'; import '../services.dart'; import '../toolchain.dart'; -import '../ios/setup_xcodeproj.dart'; import 'simulator.dart'; const String _ideviceinstallerInstructions =
diff --git a/packages/flutter_tools/lib/src/ios/ios_workflow.dart b/packages/flutter_tools/lib/src/ios/ios_workflow.dart index 8dfc94f..5cc4f70 100644 --- a/packages/flutter_tools/lib/src/ios/ios_workflow.dart +++ b/packages/flutter_tools/lib/src/ios/ios_workflow.dart
@@ -4,9 +4,9 @@ import 'dart:io'; -import '../base/globals.dart'; import '../base/process.dart'; import '../doctor.dart'; +import '../globals.dart'; class IOSWorkflow extends Workflow { IOSWorkflow() : super('iOS'); @@ -20,8 +20,11 @@ // for real devices. bool get canLaunchDevices => xcode.isInstalled; - void diagnose() { - Validator iosValidator = new Validator('Develop for iOS devices'); + ValidationResult validate() { + Validator iosValidator = new Validator( + '$name toolchain', + description: 'develop for iOS devices' + ); Function _xcodeExists = () { return xcode.isInstalled ? ValidationType.installed : ValidationType.missing; @@ -48,30 +51,34 @@ validatorFunction: _xcodeExists )); - iosValidator.addValidator(new Validator( + Validator brewValidator = new Validator( 'brew', description: 'install additional development packages', resolution: 'Download at http://brew.sh/', validatorFunction: _brewExists - )); + ); - iosValidator.addValidator(new Validator( + iosValidator.addValidator(brewValidator); + + brewValidator.addValidator(new Validator( 'ideviceinstaller', description: 'discover connected iOS devices', resolution: "Install via 'brew install ideviceinstaller'", validatorFunction: _ideviceinstallerExists )); - iosValidator.addValidator(new Validator( + brewValidator.addValidator(new Validator( 'ios-deploy', description: 'deploy to connected iOS devices', resolution: "Install via 'brew install ios-deploy'", validatorFunction: _iosdeployExists )); - iosValidator.validate().print(); + return iosValidator.validate(); } + void diagnose() => validate().print(); + bool get hasIdeviceId => exitsHappy(<String>['idevice_id', '-h']); /// Return whether the tooling to list and deploy to real iOS devices (not the
diff --git a/packages/flutter_tools/lib/src/ios/setup_xcodeproj.dart b/packages/flutter_tools/lib/src/ios/setup_xcodeproj.dart index 3d39175..ce97d94 100644 --- a/packages/flutter_tools/lib/src/ios/setup_xcodeproj.dart +++ b/packages/flutter_tools/lib/src/ios/setup_xcodeproj.dart
@@ -8,8 +8,8 @@ import 'package:path/path.dart' as path; import '../artifacts.dart'; -import '../base/globals.dart'; import '../base/process.dart'; +import '../globals.dart'; import '../runner/flutter_command_runner.dart'; /// A map from file path to file contents.
diff --git a/packages/flutter_tools/lib/src/ios/simulator.dart b/packages/flutter_tools/lib/src/ios/simulator.dart index f776382..3328191 100644 --- a/packages/flutter_tools/lib/src/ios/simulator.dart +++ b/packages/flutter_tools/lib/src/ios/simulator.dart
@@ -6,8 +6,8 @@ import 'dart:convert' show JSON; import 'dart:io'; -import '../base/globals.dart'; import '../base/process.dart'; +import '../globals.dart'; const String _xcrunPath = '/usr/bin/xcrun';
diff --git a/packages/flutter_tools/lib/src/runner/flutter_command.dart b/packages/flutter_tools/lib/src/runner/flutter_command.dart index 2e94cbc..6bc0cd2 100644 --- a/packages/flutter_tools/lib/src/runner/flutter_command.dart +++ b/packages/flutter_tools/lib/src/runner/flutter_command.dart
@@ -9,9 +9,9 @@ import '../application_package.dart'; import '../artifacts.dart'; -import '../base/globals.dart'; import '../build_configuration.dart'; import '../device.dart'; +import '../globals.dart'; import '../toolchain.dart'; import 'flutter_command_runner.dart';
diff --git a/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart b/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart index 9e68c79..5b5d6b6 100644 --- a/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart +++ b/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart
@@ -12,9 +12,9 @@ import '../android/android_sdk.dart'; import '../artifacts.dart'; import '../base/context.dart'; -import '../base/globals.dart'; import '../base/process.dart'; import '../build_configuration.dart'; +import '../globals.dart'; import 'version.dart'; const String kFlutterRootEnvironmentVariableName = 'FLUTTER_ROOT'; // should point to //flutter/ (root of flutter/flutter repo) @@ -45,6 +45,7 @@ else packagesHelp = '\n(required, since the current directory does not contain a "packages" subdirectory)'; argParser.addOption('package-root', + hide: !verboseHelp, help: 'Path to your packages directory.$packagesHelp'); argParser.addOption('flutter-root', help: 'The root directory of the Flutter repository. Uses \$$kFlutterRootEnvironmentVariableName if set,\n' @@ -122,7 +123,10 @@ defaultsTo: 'out/ios_sim_Release/'); } - final String usageFooter = 'Run "flutter -h -v" for verbose help output, including less commonly used options.'; + String get usageFooter => + 'Run "flutter -h -v" for verbose help output, including less commonly used options.\n' + '\n' + '${doctor.summaryText}'; List<BuildConfiguration> get buildConfigurations { if (_buildConfigurations == null) @@ -191,6 +195,8 @@ if (globalResults['version']) { printStatus(getVersion(ArtifactStore.flutterRoot)); + printStatus(''); + doctor.summary(); return new Future<int>.value(0); }
diff --git a/packages/flutter_tools/lib/src/services.dart b/packages/flutter_tools/lib/src/services.dart index ca422b7..ce08d09 100644 --- a/packages/flutter_tools/lib/src/services.dart +++ b/packages/flutter_tools/lib/src/services.dart
@@ -10,7 +10,7 @@ import 'package:yaml/yaml.dart'; import 'artifacts.dart'; -import 'base/globals.dart'; +import 'globals.dart'; const String _kFlutterManifestPath = 'flutter.yaml'; const String _kFlutterServicesManifestPath = 'flutter_services.yaml';
diff --git a/packages/flutter_tools/test/context_test.dart b/packages/flutter_tools/test/context_test.dart index 74ecb0c..1de5840 100644 --- a/packages/flutter_tools/test/context_test.dart +++ b/packages/flutter_tools/test/context_test.dart
@@ -3,8 +3,8 @@ // found in the LICENSE file. import 'package:flutter_tools/src/base/context.dart' hide context; -import 'package:flutter_tools/src/base/globals.dart'; import 'package:flutter_tools/src/base/logger.dart'; +import 'package:flutter_tools/src/globals.dart'; import 'package:test/test.dart'; main() => defineTests();
diff --git a/packages/flutter_tools/test/daemon_test.dart b/packages/flutter_tools/test/daemon_test.dart index e735bd3..70035a9 100644 --- a/packages/flutter_tools/test/daemon_test.dart +++ b/packages/flutter_tools/test/daemon_test.dart
@@ -5,9 +5,9 @@ import 'dart:async'; import 'package:flutter_tools/src/base/context.dart'; -import 'package:flutter_tools/src/base/globals.dart'; import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/commands/daemon.dart'; +import 'package:flutter_tools/src/globals.dart'; import 'package:mockito/mockito.dart'; import 'package:test/test.dart';