|
25 | 25 | * aksi halde ayrı veritabanlarına bakıyor. |
26 | 26 | */ |
27 | 27 | import { execFileSync } from "node:child_process"; |
28 | | -import { readFileSync, writeFileSync, readdirSync, unlinkSync, existsSync } from "node:fs"; |
| 28 | +import { readFileSync, writeFileSync, readdirSync, unlinkSync } from "node:fs"; |
29 | 29 | import { join } from "node:path"; |
30 | 30 |
|
31 | 31 | const ARGS = process.argv.slice(2); |
@@ -115,7 +115,16 @@ for (const a of makaleler) { |
115 | 115 | const yol = join(DIZIN, `${a.slug}.md`); |
116 | 116 | beklenen.add(`${a.slug}.md`); |
117 | 117 | const yeni = markdownUret(a, etiketler.get(a.slug) ?? [], kaynaklar.get(a.slug) ?? []); |
118 | | - const eski = existsSync(yol) ? readFileSync(yol, "utf-8") : null; |
| 118 | + /* Önce `existsSync` sorup sonra okumak iki ayrı sistem çağrısı: arada |
| 119 | + * dosya kaybolursa okuma patlar. Doğrudan okuyup ENOENT'i yokluk sayıyoruz |
| 120 | + * — tek çağrı, yarış yok (js/file-system-race). Diğer hatalar yutulmuyor: |
| 121 | + * izin hatasını "dosya yok" saymak, arşivi sessizce yeniden yazdırırdı. */ |
| 122 | + let eski = null; |
| 123 | + try { |
| 124 | + eski = readFileSync(yol, "utf-8"); |
| 125 | + } catch (hata) { |
| 126 | + if (hata.code !== "ENOENT") throw hata; |
| 127 | + } |
119 | 128 | if (eski === yeni) { degismeyen++; continue; } |
120 | 129 | if (eski !== null && eski.trimEnd() === yeni.trimEnd()) sadeceSonBosluk++; |
121 | 130 | else if (eski !== null) { farkliIcerik++; if (farkliIcerik <= 5) console.log(` İÇERİK FARKI: ${a.slug}`); } |
|
0 commit comments