sheet: pass list of sprites in a tmp file

This commit is contained in:
Christopher Monsanto
2020-09-14 21:31:40 -04:00
parent 6330768caa
commit 6dd5d94cb0

View File

@@ -2,6 +2,8 @@
import 'make-promises-safe';
import cp from 'child_process';
import path from 'path';
import fs from 'fs';
import crypto from 'crypto';
const sheetjs = process.argv[2];
const dest = process.argv[3];
@@ -21,9 +23,14 @@ for (let i = 0; i < sheet.entries.length; i++) {
}
}
// Store list of sprite files in a temp file, Windows can't handle large cli arg
// lists. Just append a random string to the dest file
const tmpFile = `${dest}.tmp.${crypto.randomBytes(6).readUIntLE(0,6).toString(36)}`;
fs.writeFileSync(tmpFile, sheet.entries.join("\n"), 'utf8');
cp.execFileSync("magick", [
"montage",
...sheet.entries,
`@${tmpFile}`,
"-background", "transparent",
"-geometry", `${sheet.width}x${sheet.height}>`,
"-gravity", "center",
@@ -31,3 +38,5 @@ cp.execFileSync("magick", [
"-depth", "8",
dest
]);
fs.unlinkSync(tmpFile);