This commit is contained in:
45
lib/og.js
45
lib/og.js
@@ -485,21 +485,17 @@ export async function generateOgImages(contentDir, cacheDir, siteName, batchSize
|
||||
// Render SVG to PNG using the system resvg CLI
|
||||
// Requires: pkg install resvg
|
||||
const outPath = join(ogDir, `${slug}.png`);
|
||||
console.log(`[og] Generating: ${outPath}`);
|
||||
const result = spawnSync('resvg', ["-w", String(WIDTH), "-b", COLORS.bg, "-o", outPath, "-"], { input: svg, encoding: null });
|
||||
if (result.error) {
|
||||
console.error(`[og] resvg CLI error for ${outPath}:`, result.error);
|
||||
throw result.error;
|
||||
}
|
||||
if (result.status !== 0) {
|
||||
console.error(`[og] resvg CLI failed for ${outPath}:`, result.stderr && result.stderr.toString());
|
||||
throw new Error(result.stderr && result.stderr.toString());
|
||||
}
|
||||
if (!result.stdout || result.stdout.length === 0) {
|
||||
console.error(`[og] resvg CLI produced no output for ${outPath}`);
|
||||
throw new Error('resvg CLI produced no output');
|
||||
}
|
||||
console.log(`[og] Wrote: ${outPath}`);
|
||||
console.log(`[og] Generating: ${outPath}`);
|
||||
const result = spawnSync("resvg", ["-w", String(WIDTH), "-b", COLORS.bg, "-o", outPath, "-"], { input: svg, encoding: null });
|
||||
if (result.error) {
|
||||
console.error(`[og] resvg CLI error for ${outPath}:`, result.error);
|
||||
throw result.error;
|
||||
}
|
||||
if (result.status !== 0) {
|
||||
console.error(`[og] resvg CLI failed for ${outPath}:`, result.stderr && result.stderr.toString());
|
||||
throw new Error(result.stderr && result.stderr.toString());
|
||||
}
|
||||
console.log(`[og] Wrote: ${outPath}`);
|
||||
newManifest[slug] = { title: slug, hash };
|
||||
generated++;
|
||||
|
||||
@@ -507,25 +503,6 @@ export async function generateOgImages(contentDir, cacheDir, siteName, batchSize
|
||||
if (generated % SAVE_INTERVAL === 0) {
|
||||
writeFileSync(manifestPath, JSON.stringify(newManifest, null, 2));
|
||||
}
|
||||
try {
|
||||
const result = spawnSync('resvg', ["-w", String(WIDTH), "-b", COLORS.bg, "-o", outPath, "-"], { input: svg, encoding: null });
|
||||
if (result.error) {
|
||||
console.error(`[og] resvg CLI error for ${outPath}:`, result.error);
|
||||
throw result.error;
|
||||
}
|
||||
if (result.status !== 0) {
|
||||
console.error(`[og] resvg CLI failed for ${outPath}:`, result.stderr && result.stderr.toString());
|
||||
throw new Error(result.stderr && result.stderr.toString());
|
||||
}
|
||||
if (!result.stdout || result.stdout.length === 0) {
|
||||
console.error(`[og] resvg CLI produced no output for ${outPath}`);
|
||||
throw new Error('resvg CLI produced no output');
|
||||
}
|
||||
console.log(`[og] Wrote: ${outPath}`);
|
||||
} catch (e) {
|
||||
console.error(`[og] Exception for ${outPath}:`, e);
|
||||
require('fs').writeFileSync(outPath.replace(/\.png$/, '.svg'), svg);
|
||||
}
|
||||
|
||||
// Force GC to reclaim Satori/Resvg WASM native memory.
|
||||
if (hasGC && generated % GC_INTERVAL === 0) {
|
||||
|
||||
Reference in New Issue
Block a user