activeRoots method
Returns the paths of all packages_configs registered in
_activeRootsDir
.
Implementation
List<String> activeRoots() {
final List<String> files;
try {
files = listDir(_activeRootsDir, includeDirs: false, recursive: true);
} on IOException {
return [];
}
final activeRoots = <String>[];
for (final file in files) {
final Object? decoded;
try {
decoded = jsonDecode(readTextFile(file));
} on IOException catch (e) {
log.fine('Could not read $file $e - deleting');
tryDeleteEntry(file);
continue;
} on FormatException catch (e) {
log.fine('Could not decode $file $e - deleting');
tryDeleteEntry(file);
continue;
}
if (decoded is! Map<String, Object?>) {
log.fine('Faulty $file - deleting');
tryDeleteEntry(file);
continue;
}
final uriText = decoded['package_config'];
if (uriText is! String) {
log.fine('Faulty $file - deleting');
tryDeleteEntry(file);
continue;
}
final uri = Uri.tryParse(uriText);
if (uri == null || !uri.isScheme('file')) {
log.fine('Faulty $file - deleting');
tryDeleteEntry(file);
continue;
}
activeRoots.add(uri.toFilePath());
}
return activeRoots;
}