improve flutter create error message (#6525)
diff --git a/packages/flutter_tools/lib/src/commands/create.dart b/packages/flutter_tools/lib/src/commands/create.dart index d53d573..e8d5525 100644 --- a/packages/flutter_tools/lib/src/commands/create.dart +++ b/packages/flutter_tools/lib/src/commands/create.dart
@@ -47,13 +47,19 @@ @override Future<int> runCommand() async { if (argResults.rest.isEmpty) { - printStatus('No option specified for the output directory.'); - printStatus(usage); + printError('No option specified for the output directory.'); + printError(usage); return 2; } if (argResults.rest.length > 1) { - printStatus('Multiple output directories specified.'); + printError('Multiple output directories specified.'); + for (String arg in argResults.rest) { + if (arg.startsWith('-')) { + printError('Try moving $arg to be immediately following $name'); + break; + } + } return 2; }
diff --git a/packages/flutter_tools/test/create_test.dart b/packages/flutter_tools/test/create_test.dart index f9b472b..dc7ad25 100644 --- a/packages/flutter_tools/test/create_test.dart +++ b/packages/flutter_tools/test/create_test.dart
@@ -7,6 +7,7 @@ import 'dart:io'; import 'package:args/command_runner.dart'; +import 'package:flutter_tools/src/base/logger.dart'; import 'package:flutter_tools/src/cache.dart'; import 'package:flutter_tools/src/commands/create.dart'; import 'package:flutter_tools/src/dart/sdk.dart'; @@ -82,6 +83,21 @@ expect(code, 0); }); + // Verify that we help the user correct an option ordering issue + BufferLogger logger = new BufferLogger(); + testUsingContext('produces sensible error message', () async { + Cache.flutterRoot = '../..'; + + CreateCommand command = new CreateCommand(); + CommandRunner runner = createTestCommandRunner(command); + + int code = await runner.run(<String>['create', temp.path, '--pub']); + expect(code, 2); + expect(logger.errorText, contains('Try moving --pub')); + }, overrides: <Type, dynamic>{ + Logger: logger, + }); + // Verify that we fail with an error code when the file exists. testUsingContext('fails when file exists', () async { Cache.flutterRoot = '../..';