| 1234567891011121314151617181920212223242526272829 |
- /** Internal builder child; requires its live parent's version-scoped packaging record and never publishes. */
- import { readFile, realpath } from 'node:fs/promises'
- import { dirname, join } from 'node:path'
- import { readInstalledUpdateRun } from './installed-update-qualification.ts'
- import { assertInstalledUpdateSigningClear } from './installed-update-packaging.ts'
- import { createInstalledUpdateBuilderConfig } from './installed-update-builder.ts'
- import { packagingOutputRedactor } from './packaging-run.mjs'
- try {
- const [manifest, version, ...extra] = process.argv.slice(2)
- if (!manifest || !version || extra.length !== 0) throw new Error('invalid worker arguments')
- const run = await readInstalledUpdateRun(manifest)
- const record = await realpath(process.env.DSH_DESKTOP_PACKAGING_RUN_DIR ?? '')
- if (dirname(record) !== await realpath(join(run.root, version, 'packaging'))) throw new Error('wrong packaging record directory')
- const metadata = JSON.parse(await readFile(join(record, 'run.json'), 'utf8'))
- if (metadata.mode !== 'operator-authorized-single-version' || metadata.id !== run.id
- || metadata.version !== version || metadata.pid !== process.ppid) throw new Error('worker is not owned by the authorized parent')
- await assertInstalledUpdateSigningClear()
- const config = await createInstalledUpdateBuilderConfig(manifest, version, process.env)
- const { build, Platform, Arch } = await import('electron-builder')
- await build({ projectDir: join(import.meta.dirname, '..'), config,
- targets: Platform.WINDOWS.createTarget(['nsis'], Arch.x64), publish: 'never' })
- } catch (error) {
- const redactor = packagingOutputRedactor(Object.entries(process.env)
- .filter(([name]) => /KEY|SECRET|TOKEN|PASSWORD/iu.test(name)).map(([, value]) => value ?? ''), text => process.stderr.write(text))
- redactor.write(Buffer.from(error instanceof Error ? `${error.stack ?? error.message}\n` : 'installed update: builder worker failed\n'))
- redactor.end()
- process.exitCode = 1
- }
|