import 'dart:io'; /// さけのわ統一名称対応:displayData参照を更新 /// /// displayData.name → displayData.displayName /// displayData.brewery → displayData.displayBrewery /// displayData.prefecture → displayData.displayPrefecture void main() async { final libDir = Directory('lib'); final dartFiles = []; // 全dartファイルを再帰的に検索 await for (final entity in libDir.list(recursive: true)) { if (entity is File && entity.path.endsWith('.dart')) { dartFiles.add(entity); } } int totalFiles = 0; int totalReplacements = 0; for (final file in dartFiles) { String content = await file.readAsString(); String original = content; int fileReplacements = 0; // 置換(順番重要:長いパターンから) // displayName が既に存在する場合はスキップ if (!content.contains('displayData.displayName')) { final nameCount = 'displayData.name'.allMatches(content).length; content = content.replaceAll('displayData.name', 'displayData.displayName'); fileReplacements += nameCount; } if (!content.contains('displayData.displayBrewery')) { final breweryCount = 'displayData.brewery'.allMatches(content).length; content = content.replaceAll('displayData.brewery', 'displayData.displayBrewery'); fileReplacements += breweryCount; } if (!content.contains('displayData.displayPrefecture')) { final prefectureCount = 'displayData.prefecture'.allMatches(content).length; content = content.replaceAll('displayData.prefecture', 'displayData.displayPrefecture'); fileReplacements += prefectureCount; } // 変更があった場合のみ保存 if (content != original) { await file.writeAsString(content); totalFiles++; totalReplacements += fileReplacements; print('✅ ${file.path}: $fileReplacements 箇所更新'); } } print('\n🎉 完了: $totalFiles ファイル、合計 $totalReplacements 箇所を更新しました'); }