From 7427507aca13797671a2b5ddfe5a686a53efb765 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 15 Jun 2025 20:49:07 +0300 Subject: [PATCH] fix(forge): adapt removing lproj on macOS --- apps/desktop/electron-forge/forge.config.cjs | 31 +++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/apps/desktop/electron-forge/forge.config.cjs b/apps/desktop/electron-forge/forge.config.cjs index 27ab8ec8c..aef4e0b5c 100644 --- a/apps/desktop/electron-forge/forge.config.cjs +++ b/apps/desktop/electron-forge/forge.config.cjs @@ -144,24 +144,36 @@ module.exports = { hooks: { // Remove unused locales from the packaged app to save some space. postPackage(_, packageResult) { - const localesToKeep = LOCALES + const isMac = (process.platform === "darwin"); + let localesToKeep = LOCALES .filter(locale => !locale.contentOnly) - .map(locale => locale.electronLocale.replace("_", "-")); + .map(locale => locale.electronLocale); + if (!isMac) { + localesToKeep.map(locale => locale.replace("_", "-")) + } + const keptLocales = new Set(); const removedLocales = []; + const extension = (isMac ? ".lproj" : ".pak"); for (const outputPath of packageResult.outputPaths) { - const localesDir = path.join(outputPath, 'locales'); + const localesDir = isMac + ? path.join(outputPath, "TriliumNext Notes.app/Contents/Resources") + : path.join(outputPath, 'locales'); if (!fs.existsSync(localesDir)) { - console.log('No locales directory found. Skipping cleanup.'); - return; + console.log(`No locales directory found in '${localesDir}'.`); + process.exit(2); } const files = fs.readdirSync(localesDir); for (const file of files) { - let localeName = path.basename(file, ".pak"); + if (!file.endsWith(extension)) { + continue; + } + + let localeName = path.basename(file, extension); if (localeName === "en-US" && process.platform === "win32") { // If the locale is "en-US" on Windows, we treat it as "en". // This is because the Windows version of Electron uses "en-US.pak" instead of "en.pak". @@ -174,7 +186,12 @@ module.exports = { } const filePath = path.join(localesDir, file); - fs.unlinkSync(filePath); + if (isMac) { + fs.rm(filePath, { recursive: true }); + } else { + fs.unlinkSync(filePath); + } + removedLocales.push(file); } }