getUsedPackages method
Implementation
Future<Set<String>> getUsedPackages() async {
final usedPackages = <String>{};
for (final dir in directoriesToAnalyze) {
print("📂 Analisando diretório: $dir");
List<File> dartFiles = [];
// Se for bin/, usamos listSync diretamente
if (dir == 'bin') {
final binDir = Directory(dir);
if (binDir.existsSync()) {
dartFiles.addAll(binDir.listSync(recursive: true).whereType<File>().where((file) => file.path.endsWith('.dart')));
}
} else {
dartFiles.addAll(Glob("$dir/**/*.dart").listSync().whereType<File>());
}
for (final file in dartFiles) {
print("📄 Arquivo encontrado: ${file.path}");
if (_shouldIgnore(file.path)) continue;
final content = file.readAsStringSync();
final parseResult = parseString(content: content, throwIfDiagnostics: false);
for (var directive in parseResult.unit.directives.whereType<ImportDirective>()) {
final uri = directive.uri.stringValue;
if (uri != null && uri.startsWith('package:')) {
final packageName = uri.split('/')[0].replaceFirst('package:', '');
usedPackages.add(packageName);
}
}
}
}
return usedPackages;
}