notarize.js 1.2 KB

123456789101112131415161718192021222324252627
  1. const child_process = require('child_process');
  2. const fs = require('fs');
  3. const notarize = require('electron-notarize');
  4. exports.default = function (context) {
  5. if (context.electronPlatformName === 'darwin' && context.packager.platformSpecificBuildOptions.type !== 'development') {
  6. const appPath = context.appOutDir + '/' + context.packager.appInfo.productFilename + '.app';
  7. const configuration = fs.readFileSync('electron-builder.yml', 'utf-8');
  8. const appBundleId = (/^appId:\s(.*)\s/m.exec(configuration) || [ '', '' ])[1];
  9. const idResult = child_process.spawnSync('/usr/bin/security', [ 'find-generic-password', '-s', appBundleId, '-g' ], { encoding: 'utf-8' });
  10. const id = idResult.status === 0 ? (/"acct"<blob>="(.*)"/.exec(idResult.stdout) || [ '', ''])[1] : '';
  11. const passwordResult = child_process.spawnSync('/usr/bin/security', [ 'find-generic-password', '-s', appBundleId, '-w' ], { encoding: 'utf-8' });
  12. const password = passwordResult.status == 0 ? passwordResult.stdout.split('\n').shift() : '';
  13. return notarize.notarize({
  14. appBundleId: appBundleId,
  15. appPath: appPath,
  16. appleId: id,
  17. appleIdPassword: password,
  18. });
  19. }
  20. };