fix(build): call ImageMagick directly to avoid shell banner output breaking icon generation

This commit is contained in:
Jordan Wages 2025-08-24 00:00:57 -05:00
commit 164dfdfb93

View file

@ -25,10 +25,12 @@ const COLOR_ADDON = process.env.ICON_COLOR_ADDON || '#111827';
const COLOR_TOOLBAR = process.env.ICON_COLOR_TOOLBAR || '#111827';
function ensureMagick() {
const which = spawnSync('bash', ['-lc', 'command -v magick || command -v convert']);
if (which.status !== 0) return null;
const bin = which.stdout.toString().trim();
return bin || null;
// Prefer calling binaries directly to avoid shell init output polluting stdout.
let ok = spawnSync('magick', ['-version']);
if (ok && ok.status === 0) return 'magick';
ok = spawnSync('convert', ['-version']);
if (ok && ok.status === 0) return 'convert';
return null;
}
function readSvg() {
@ -46,10 +48,8 @@ function colorize(svg, color) {
function rasterize(magickBin, svgString, size, outPath) {
// Use ImageMagick, transparent background, high density for crisp vector rasterization.
const proc = spawnSync('bash', ['-lc', `${magickBin} -background none -density 384 svg:- -resize ${size}x${size} ${outPath}`], {
input: svgString,
stdio: ['pipe', 'inherit', 'inherit'],
});
const args = ['-background', 'none', '-density', '384', 'svg:-', '-resize', `${size}x${size}`, outPath];
const proc = spawnSync(magickBin, args, { input: svgString, stdio: ['pipe', 'inherit', 'inherit'] });
if (proc.status !== 0) {
console.error(`Failed to generate ${outPath}`);
process.exit(proc.status || 1);
@ -84,4 +84,3 @@ function main() {
}
main();