|
|
"use strict";
|
|
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
|
value: true
|
|
|
});
|
|
|
exports.SetupIosBuildCredentialsFromLocal = exports.SetupIosBuildCredentials = void 0;
|
|
|
function _chalk() {
|
|
|
const data = _interopRequireDefault(require("chalk"));
|
|
|
_chalk = function () {
|
|
|
return data;
|
|
|
};
|
|
|
return data;
|
|
|
}
|
|
|
function _CommandError() {
|
|
|
const data = _interopRequireDefault(require("../../CommandError"));
|
|
|
_CommandError = function () {
|
|
|
return data;
|
|
|
};
|
|
|
return data;
|
|
|
}
|
|
|
function appleApi() {
|
|
|
const data = _interopRequireWildcard(require("../../appleApi"));
|
|
|
appleApi = function () {
|
|
|
return data;
|
|
|
};
|
|
|
return data;
|
|
|
}
|
|
|
function _log() {
|
|
|
const data = _interopRequireDefault(require("../../log"));
|
|
|
_log = function () {
|
|
|
return data;
|
|
|
};
|
|
|
return data;
|
|
|
}
|
|
|
function _prompts() {
|
|
|
const data = _interopRequireWildcard(require("../../utils/prompts"));
|
|
|
_prompts = function () {
|
|
|
return data;
|
|
|
};
|
|
|
return data;
|
|
|
}
|
|
|
function credentialsJsonReader() {
|
|
|
const data = _interopRequireWildcard(require("../credentialsJson/read"));
|
|
|
credentialsJsonReader = function () {
|
|
|
return data;
|
|
|
};
|
|
|
return data;
|
|
|
}
|
|
|
function _route() {
|
|
|
const data = require("../route");
|
|
|
_route = function () {
|
|
|
return data;
|
|
|
};
|
|
|
return data;
|
|
|
}
|
|
|
function _provisioningProfile() {
|
|
|
const data = require("../utils/provisioningProfile");
|
|
|
_provisioningProfile = function () {
|
|
|
return data;
|
|
|
};
|
|
|
return data;
|
|
|
}
|
|
|
function _SetupIosDist() {
|
|
|
const data = require("./SetupIosDist");
|
|
|
_SetupIosDist = function () {
|
|
|
return data;
|
|
|
};
|
|
|
return data;
|
|
|
}
|
|
|
function _SetupIosProvisioningProfile() {
|
|
|
const data = require("./SetupIosProvisioningProfile");
|
|
|
_SetupIosProvisioningProfile = function () {
|
|
|
return data;
|
|
|
};
|
|
|
return data;
|
|
|
}
|
|
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
|
class SetupIosBuildCredentials {
|
|
|
constructor(app) {
|
|
|
this.app = app;
|
|
|
}
|
|
|
async open(ctx) {
|
|
|
await this.bestEffortAppleCtx(ctx);
|
|
|
if (ctx.hasAppleCtx()) {
|
|
|
await appleApi().ensureBundleIdExistsAsync(ctx.appleCtx, this.app, {
|
|
|
enablePushNotifications: true
|
|
|
});
|
|
|
}
|
|
|
try {
|
|
|
await (0, _route().runCredentialsManager)(ctx, new (_SetupIosDist().SetupIosDist)(this.app));
|
|
|
} catch (error) {
|
|
|
_log().default.error('Failed to set up Distribution Certificate');
|
|
|
throw error;
|
|
|
}
|
|
|
const distCert = await ctx.ios.getDistCert(this.app);
|
|
|
if (!distCert) {
|
|
|
throw new (_CommandError().default)('INSUFFICIENT_CREDENTIALS', `This build request requires a valid distribution certificate.`);
|
|
|
}
|
|
|
try {
|
|
|
await (0, _route().runCredentialsManager)(ctx, new (_SetupIosProvisioningProfile().SetupIosProvisioningProfile)(this.app));
|
|
|
} catch (error) {
|
|
|
_log().default.error('Failed to set up Provisioning Profile');
|
|
|
throw error;
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
// Try to get the user to provide Apple credentials upfront
|
|
|
// We will be able to do full validation of their iOS creds this way
|
|
|
async bestEffortAppleCtx(ctx) {
|
|
|
if (ctx.hasAppleCtx()) {
|
|
|
// skip prompts if already have apple ctx
|
|
|
return;
|
|
|
}
|
|
|
if (ctx.nonInteractive) {
|
|
|
return;
|
|
|
}
|
|
|
const confirm = await (0, _prompts().confirmAsync)({
|
|
|
message: `Do you have access to the Apple account that will be used for submitting this app to the App Store?`
|
|
|
});
|
|
|
if (confirm) {
|
|
|
return await ctx.ensureAppleCtx();
|
|
|
} else {
|
|
|
_log().default.log(_chalk().default.green('No problem! 👌 \nWe can’t auto-generate credentials if you don’t have access to the main Apple account. \nBut we can still set it up if you upload your credentials.'));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
exports.SetupIosBuildCredentials = SetupIosBuildCredentials;
|
|
|
class SetupIosBuildCredentialsFromLocal {
|
|
|
constructor(app) {
|
|
|
this.app = app;
|
|
|
}
|
|
|
async open(ctx) {
|
|
|
let localCredentials;
|
|
|
try {
|
|
|
localCredentials = await credentialsJsonReader().readIosCredentialsAsync(ctx.projectDir);
|
|
|
} catch (error) {
|
|
|
_log().default.error('Reading credentials from credentials.json failed. Make sure this file is correct and all credentials are present there.');
|
|
|
throw error;
|
|
|
}
|
|
|
const team = await (0, _provisioningProfile().readAppleTeam)(localCredentials.provisioningProfile);
|
|
|
await ctx.ios.updateProvisioningProfile(this.app, {
|
|
|
...team,
|
|
|
provisioningProfile: localCredentials.provisioningProfile
|
|
|
});
|
|
|
const credentials = await ctx.ios.getAllCredentials(this.app.accountName);
|
|
|
const distCert = await ctx.ios.getDistCert(this.app);
|
|
|
const appsUsingCert = distCert !== null && distCert !== void 0 && distCert.id ? (credentials.appCredentials || []).filter(cred => cred.distCredentialsId === distCert.id) : [];
|
|
|
const appInfo = `@${this.app.accountName}/${this.app.projectName} (${this.app.bundleIdentifier})`;
|
|
|
const newDistCert = {
|
|
|
...team,
|
|
|
certP12: localCredentials.distributionCertificate.certP12,
|
|
|
certPassword: localCredentials.distributionCertificate.certPassword
|
|
|
};
|
|
|
if (appsUsingCert.length > 1 && distCert !== null && distCert !== void 0 && distCert.id) {
|
|
|
const {
|
|
|
update
|
|
|
} = await (0, _prompts().default)({
|
|
|
type: 'select',
|
|
|
name: 'update',
|
|
|
message: 'Current distribution certificate is used by multiple apps. Do you want to update all of them?',
|
|
|
choices: [{
|
|
|
title: 'Update all apps',
|
|
|
value: 'all'
|
|
|
}, {
|
|
|
title: `Update only ${appInfo}`,
|
|
|
value: 'app'
|
|
|
}]
|
|
|
});
|
|
|
if (update === 'all') {
|
|
|
await ctx.ios.updateDistCert(distCert.id, this.app.accountName, newDistCert);
|
|
|
} else {
|
|
|
const createdDistCert = await ctx.ios.createDistCert(this.app.accountName, newDistCert);
|
|
|
await ctx.ios.useDistCert(this.app, createdDistCert.id);
|
|
|
}
|
|
|
} else if (distCert !== null && distCert !== void 0 && distCert.id) {
|
|
|
await ctx.ios.updateDistCert(distCert.id, this.app.accountName, newDistCert);
|
|
|
} else {
|
|
|
const createdDistCert = await ctx.ios.createDistCert(this.app.accountName, newDistCert);
|
|
|
await ctx.ios.useDistCert(this.app, createdDistCert.id);
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
exports.SetupIosBuildCredentialsFromLocal = SetupIosBuildCredentialsFromLocal;
|
|
|
//# sourceMappingURL=SetupIosBuildCredentials.js.map
|