From 2b89293a248181183355420b4df34094e8fc389c Mon Sep 17 00:00:00 2001 From: Lukas Obermann Date: Sun, 8 Oct 2023 12:34:59 +0200 Subject: [PATCH] build(scripts): detect notarization method from environment variables --- deploy/notarize.mjs | 45 +++++++++++++++++++++++++++++++++------------ 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/deploy/notarize.mjs b/deploy/notarize.mjs index 1e8ae70e..02e9980c 100644 --- a/deploy/notarize.mjs +++ b/deploy/notarize.mjs @@ -1,5 +1,5 @@ // @ts-check -import { notarize as electronNotarize } from 'electron-notarize' +import { notarize as electronNotarize } from '@electron/notarize' /** * @param context {import("electron-builder").AfterPackContext} @@ -10,16 +10,37 @@ export const notarize = async (context) => { if (electronPlatformName === 'darwin') { const appName = context.packager.appInfo.productFilename - console.log(`Notarizing "${appName}.app"...`) - - await electronNotarize({ - tool: "notarytool", - appPath: `${appOutDir}/${appName}.app`, - appleId: /** @type {string} */ (process.env.APPLEID), - appleIdPassword: /** @type {string} */ (process.env.APPLEIDPASS), - teamId: /** @type {string} */ (process.env.TEAMID), - }) - - console.log(`Notarization successful`) + if (typeof process.env.APPLEID === "string" && typeof process.env.APPLEIDPASS === "string" && typeof process.env.TEAMID === "string") { + console.log(`Notarizing "${appName}.app" via Apple ID ...`) + await electronNotarize({ + tool: "notarytool", + appPath: `${appOutDir}/${appName}.app`, + appleId: process.env.APPLEID, + appleIdPassword: process.env.APPLEIDPASS, + teamId: process.env.TEAMID, + }) + console.log(`Notarization successful`) + } else if (typeof process.env.APPLEAPIKEY === "string" && typeof process.env.APPLEAPIKEYID === "string" && typeof process.env.APPLEAPIISSUER === "string") { + console.log(`Notarizing "${appName}.app" via App Store Connect API ...`) + await electronNotarize({ + tool: "notarytool", + appPath: `${appOutDir}/${appName}.app`, + appleApiKey: process.env.APPLEAPIKEY, + appleApiKeyId: process.env.APPLEAPIKEYID, + appleApiIssuer: process.env.APPLEAPIISSUER, + }) + console.log(`Notarization successful`) + } else if (typeof process.env.KEYCHAINPROFILE === "string") { + console.log(`Notarizing "${appName}.app" via Keychain ...`) + await electronNotarize({ + tool: "notarytool", + appPath: `${appOutDir}/${appName}.app`, + keychain: process.env.KEYCHAIN, + keychainProfile: process.env.KEYCHAINPROFILE, + }) + console.log(`Notarization successful`) + } else { + throw new Error(`Notarization failed: No valid authentication method found in environment. Please provide either APPLEID and APPLEIDPASS, or APPLEAPIKEY, APPLEAPIKEYID and APPLEAPIISSUER, or (optional) KEYCHAIN and KEYCHAINPROFILE.`) + } } }