From fc2761cfca3917f7f9e02aa5c97d8d054f74f3cd Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Fri, 27 Sep 2019 17:27:57 -0400 Subject: [PATCH] artifactBuildStarted --- package.json | 1 + scripts/after-sign.js | 43 ++------------------------------ scripts/start-artifact.js | 52 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 41 deletions(-) create mode 100644 scripts/start-artifact.js diff --git a/package.json b/package.json index 79c7ee68..624cec1d 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,7 @@ "app": "build" }, "afterSign": "scripts/after-sign.js", + "artifactBuildStarted": "scripts/start-artifact.js", "mac": { "electronUpdaterCompatibility": ">=0.0.1", "category": "public.app-category.productivity", diff --git a/scripts/after-sign.js b/scripts/after-sign.js index 684878e6..77fe6561 100644 --- a/scripts/after-sign.js +++ b/scripts/after-sign.js @@ -1,26 +1,17 @@ require('dotenv').config(); const { notarize } = require('electron-notarize'); -const fs = require('fs'); -const child = require('child_process'); exports.default = run; async function run(context) { - console.log(context); + console.log('### After sign'); + // console.log(context); const appleId = process.env.APPLEID; const appName = context.packager.appInfo.productFilename; const appPath = `${context.appOutDir}/${appName}.app`; - const masBuild = context.electronPlatformName === 'mas'; const macBuild = context.electronPlatformName === 'darwin'; - if (masBuild || macBuild) { - console.log('### Signing Safari App Extension Libs'); - const resourcesPath = context.packager.info._buildResourcesDir; - const devId = masBuild ? '3rd Party Mac Developer Application: 8bit Solutions LLC' : - 'Developer ID Application: 8bit Solutions LLC'; - await signSafariAppLibs(appPath, resourcesPath, devId); - } if (macBuild) { console.log('### Notarizing ' + appPath); return await notarize({ @@ -31,33 +22,3 @@ async function run(context) { }); } } - -async function signSafariAppLibs(appPath, resourcesPath, devId) { - const appexPath = appPath + '/Contents/PlugIns/safari.appex'; - const appexFrameworkPath = appexPath + '/Contents/Frameworks/'; - const entitlementsPath = resourcesPath + '/safari.entitlements'; - - const libs = fs.readdirSync(appexFrameworkPath).filter((p) => p.endsWith('.dylib')) - .map((p) => appexFrameworkPath + p); - const promises = []; - libs.forEach((i) => { - const proc = child.spawn('codesign', [ - '--verbose', - '--force', - '-o', - 'runtime', - '--sign', - devId, - '--entitlements', - entitlementsPath, - i]); - stdOutProc(proc); - promises.push(new Promise((resolve) => proc.on('close', resolve))); - }); - await Promise.all(promises); -} - -function stdOutProc(proc) { - proc.stdout.on('data', (data) => console.log(data.toString())); - proc.stderr.on('data', (data) => console.error(data.toString())); -} diff --git a/scripts/start-artifact.js b/scripts/start-artifact.js new file mode 100644 index 00000000..418bcde5 --- /dev/null +++ b/scripts/start-artifact.js @@ -0,0 +1,52 @@ +const fs = require('fs'); +const child = require('child_process'); + +exports.default = run; + +async function run(context) { + console.log('### Start artifact'); + // console.log(context); + + const appName = context.packager.appInfo.productFilename; + const appPath = `${context.appOutDir}/${appName}.app`; + const masBuild = context.electronPlatformName === 'mas'; + const macBuild = context.electronPlatformName === 'darwin'; + + if (masBuild || macBuild) { + console.log('### Signing Safari App Extension Libs'); + const resourcesPath = context.packager.info._buildResourcesDir; + const devId = masBuild ? '3rd Party Mac Developer Application: 8bit Solutions LLC' : + 'Developer ID Application: 8bit Solutions LLC'; + await signSafariAppLibs(appPath, resourcesPath, devId); + } +} + +async function signSafariAppLibs(appPath, resourcesPath, devId) { + const appexPath = appPath + '/Contents/PlugIns/safari.appex'; + const appexFrameworkPath = appexPath + '/Contents/Frameworks/'; + const entitlementsPath = resourcesPath + '/safari.entitlements'; + + const libs = fs.readdirSync(appexFrameworkPath).filter((p) => p.endsWith('.dylib')) + .map((p) => appexFrameworkPath + p); + const promises = []; + libs.forEach((i) => { + const proc = child.spawn('codesign', [ + '--verbose', + '--force', + '-o', + 'runtime', + '--sign', + devId, + '--entitlements', + entitlementsPath, + i]); + stdOutProc(proc); + promises.push(new Promise((resolve) => proc.on('close', resolve))); + }); + await Promise.all(promises); +} + +function stdOutProc(proc) { + proc.stdout.on('data', (data) => console.log(data.toString())); + proc.stderr.on('data', (data) => console.error(data.toString())); +}