OLD | NEW |
| (Empty) |
1 | |
2 library which.src.candidate_paths; | |
3 | |
4 import 'dart:io'; | |
5 | |
6 import 'package:path/path.dart'; | |
7 | |
8 Iterable<String> getCandidatePaths(String command, Map<String, String> environme
nt, bool isWindows, Context context) { | |
9 if (context.isAbsolute(command)) return [command]; | |
10 | |
11 String getEnvVar(String envVar, String defaultValue) { | |
12 var v = environment[envVar]; | |
13 return v == null ? defaultValue : v; | |
14 } | |
15 | |
16 var pathVarSeparator = isWindows ? ";" : ":"; | |
17 | |
18 List<String> splitEnvVar(String envVar, String defaultValue) => | |
19 getEnvVar(envVar, defaultValue).split(pathVarSeparator); | |
20 | |
21 var pathEnv = splitEnvVar('PATH', ''); | |
22 | |
23 var noExtPaths = | |
24 pathEnv.map((pathEntry) => context.join(pathEntry, command)); | |
25 | |
26 if (!isWindows) return noExtPaths; | |
27 | |
28 pathEnv.insert(0, context.current); | |
29 var pathExt = splitEnvVar('PATHEXT', ".EXE"); | |
30 if (command.contains('.')) pathExt.insert(0, ''); | |
31 return noExtPaths.expand((commandPath) => | |
32 pathExt.map((pathExtEntry) => commandPath + pathExtEntry)); | |
33 } | |
34 | |
35 Iterable<String> getRealCandidatePaths(String command) => | |
36 getCandidatePaths(command, Platform.environment, Platform.isWindows, context
); | |
OLD | NEW |