diff options
Diffstat (limited to 'node_modules/electron-notarize/lib/legacy.js')
-rw-r--r-- | node_modules/electron-notarize/lib/legacy.js | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/node_modules/electron-notarize/lib/legacy.js b/node_modules/electron-notarize/lib/legacy.js new file mode 100644 index 0000000..90bdafe --- /dev/null +++ b/node_modules/electron-notarize/lib/legacy.js @@ -0,0 +1,115 @@ +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const debug = require("debug"); +const path = require("path"); +const spawn_1 = require("./spawn"); +const helpers_1 = require("./helpers"); +const validate_args_1 = require("./validate-args"); +const d = debug('electron-notarize:legacy'); +function authorizationArgs(rawOpts) { + const opts = validate_args_1.validateLegacyAuthorizationArgs(rawOpts); + if (validate_args_1.isLegacyPasswordCredentials(opts)) { + return ['-u', helpers_1.makeSecret(opts.appleId), '-p', helpers_1.makeSecret(opts.appleIdPassword)]; + } + else { + return [ + '--apiKey', + helpers_1.makeSecret(opts.appleApiKey), + '--apiIssuer', + helpers_1.makeSecret(opts.appleApiIssuer), + ]; + } +} +function startLegacyNotarize(opts) { + return __awaiter(this, void 0, void 0, function* () { + d('starting notarize process for app:', opts.appPath); + return yield helpers_1.withTempDir((dir) => __awaiter(this, void 0, void 0, function* () { + const zipPath = path.resolve(dir, `${path.basename(opts.appPath, '.app')}.zip`); + d('zipping application to:', zipPath); + const zipResult = yield spawn_1.spawn('ditto', ['-c', '-k', '--sequesterRsrc', '--keepParent', path.basename(opts.appPath), zipPath], { + cwd: path.dirname(opts.appPath), + }); + if (zipResult.code !== 0) { + throw new Error(`Failed to zip application, exited with code: ${zipResult.code}\n\n${zipResult.output}`); + } + d('zip succeeded, attempting to upload to Apple'); + const notarizeArgs = [ + 'altool', + '--notarize-app', + '-f', + zipPath, + '--primary-bundle-id', + opts.appBundleId, + ...authorizationArgs(opts), + ]; + if (opts.ascProvider) { + notarizeArgs.push('-itc_provider', opts.ascProvider); + } + const result = yield spawn_1.spawn('xcrun', notarizeArgs); + if (result.code !== 0) { + throw new Error(`Failed to upload app to Apple's notarization servers\n\n${result.output}`); + } + d('upload success'); + const uuidMatch = /\nRequestUUID = (.+?)\n/g.exec(result.output); + if (!uuidMatch) { + throw new Error(`Failed to find request UUID in output:\n\n${result.output}`); + } + d('found UUID:', uuidMatch[1]); + return { + uuid: uuidMatch[1], + }; + })); + }); +} +exports.startLegacyNotarize = startLegacyNotarize; +function waitForLegacyNotarize(opts) { + return __awaiter(this, void 0, void 0, function* () { + d('checking notarization status:', opts.uuid); + const result = yield spawn_1.spawn('xcrun', [ + 'altool', + '--notarization-info', + opts.uuid, + ...authorizationArgs(opts), + ]); + if (result.code !== 0) { + // These checks could fail for all sorts of reasons, including: + // * The status of a request isn't available as soon as the upload request returns, so + // it may just not be ready yet. + // * If using keychain password, user's mac went to sleep and keychain locked. + // * Regular old connectivity failure. + d(`Failed to check status of notarization request, retrying in 30 seconds: ${opts.uuid}\n\n${result.output}`); + yield helpers_1.delay(30000); + return waitForLegacyNotarize(opts); + } + const notarizationInfo = helpers_1.parseNotarizationInfo(result.output); + if (notarizationInfo.status === 'in progress') { + d('still in progress, waiting 30 seconds'); + yield helpers_1.delay(30000); + return waitForLegacyNotarize(opts); + } + d('notarzation done with info:', notarizationInfo); + if (notarizationInfo.status === 'invalid') { + d('notarization failed'); + throw new Error(`Apple failed to notarize your application, check the logs for more info + +Status Code: ${notarizationInfo.statusCode || 'No Code'} +Message: ${notarizationInfo.statusMessage || 'No Message'} +Logs: ${notarizationInfo.logFileUrl}`); + } + if (notarizationInfo.status !== 'success') { + throw new Error(`Unrecognized notarization status: "${notarizationInfo.status}"`); + } + d('notarization was successful'); + return; + }); +} +exports.waitForLegacyNotarize = waitForLegacyNotarize; +//# sourceMappingURL=legacy.js.map
\ No newline at end of file |