import 'dart:io'; import 'package:path/path.dart' as p; import '../cekirdek/dosya_yardimcisi.dart'; import '../modeller/kaynak_dosyalar.dart'; class KaynakKopyalayici { /// Tüm verilen kaynak dosyalarını proje/kaynak klasörüne hash'li kopyalar. static Future projeyeKopyala({ required String projeKlasoru, required String sesPath, required String girisGorseliPath, String? faceSwapPath, String? watermarkPath, String? introPath, String? outroPath, String? lutPath, String? srtPath, }) async { final hedef = Directory(p.join(projeKlasoru, 'kaynak')); Future kop(String? path, String prefix) async { if (path == null || path.isEmpty) return null; final f = await DosyaYardimcisi.kopyalaHashli( File(path), hedef, prefix: prefix, ); return f.path; } return KaynakDosyalar( sesPath: await kop(sesPath, 'ses') ?? '', girisGorseliPath: await kop(girisGorseliPath, 'giris') ?? '', faceSwapPath: await kop(faceSwapPath, 'yuz'), watermarkPath: await kop(watermarkPath, 'wm'), introPath: await kop(introPath, 'intro'), outroPath: await kop(outroPath, 'outro'), lutPath: await kop(lutPath, 'lut'), srtPath: await kop(srtPath, 'srt'), ); } /// Tek dosya ekleme (proje açıkken kaynak güncelleme). static Future tekDosyaEkle( String projeKlasoru, String kaynakPath, String prefix, ) async { final hedef = Directory(p.join(projeKlasoru, 'kaynak')); final f = await DosyaYardimcisi.kopyalaHashli( File(kaynakPath), hedef, prefix: prefix, ); return f.path; } }