From 4daee0cc0d58a0ab700ecd2c1ce9839727e6ec41 Mon Sep 17 00:00:00 2001 From: Devon Carew Date: Mon, 14 Mar 2016 09:41:00 -0700 Subject: [PATCH] misc tool ui cleanup --- packages/flutter_tools/lib/executable.dart | 11 +++++++- packages/flutter_tools/lib/src/artifacts.dart | 4 +-- .../lib/src/commands/devices.dart | 4 +-- packages/flutter_tools/lib/src/device.dart | 25 +++++++++++++++---- .../lib/src/runner/flutter_command.dart | 7 +++--- packages/flutter_tools/lib/src/template.dart | 4 +-- 6 files changed, 37 insertions(+), 18 deletions(-) diff --git a/packages/flutter_tools/lib/executable.dart b/packages/flutter_tools/lib/executable.dart index c7959ea8e1..313d6e1636 100644 --- a/packages/flutter_tools/lib/executable.dart +++ b/packages/flutter_tools/lib/executable.dart @@ -42,6 +42,12 @@ Future main(List args) async { bool verbose = args.contains('-v') || args.contains('--verbose'); bool verboseHelp = help && verbose; + if (verboseHelp) { + // Remove the verbose option; for help, users don't need to see verbose logs. + args = new List.from(args); + args.removeWhere((String option) => option == '-v' || option == '--verbose'); + } + FlutterCommandRunner runner = new FlutterCommandRunner(verboseHelp: verboseHelp) ..addCommand(new AnalyzeCommand()) ..addCommand(new ApkCommand()) @@ -75,7 +81,10 @@ Future main(List args) async { exit(result); }, onError: (dynamic error, Chain chain) { if (error is UsageException) { - stderr.writeln(error); + stderr.writeln(error.message); + stderr.writeln(); + stderr.writeln("Run 'flutter -h' (or 'flutter -h') for available " + "flutter commands and options."); // Argument error exit code. exit(64); } else if (error is ProcessExit) { diff --git a/packages/flutter_tools/lib/src/artifacts.dart b/packages/flutter_tools/lib/src/artifacts.dart index b1bab87557..cf7b354149 100644 --- a/packages/flutter_tools/lib/src/artifacts.dart +++ b/packages/flutter_tools/lib/src/artifacts.dart @@ -21,7 +21,7 @@ String _getNameForHostPlatform(HostPlatform platform) { } } -String _getNameForTargetPlatform(TargetPlatform platform) { +String getNameForTargetPlatform(TargetPlatform platform) { switch (platform) { case TargetPlatform.android_arm: return 'android-arm'; @@ -63,7 +63,7 @@ class Artifact { String get platform { if (targetPlatform != null) - return _getNameForTargetPlatform(targetPlatform); + return getNameForTargetPlatform(targetPlatform); if (hostPlatform != null) return _getNameForHostPlatform(hostPlatform); assert(false); diff --git a/packages/flutter_tools/lib/src/commands/devices.dart b/packages/flutter_tools/lib/src/commands/devices.dart index 61b9b42bd0..1f3b071014 100644 --- a/packages/flutter_tools/lib/src/commands/devices.dart +++ b/packages/flutter_tools/lib/src/commands/devices.dart @@ -29,9 +29,7 @@ class DevicesCommand extends FlutterCommand { printStatus('No connected devices.'); } else { printStatus('${devices.length} connected ${pluralize('device', devices.length)}:\n'); - - for (Device device in devices) - printStatus(device.fullDescription); + Device.printDevices(devices); } return 0; diff --git a/packages/flutter_tools/lib/src/device.dart b/packages/flutter_tools/lib/src/device.dart index 5b6406a89d..9201dff4d6 100644 --- a/packages/flutter_tools/lib/src/device.dart +++ b/packages/flutter_tools/lib/src/device.dart @@ -3,12 +3,15 @@ // found in the LICENSE file. import 'dart:async'; +import 'dart:math' as math; import 'android/android_device.dart'; import 'application_package.dart'; +import 'artifacts.dart'; import 'base/common.dart'; import 'base/utils.dart'; import 'build_configuration.dart'; +import 'globals.dart'; import 'ios/devices.dart'; import 'ios/simulators.dart'; import 'toolchain.dart'; @@ -140,11 +143,6 @@ abstract class Device { bool get supportsStartPaused => true; - String get fullDescription { - String supportIndicator = isSupported() ? '' : ' - unsupported'; - return '$name ($id)$supportIndicator'; - } - /// Whether it is an emulated device running on localhost. bool get isLocalEmulator; @@ -202,6 +200,23 @@ abstract class Device { } String toString() => name; + + static void printDevices(List devices) { + int nameWidth = 0; + int idWidth = 0; + + for (Device device in devices) { + nameWidth = math.max(nameWidth, device.name.length); + idWidth = math.max(idWidth, device.id.length); + } + + for (Device device in devices) { + String supportIndicator = device.isSupported() ? '' : ' (unsupported)'; + printStatus('${device.name.padRight(nameWidth)} • ' + '${device.id.padRight(idWidth)} • ' + '${getNameForTargetPlatform(device.platform)}$supportIndicator'); + } + } } class ForwardedPort { diff --git a/packages/flutter_tools/lib/src/runner/flutter_command.dart b/packages/flutter_tools/lib/src/runner/flutter_command.dart index 5351d1c7ed..ede9f0b58a 100644 --- a/packages/flutter_tools/lib/src/runner/flutter_command.dart +++ b/packages/flutter_tools/lib/src/runner/flutter_command.dart @@ -47,8 +47,8 @@ abstract class FlutterCommand extends Command { Stopwatch stopwatch = new Stopwatch()..start(); return _run().then((int exitCode) { - printTrace("'flutter $name' exiting with code $exitCode; " - "elasped time ${stopwatch.elapsedMilliseconds}ms."); + int ms = stopwatch.elapsedMilliseconds; + printTrace("'flutter $name' took ${ms}ms; exiting with code $exitCode."); return exitCode; }); } @@ -90,8 +90,7 @@ abstract class FlutterCommand extends Command { "the '-d ' flag."); printStatus(''); devices = await deviceManager.getAllConnectedDevices(); - for (Device device in devices) - printStatus(device.fullDescription); + Device.printDevices(devices); return 1; } else { _deviceForCommand = devices.single; diff --git a/packages/flutter_tools/lib/src/template.dart b/packages/flutter_tools/lib/src/template.dart index ac3df178da..a2a23111f4 100644 --- a/packages/flutter_tools/lib/src/template.dart +++ b/packages/flutter_tools/lib/src/template.dart @@ -72,9 +72,7 @@ class Template { .replaceAll(_kCopyTemplateExtension, '') .replaceAll(_kTemplateExtension, ''); File finalDestinationFile = new File(finalDestinationPath); - String relativePathForLogging = relativeDestPath - .replaceAll(_kCopyTemplateExtension, '') - .replaceAll(_kTemplateExtension, ''); + String relativePathForLogging = path.relative(finalDestinationFile.path); // Step 1: Check if the file needs to be overwritten.