import { execSync } from 'child_process'; import path from 'path'; import { fileURLToPath } from 'url'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); /** * Electron-builder afterAllArtifactBuild hook * Runs the app stream update script only for Linux builds * Returns the metainfo file path to be included in published artifacts */ // This is not a typescript file, and is called by electron-builder, so we cannot use typescript features here. // eslint-disable-next-line @typescript-eslint/explicit-function-return-type export default async function afterAllArtifactBuild(buildResult) { // Check if this build includes Linux as a target const isLinux = Array.from(buildResult.platformToTargets.keys()).some( (platform) => platform.name === 'linux', ); if (isLinux) { const updateScriptPath = path.join(__dirname, 'update-app-stream.mjs'); const projectRoot = path.resolve(__dirname, '..'); const metainfoFile = path.resolve(projectRoot, 'org.jeffvli.feishin.metainfo.xml'); console.log('Running app stream update for Linux build...'); try { execSync(`node ${updateScriptPath} --replace-if-version-missing`, { cwd: projectRoot, stdio: 'inherit', }); // Return the metainfo file to be included in published artifacts return [metainfoFile]; } catch (error) { console.error('Failed to update app stream:', error.message); throw error; } } // Return empty array if not a Linux build return []; }