Improve the error message when a target is specified but not found.
https://github.com/flutter/flutter/issues/2368
diff --git a/packages/flutter_tools/lib/src/runner/flutter_command.dart b/packages/flutter_tools/lib/src/runner/flutter_command.dart
index d43f121..c916ca6 100644
--- a/packages/flutter_tools/lib/src/runner/flutter_command.dart
+++ b/packages/flutter_tools/lib/src/runner/flutter_command.dart
@@ -21,7 +21,7 @@
FlutterCommandRunner get runner => super.runner;
/// Whether this command needs to be run from the root of a project.
- bool get requiresProjectRoot => !_targetSpecified;
+ bool get requiresProjectRoot => true;
/// Whether this command requires a (single) Flutter target device to be connected.
bool get requiresDevice => false;
@@ -29,6 +29,10 @@
/// Whether this command only applies to Android devices.
bool get androidOnly => false;
+ /// Whether this command allows usage of the 'target' option.
+ bool get allowsTarget => _targetOptionSpecified;
+ bool _targetOptionSpecified = false;
+
List<BuildConfiguration> get buildConfigurations => runner.buildConfigurations;
Future downloadToolchain() async {
@@ -59,7 +63,8 @@
}
Future<int> _run() async {
- if (requiresProjectRoot && !projectRootValidator())
+ bool _checkRoot = requiresProjectRoot && allowsTarget && !_targetSpecified;
+ if (_checkRoot && !projectRootValidator())
return 1;
// Ensure at least one toolchain is installed.
@@ -152,5 +157,6 @@
callback: (val) => _targetSpecified = true,
defaultsTo: flx.defaultMainPath,
help: 'Target app path / main entry-point file.');
+ _targetOptionSpecified = true;
}
}