diff --git a/lib/prepare-git-assets.ts b/lib/prepare-git-assets.ts index 2930efc..5762e62 100644 --- a/lib/prepare-git-assets.ts +++ b/lib/prepare-git-assets.ts @@ -21,7 +21,7 @@ interface PrepareGitAssetsResult { function getTextureFilenameMap(parsedFiles: ParsedFile[]) { const filenameMap = new Map() - const normalizedOwners = new Map() + const normalizedGroups = new Map>() for (const file of parsedFiles) { const ext = extname(file.filename).toLowerCase() @@ -31,14 +31,16 @@ function getTextureFilenameMap(parsedFiles: ParsedFile[]) { if (!normalizedFilename) continue const normalizedKey = normalizedFilename.toLowerCase() - const existingOwner = normalizedOwners.get(normalizedKey) + const group = normalizedGroups.get(normalizedKey) || [] + group.push({ original: file.filename, normalized: normalizedFilename }) + normalizedGroups.set(normalizedKey, group) + } - if (existingOwner && existingOwner.toLowerCase() !== file.filename.toLowerCase()) { - throw new Error(`Textures en conflit apres normalisation : ${existingOwner} et ${file.filename} deviennent ${normalizedFilename}`) - } + for (const group of normalizedGroups.values()) { + if (group.length > 1) continue - filenameMap.set(file.filename.toLowerCase(), normalizedFilename) - normalizedOwners.set(normalizedKey, file.filename) + const [{ original, normalized }] = group + filenameMap.set(original.toLowerCase(), normalized) } return filenameMap @@ -104,7 +106,8 @@ export async function prepareGitAssets({ }) } else { filename = textureFilenameMap.get(pf.filename.toLowerCase()) || pf.filename - const category = classifyAssetCategory(filename) + const categoryFilename = textureFilenameMap.get(pf.filename.toLowerCase()) || normalizeTextureFilename(pf.filename) || pf.filename + const category = classifyAssetCategory(categoryFilename) const textureResult = await compressTextureBuffer(filename, pf.buffer) content = textureResult.buffer