From 9d2f0c4cebdc67b9f897b9e0d6a836aaaaeea0e5 Mon Sep 17 00:00:00 2001 From: Pepper Gray <111446242+peppergrayxyz@users.noreply.github.com> Date: Fri, 13 Dec 2024 13:09:35 +0100 Subject: [PATCH] process directories --- cli/lib/png2src.js | 20 +++++++++++++------- cli/lib/test/data_ok/smile_7x7_1BPP.png | 1 + cli/lib/test/data_ok/smile_7x7_2BPP.png | 1 + cli/lib/test/data_ok/smile_8x8_1BPP.png | 1 + cli/lib/test/data_ok/smile_8x8_2BPP.png | 1 + cli/lib/test/png2src.test.js | 17 ++++++++++++++++- 6 files changed, 33 insertions(+), 8 deletions(-) create mode 120000 cli/lib/test/data_ok/smile_7x7_1BPP.png create mode 120000 cli/lib/test/data_ok/smile_7x7_2BPP.png create mode 120000 cli/lib/test/data_ok/smile_8x8_1BPP.png create mode 120000 cli/lib/test/data_ok/smile_8x8_2BPP.png diff --git a/cli/lib/png2src.js b/cli/lib/png2src.js index 1553394a..544691d0 100644 --- a/cli/lib/png2src.js +++ b/cli/lib/png2src.js @@ -343,16 +343,22 @@ function runAll(files, opts) { let output = { "sprites": [] }; for (let ii = 0; ii < files.length; ++ii) { - const file = files[ii]; - + const filePath = files[ii]; try { - if (ii > 0) { - console.log(); + const filePaths = !fs.statSync(filePath).isDirectory() ? [filePath] : + fs.readdirSync(filePath) + .filter(file => path.extname(file).toLowerCase() === '.png') + .map(file => path.join(filePath, file)); + + for (let iii = 0; iii < filePaths.length; ++iii) { + const pngFile = filePaths[iii]; + if (ii | iii > 0) { + console.log(); + } + output.sprites.push(run(pngFile)); } - - output.sprites.push(run(file)); } catch (error) { - throw new Error("Error processing " + file + ": " + error.message); + throw new Error("Error processing " + filePath + ": " + error.message); } } diff --git a/cli/lib/test/data_ok/smile_7x7_1BPP.png b/cli/lib/test/data_ok/smile_7x7_1BPP.png new file mode 120000 index 00000000..5ff9a586 --- /dev/null +++ b/cli/lib/test/data_ok/smile_7x7_1BPP.png @@ -0,0 +1 @@ +../data/smile_7x7_1BPP.png \ No newline at end of file diff --git a/cli/lib/test/data_ok/smile_7x7_2BPP.png b/cli/lib/test/data_ok/smile_7x7_2BPP.png new file mode 120000 index 00000000..b2676eac --- /dev/null +++ b/cli/lib/test/data_ok/smile_7x7_2BPP.png @@ -0,0 +1 @@ +../data/smile_7x7_2BPP.png \ No newline at end of file diff --git a/cli/lib/test/data_ok/smile_8x8_1BPP.png b/cli/lib/test/data_ok/smile_8x8_1BPP.png new file mode 120000 index 00000000..a561903f --- /dev/null +++ b/cli/lib/test/data_ok/smile_8x8_1BPP.png @@ -0,0 +1 @@ +../data/smile_8x8_1BPP.png \ No newline at end of file diff --git a/cli/lib/test/data_ok/smile_8x8_2BPP.png b/cli/lib/test/data_ok/smile_8x8_2BPP.png new file mode 120000 index 00000000..9d006bec --- /dev/null +++ b/cli/lib/test/data_ok/smile_8x8_2BPP.png @@ -0,0 +1 @@ +../data/smile_8x8_2BPP.png \ No newline at end of file diff --git a/cli/lib/test/png2src.test.js b/cli/lib/test/png2src.test.js index a97ac492..89b458b4 100644 --- a/cli/lib/test/png2src.test.js +++ b/cli/lib/test/png2src.test.js @@ -169,7 +169,7 @@ describe("PNG2SRC", () => { runAll(["/invalid/path"], { lang: "rust", output: "-", - })).toThrowError(/Error processing \/invalid\/path: ENOENT: no such file or directory, open '\/invalid\/path'/); + })).toThrowError(/Error processing \/invalid\/path: ENOENT: no such file or directory, stat '\/invalid\/path'/); }); it("should console log one sprite", () => { @@ -218,5 +218,20 @@ describe("PNG2SRC", () => { expect(console.log).toHaveBeenCalledTimes(3); expect(fs.writeFileSync).toHaveBeenCalledTimes(1); }); + + it("should process directories", () => { + runAll( + [ + __dirname + "/data_ok", + ], + { + lang: "c", + output: "output.h", + } + ); + + expect(console.log).toHaveBeenCalledTimes(3); + expect(fs.writeFileSync).toHaveBeenCalledTimes(1); + }); }); });