/// اسکریپت برای پیدا کردن Assets تکراری (SVG و VEC) /// /// استفاده: /// dart run tools/find_duplicate_assets.dart import 'dart:io'; void main() async { print('🔍 در حال بررسی Assets تکراری...\n'); final svgFiles = []; final vecFiles = []; // خواندن SVG files final iconsDir = Directory('assets/icons'); if (await iconsDir.exists()) { await for (final entity in iconsDir.list()) { if (entity is File && entity.path.endsWith('.svg')) { final fileName = entity.path.split(Platform.pathSeparator).last; svgFiles.add(fileName.replaceAll('.svg', '')); } } } // خواندن VEC files final vecDir = Directory('assets/vec'); if (await vecDir.exists()) { await for (final entity in vecDir.list()) { if (entity is File && entity.path.endsWith('.vec')) { final fileName = entity.path.split(Platform.pathSeparator).last; vecFiles.add(fileName.replaceAll('.svg.vec', '').replaceAll('.vec', '')); } } } print('📊 آمار:'); print(' SVG files: ${svgFiles.length}'); print(' VEC files: ${vecFiles.length}\n'); // پیدا کردن تکراری‌ها final duplicates = []; for (final svg in svgFiles) { if (vecFiles.contains(svg)) { duplicates.add(svg); } } if (duplicates.isNotEmpty) { print('⚠️ پیدا شد ${duplicates.length} asset تکراری:\n'); for (final dup in duplicates) { print(' - $dup'); print(' 📄 assets/icons/$dup.svg'); print(' 📄 assets/vec/$dup.svg.vec\n'); } print('💡 پیشنهاد:'); print(' اگر از VEC استفاده می‌کنید، SVG ها رو حذف کنید'); print(' یا برعکس، اگر از SVG استفاده می‌کنید، VEC ها رو حذف کنید'); print(' این کار می‌تونه حجم اپ رو تا 50% کاهش بده!\n'); // محاسبه حجم تقریبی print('📦 حجم تقریبی قابل صرفه‌جویی:'); print(' ${duplicates.length} فایل × ~10KB = ~${(duplicates.length * 10 / 1024).toStringAsFixed(2)} MB'); } else { print('✅ هیچ asset تکراری پیدا نشد!'); } // پیدا کردن SVG های بدون VEC final svgOnly = svgFiles.where((svg) => !vecFiles.contains(svg)).toList(); if (svgOnly.isNotEmpty) { print('\n📄 SVG های بدون نسخه VEC: ${svgOnly.length}'); } // پیدا کردن VEC های بدون SVG final vecOnly = vecFiles.where((vec) => !svgFiles.contains(vec)).toList(); if (vecOnly.isNotEmpty) { print('📄 VEC های بدون نسخه SVG: ${vecOnly.length}'); } }