migrateAgentEntriesAtPath function
Implementation
Future<MigrateAgentEntriesReport> migrateAgentEntriesAtPath({
required final String path,
required final bool write,
required final bool checkOnly,
final String defaultNamespace = 'app',
}) async {
final target = FileSystemEntity.typeSync(path);
if (target == FileSystemEntityType.notFound) {
throw MigrateAgentEntriesPathNotFound(path);
}
final migrator = MigrateAgentEntriesMigrator(
defaultNamespace: defaultNamespace,
);
final dartFiles = <File>[];
if (target == FileSystemEntityType.file) {
if (p.extension(path) == '.dart') {
dartFiles.add(File(path));
}
} else {
await for (final entity in Directory(
path,
).list(recursive: true, followLinks: false)) {
if (entity is File && p.extension(entity.path) == '.dart') {
dartFiles.add(entity);
}
}
}
final results = <MigrateAgentEntriesFileResult>[];
for (final file in dartFiles) {
final original = await file.readAsString();
if (!original.contains('MCPCallEntry')) {
continue;
}
final migrated = migrator.migrateSource(original);
final changed = migrated != original;
results.add(
MigrateAgentEntriesFileResult(
path: file.path,
changed: changed,
migrated: migrated,
),
);
if (changed && write && !checkOnly) {
await file.writeAsString(migrated);
}
}
return MigrateAgentEntriesReport(
filesScanned: dartFiles.length,
filesChanged: results.where((final r) => r.changed).length,
results: results,
);
}