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 = <File>[];

  // 全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 箇所を更新しました');
}
