search static method
Looks for the programs in the systems path variable.
If there isn't a match, it will be tried to start up a
process of the program in the command line if canStartProcesses is set to false.
Ignores all programs in skippable.
Returns a List with programs that were not found.
Implementation
static List<String> search(
List<String> programs,
List<String> directories, [
bool canStartProcesses = false,
]) {
final List<String> notAvailable = [];
for (final String program in programs) {
bool found = false;
for (final String directory in directories) {
final File programFile = File(
path.join(directory, program + executableExtension),
);
if (programFile.existsSync()) {
found = true;
break;
}
}
if (found) continue;
for (final String pathEntry in _pathEntries) {
final File programFile = File(
path.join(pathEntry, program + executableExtension),
);
found = programFile.existsSync();
if (found) break;
}
if (found) continue;
if (!canStartProcesses) {
notAvailable.add(program);
continue;
}
final ProcessResult result = Process.runSync(
path.basename(program),
[],
workingDirectory: path.dirname(program),
runInShell: true,
includeParentEnvironment: true,
);
if (result.stderr.isEmpty) continue;
notAvailable.add(program);
}
return notAvailable;
}