Skip to content

Commit 31d9013

Browse files
committed
Fix build issue in cloudflare
1 parent 0cf572c commit 31d9013

2 files changed

Lines changed: 20 additions & 2 deletions

File tree

assets/images-manifest.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
"Character_Portrait/portrait_Dimension_Esde_01.png": "bba4164af20701ec534256807c6d881ddc0bede28bc738826f42f0ee5a8b747e",
6060
"Character_Portrait/portrait_Dimension_FrancisSummer_01.png": "09a91e25cdaf937c91fd2fec14fee0848834c7b9829c29ba3731d42e6162510d",
6161
"Character_Portrait/portrait_dimension_Maybell_01.png": "30e81a7acbce8dc9fbf6b18325af6aef4b64a8fb6bd66d29e3d98058ef94c3c3",
62+
"Character_Portrait/portrait_Dimension_Maybell_01.png": "30e81a7acbce8dc9fbf6b18325af6aef4b64a8fb6bd66d29e3d98058ef94c3c3",
6263
"Character_Portrait/portrait_Dimension_Mina_01.png": "36c28e2f20fccee9b4a882fec891593940f90cecec0cb386909e3e9de5e3e43c",
6364
"Character_Portrait/portrait_Dimension_Nagi_01.png": "4ae5e535d6f3cef63014d1a144b9e55e4a84f965014d6036c6bc308ea762b0a6",
6465
"Character_Portrait/portrait_Dimension_Narae_01.png": "a2ea49da387556e62d674ef84a44d74c7b4429a48f51821e66aa5911844c2626",

scripts/convert-images.mjs

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
import crypto from "node:crypto";
2+
import { execFile } from "node:child_process";
23
import { promises as fs } from "node:fs";
34
import path from "node:path";
5+
import { promisify } from "node:util";
46
import sharp from "sharp";
57

68
const root = process.cwd();
79
const sourceRoot = path.join(root, "assets/images-source");
810
const outputRoot = path.join(root, "public/images");
911
const manifestPath = path.join(root, "assets/images-manifest.json");
1012
const settings = { format: "webp", quality: 85, alphaQuality: 100 };
13+
const execFileAsync = promisify(execFile);
1114

1215
async function filesIn(dir, extension) {
1316
const entries = await fs.readdir(dir, { withFileTypes: true }).catch(() => []);
@@ -20,6 +23,20 @@ async function filesIn(dir, extension) {
2023
return files;
2124
}
2225

26+
async function sourceFiles() {
27+
const discovered = await filesIn(sourceRoot, ".png");
28+
try {
29+
const { stdout } = await execFileAsync("git", ["ls-files", "-z", "--", "assets/images-source"]);
30+
const tracked = stdout
31+
.split("\0")
32+
.filter((file) => file.toLowerCase().endsWith(".png"))
33+
.map((file) => path.join(root, file));
34+
return [...new Set([...discovered, ...tracked])];
35+
} catch {
36+
return discovered;
37+
}
38+
}
39+
2340
async function hashFile(file) {
2441
return crypto.createHash("sha256").update(await fs.readFile(file)).digest("hex");
2542
}
@@ -34,7 +51,7 @@ async function readManifest() {
3451

3552
async function convert() {
3653
const manifest = await readManifest();
37-
const sources = (await filesIn(sourceRoot, ".png")).sort();
54+
const sources = (await sourceFiles()).sort();
3855
const nextFiles = {};
3956
let converted = 0;
4057
let skipped = 0;
@@ -67,7 +84,7 @@ async function convert() {
6784

6885
async function check() {
6986
const manifest = await readManifest();
70-
const sources = (await filesIn(sourceRoot, ".png")).sort();
87+
const sources = (await sourceFiles()).sort();
7188
const problems = [];
7289
if (manifest.version !== 1 || JSON.stringify(manifest.settings) !== JSON.stringify(settings)) problems.push("manifest version/settings mismatch");
7390
const sourceSet = new Set();

0 commit comments

Comments
 (0)