@@ -27,6 +27,8 @@ import 'commands/update_version.dart';
2727
2828const _flutterFromPathFlag = 'flutter-from-path' ;
2929
30+ const _flutterSdkPathFlag = 'flutter-sdk-path' ;
31+
3032class DevToolsCommandRunner extends CommandRunner {
3133 DevToolsCommandRunner ()
3234 : super ('dt' , 'A repo management tool for DevTools.' ) {
@@ -49,20 +51,38 @@ class DevToolsCommandRunner extends CommandRunner {
4951 addCommand (UpdateFlutterSdkCommand ());
5052 addCommand (UpdatePerfettoCommand ());
5153
52- argParser.addFlag (
53- _flutterFromPathFlag,
54- abbr: 'p' ,
55- negatable: false ,
56- help:
57- 'Use the Flutter SDK on PATH for any `flutter`, `dart` and '
58- '`dt` commands spawned by this process, instead of the '
59- 'Flutter SDK from tool/flutter-sdk which is used by default.' ,
60- );
54+ argParser
55+ ..addFlag (
56+ _flutterFromPathFlag,
57+ abbr: 'p' ,
58+ negatable: false ,
59+ help:
60+ 'Use the Flutter SDK on PATH for any `flutter`, `dart` and '
61+ '`dt` commands spawned by this process, instead of the '
62+ 'Flutter SDK from tool/flutter-sdk which is used by default. '
63+ 'This is incompatible with the `$_flutterSdkPathFlag ` flag.' ,
64+ )
65+ ..addOption (
66+ _flutterSdkPathFlag,
67+ help:
68+ 'Use the Flutter SDK from the specified path for any `flutter`, '
69+ '`dart`, and `dt` commands spawned by this process, instead of the '
70+ 'Flutter SDK from tool/flutter-sdk which is used by default. '
71+ 'This is incompatible with the `$_flutterFromPathFlag ` flag.' ,
72+ );
6173 }
6274
6375 @override
6476 Future <void > runCommand (ArgResults topLevelResults) {
65- if (topLevelResults[_flutterFromPathFlag]) {
77+ if (topLevelResults.flag (_flutterFromPathFlag) &&
78+ topLevelResults.wasParsed (_flutterSdkPathFlag)) {
79+ throw ArgParserException (
80+ 'Only one of `$_flutterFromPathFlag ` and `$_flutterSdkPathFlag ` may be passed' ,
81+ );
82+ }
83+ if (topLevelResults.wasParsed (_flutterSdkPathFlag)) {
84+ FlutterSdk .useFromPath (topLevelResults.option (_flutterSdkPathFlag)! );
85+ } else if (topLevelResults.flag (_flutterFromPathFlag)) {
6686 FlutterSdk .useFromPathEnvironmentVariable ();
6787 } else {
6888 FlutterSdk .useFromCurrentVm ();
0 commit comments