UNPKG

eas-cli

Version:
140 lines (139 loc) 6.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const chalk_1 = tslib_1.__importDefault(require("chalk")); const AppSpecificPasswordSource_1 = require("./AppSpecificPasswordSource"); const AscApiKeySource_1 = require("./AscApiKeySource"); const AnalyticsManager_1 = require("../../analytics/AnalyticsManager"); const SubmissionMutation_1 = require("../../graphql/mutations/SubmissionMutation"); const formatFields_1 = tslib_1.__importDefault(require("../../utils/formatFields")); const BaseSubmitter_1 = tslib_1.__importDefault(require("../BaseSubmitter")); const summary_1 = require("../utils/summary"); class IosSubmitter extends BaseSubmitter_1.default { constructor(ctx, options, archive) { const sourceOptionsResolver = { // eslint-disable-next-line async-protect/async-suffix archive: async () => archive, // eslint-disable-next-line async-protect/async-suffix credentials: async () => { const maybeAppSpecificPassword = this.options.appSpecificPasswordSource ? await (0, AppSpecificPasswordSource_1.getAppSpecificPasswordLocallyAsync)(this.ctx, this.options.appSpecificPasswordSource) : null; const maybeAppStoreConnectApiKey = this.options.ascApiKeySource ? await (0, AscApiKeySource_1.getAscApiKeyResultAsync)(this.ctx, this.options.ascApiKeySource) : null; return { ...(maybeAppSpecificPassword ? { appSpecificPassword: maybeAppSpecificPassword } : null), ...(maybeAppStoreConnectApiKey ? { ascApiKeyResult: maybeAppStoreConnectApiKey } : null), }; }, }; const sourceOptionsAnalytics = { archive: { attemptEvent: AnalyticsManager_1.SubmissionEvent.GATHER_ARCHIVE_ATTEMPT, successEvent: AnalyticsManager_1.SubmissionEvent.GATHER_ARCHIVE_SUCCESS, failureEvent: AnalyticsManager_1.SubmissionEvent.GATHER_ARCHIVE_FAIL, }, credentials: { attemptEvent: AnalyticsManager_1.SubmissionEvent.GATHER_CREDENTIALS_ATTEMPT, successEvent: AnalyticsManager_1.SubmissionEvent.GATHER_CREDENTIALS_SUCCESS, failureEvent: AnalyticsManager_1.SubmissionEvent.GATHER_CREDENTIALS_FAIL, }, }; super(ctx, options, sourceOptionsResolver, sourceOptionsAnalytics); } async createSubmissionInputAsync(resolvedSourceOptions) { const submissionConfig = this.formatSubmissionConfig(this.options, resolvedSourceOptions); (0, summary_1.printSummary)(this.prepareSummaryData(this.options, resolvedSourceOptions), SummaryHumanReadableKeys); return { projectId: this.options.projectId, submissionConfig, ...this.formatArchive(resolvedSourceOptions.archive), }; } async createPlatformSubmissionAsync({ projectId, submissionConfig, buildId, archiveSource, }) { return await SubmissionMutation_1.SubmissionMutation.createIosSubmissionAsync(this.ctx.graphqlClient, { appId: projectId, config: submissionConfig, submittedBuildId: buildId, archiveSource, }); } formatSubmissionConfig(options, { credentials }) { const { appSpecificPassword, ascApiKeyResult } = credentials; const { appleIdUsername, ascAppIdentifier } = options; const { isVerboseFastlaneEnabled } = this.ctx; return { ascAppIdentifier, appleIdUsername, isVerboseFastlaneEnabled, ...(appSpecificPassword ? this.formatAppSpecificPassword(appSpecificPassword) : null), ...(ascApiKeyResult?.result ? this.formatAscApiKeyResult(ascApiKeyResult.result) : null), }; } formatAppSpecificPassword(appSpecificPassword) { return { appleAppSpecificPassword: appSpecificPassword.password, appleIdUsername: appSpecificPassword.appleIdUsername, }; } formatAscApiKeyResult(result) { return 'ascApiKeyId' in result ? { ascApiKeyId: result.ascApiKeyId } : { ascApiKey: { keyP8: result.keyP8, keyIdentifier: result.keyId, issuerIdentifier: result.issuerId, }, }; } prepareSummaryData(options, { archive, credentials }) { const { ascApiKeyResult, appSpecificPassword } = credentials; const { ascAppIdentifier, projectId } = options; // structuring order affects table rows order return { ascAppIdentifier, projectId, ...(appSpecificPassword ? { appleIdUsername: appSpecificPassword.appleIdUsername } : null), ...(ascApiKeyResult ? { formattedAscApiKey: formatAscApiKeySummary(ascApiKeyResult) } : null), ...(0, summary_1.formatArchiveSourceSummary)(archive), }; } } exports.default = IosSubmitter; const SummaryHumanReadableKeys = { ascAppIdentifier: 'ASC App ID', appleIdUsername: 'Apple ID', projectId: 'Project ID', archiveUrl: 'Archive URL', archivePath: 'Archive Path', formattedBuild: 'Build', formattedAscApiKey: 'App Store Connect API Key', }; function formatAscApiKeySummary({ summary }) { const { source, path, keyId, name } = summary; const fields = [ { label: 'Key Name', value: name, }, { label: 'Key ID', value: keyId, }, { label: 'Key Source', value: source, }, { label: 'Key Path', value: path, }, ]; const filteredFields = fields.filter(({ value }) => value !== undefined && value !== null); return ('\n' + (0, formatFields_1.default)(filteredFields, { labelFormat: label => ` ${chalk_1.default.dim(label)}:`, })); }