const { notarize } = require('@electron/notarize'); /* Pre-requisites: https://github.com/electron/electron-notarize#prerequisites 1. Generate an app specific password 2. Export SIGNING_APPLE_ID, SIGNING_APP_PASSWORD, SIGNING_TEAM_ID environment variables */ /* Notarizing: https://kilianvalkhof.com/2019/electron/notarizing-your-electron-application/ */ const log = msg => console.log(`\n${msg}`); const isEmpty = v => !v || v.length === 0; exports.default = async function notarizing(context) { const { electronPlatformName, appOutDir } = context; if (electronPlatformName !== 'darwin') { return; } log('Notarizing mac application'); const appName = context.packager.appInfo.productFilename; const { SIGNING_APPLE_ID, SIGNING_APP_PASSWORD, SIGNING_TEAM_ID } = process.env; if (isEmpty(SIGNING_APPLE_ID) || isEmpty(SIGNING_APP_PASSWORD)) { log('SIGNING_APPLE_ID or SIGNING_APP_PASSWORD not set.\nTerminating noratization.'); return; } const options = { appBundleId: 'org.getsession.desktop', appPath: `${appOutDir}/${appName}.app`, appleId: SIGNING_APPLE_ID, appleIdPassword: SIGNING_APP_PASSWORD, }; if (!isEmpty(SIGNING_TEAM_ID)) options.ascProvider = SIGNING_TEAM_ID; return notarize(options); };