From 6dd5d94cb0594fd013345e77d8c08b3dd322e9e7 Mon Sep 17 00:00:00 2001 From: Christopher Monsanto Date: Mon, 14 Sep 2020 21:31:40 -0400 Subject: [PATCH] sheet: pass list of sprites in a tmp file --- tools/sheet/index.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tools/sheet/index.ts b/tools/sheet/index.ts index c9de5c07..b3773efa 100644 --- a/tools/sheet/index.ts +++ b/tools/sheet/index.ts @@ -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);