@@ -11,6 +11,7 @@ import 'package:process/process.dart';
1111import 'package:yaml/yaml.dart' ;
1212
1313import 'constants.dart' ;
14+ import 'sdk.dart' ;
1415
1516/// The supported kinds of projects.
1617enum ProjectKind {
@@ -71,14 +72,15 @@ Future<ProjectKind> inferProjectKind(Root root, FileSystem fileSystem) async {
7172/// root's 'paths'.
7273Future <CallToolResult > runCommandInRoots (
7374 CallToolRequest request, {
74- FutureOr <String > Function (Root , FileSystem ) commandForRoot =
75+ FutureOr <String > Function (Root , FileSystem , Sdk ) commandForRoot =
7576 defaultCommandForRoot,
7677 List <String > arguments = const [],
7778 required String commandDescription,
7879 required FileSystem fileSystem,
7980 required ProcessManager processManager,
8081 required List <Root > knownRoots,
8182 List <String > defaultPaths = const < String > [],
83+ required Sdk sdk,
8284}) async {
8385 var rootConfigs =
8486 (request.arguments? [ParameterNames .roots] as List ? )
@@ -103,6 +105,7 @@ Future<CallToolResult> runCommandInRoots(
103105 processManager: processManager,
104106 knownRoots: knownRoots,
105107 defaultPaths: defaultPaths,
108+ sdk: sdk,
106109 );
107110 if (result.isError == true ) return result;
108111 outputs.addAll (result.content);
@@ -134,14 +137,15 @@ Future<CallToolResult> runCommandInRoots(
134137Future <CallToolResult > runCommandInRoot (
135138 CallToolRequest request, {
136139 Map <String , Object ?>? rootConfig,
137- FutureOr <String > Function (Root , FileSystem ) commandForRoot =
140+ FutureOr <String > Function (Root , FileSystem , Sdk ) commandForRoot =
138141 defaultCommandForRoot,
139142 List <String > arguments = const [],
140143 required String commandDescription,
141144 required FileSystem fileSystem,
142145 required ProcessManager processManager,
143146 required List <Root > knownRoots,
144147 List <String > defaultPaths = const < String > [],
148+ required Sdk sdk,
145149}) async {
146150 rootConfig ?? = request.arguments;
147151 final rootUriString = rootConfig? [ParameterNames .root] as String ? ;
@@ -185,7 +189,7 @@ Future<CallToolResult> runCommandInRoot(
185189 final projectRoot = fileSystem.directory (rootUri);
186190
187191 final commandWithPaths = < String > [
188- await commandForRoot (root, fileSystem),
192+ await commandForRoot (root, fileSystem, sdk ),
189193 ...arguments,
190194 ];
191195 final paths =
@@ -240,18 +244,21 @@ Future<CallToolResult> runCommandInRoot(
240244/// Returns 'dart' or 'flutter' based on the pubspec contents.
241245///
242246/// Throws an [ArgumentError] if there is no pubspec.
243- Future <String > defaultCommandForRoot (Root root, FileSystem fileSystem) async =>
244- switch (await inferProjectKind (root, fileSystem)) {
245- ProjectKind .dart => 'dart' ,
246- ProjectKind .flutter => 'flutter' ,
247- ProjectKind .unknown =>
248- throw ArgumentError .value (
249- root.uri,
250- 'root.uri' ,
251- 'Unknown project kind at root ${root .uri }. All projects must have a '
252- 'pubspec.' ,
253- ),
254- };
247+ Future <String > defaultCommandForRoot (
248+ Root root,
249+ FileSystem fileSystem,
250+ Sdk sdk,
251+ ) async => switch (await inferProjectKind (root, fileSystem)) {
252+ ProjectKind .dart => sdk.dartExecutablePath,
253+ ProjectKind .flutter => sdk.flutterExecutablePath,
254+ ProjectKind .unknown =>
255+ throw ArgumentError .value (
256+ root.uri,
257+ 'root.uri' ,
258+ 'Unknown project kind at root ${root .uri }. All projects must have a '
259+ 'pubspec.' ,
260+ ),
261+ };
255262
256263/// Returns whether or not [rootUri] is an allowed root, either exactly matching
257264/// or under on of the [knownRoots] .
0 commit comments