From bb0a6757fcb25692e1d9f87bcc435678d30dcbd9 Mon Sep 17 00:00:00 2001 From: Dan Rubel Date: Thu, 8 Sep 2016 17:37:39 -0400 Subject: [PATCH] Suggest simulator when no devices (#5770) When flutter run is used on a Mac and no devices are specified or attached, suggest launching a simulator first. Fixes https://github.com/flutter/flutter/issues/5674 --- packages/flutter_tools/lib/src/commands/run.dart | 13 +++++++++++++ .../lib/src/runner/flutter_command.dart | 6 +++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/flutter_tools/lib/src/commands/run.dart b/packages/flutter_tools/lib/src/commands/run.dart index a7e2c08ee21..617a9b5d7b7 100644 --- a/packages/flutter_tools/lib/src/commands/run.dart +++ b/packages/flutter_tools/lib/src/commands/run.dart @@ -13,6 +13,7 @@ import '../cache.dart'; import '../device.dart'; import '../globals.dart'; import '../hot.dart'; +import '../ios/mac.dart'; import '../vmservice.dart'; import '../resident_runner.dart'; import '../run.dart'; @@ -98,6 +99,18 @@ class RunCommand extends RunCommandBase { return '$command/${getNameForTargetPlatform(device.platform)}'; } + @override + void printNoConnectedDevices() { + super.printNoConnectedDevices(); + if (getCurrentHostPlatform() == HostPlatform.darwin_x64 && + XCode.instance.isInstalledAndMeetsVersionCheck) { + printStatus(''); + printStatus('To run on a simulator, launch it first:'); + printStatus('open -a Simulator.app'); + printStatus(''); + } + } + @override Future runInProject() async { int debugPort; diff --git a/packages/flutter_tools/lib/src/runner/flutter_command.dart b/packages/flutter_tools/lib/src/runner/flutter_command.dart index bb92b0d9894..90522c106c2 100644 --- a/packages/flutter_tools/lib/src/runner/flutter_command.dart +++ b/packages/flutter_tools/lib/src/runner/flutter_command.dart @@ -141,7 +141,7 @@ abstract class FlutterCommand extends Command { "matching '${deviceManager.specifiedDeviceId}'"); return 1; } else if (devices.isEmpty) { - printStatus('No connected devices.'); + printNoConnectedDevices(); return 1; } @@ -192,6 +192,10 @@ abstract class FlutterCommand extends Command { return await runInProject(); } + void printNoConnectedDevices() { + printStatus('No connected devices.'); + } + // This is a field so that you can modify the value for testing. Validator commandValidator;