"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = authenticate;
function _chalk() {
const data = _interopRequireDefault(require("chalk"));
_chalk = function () {
return data;
};
return data;
}
function _wordwrap() {
const data = _interopRequireDefault(require("wordwrap"));
_wordwrap = function () {
return data;
};
return data;
}
function _fastlane() {
const data = require("./fastlane");
_fastlane = function () {
return data;
};
return data;
}
function _validators() {
const data = require("../../../../validators");
_validators = function () {
return data;
};
return data;
}
function _log() {
const data = _interopRequireDefault(require("../../../../log"));
_log = function () {
return data;
};
return data;
}
function _prompt() {
const data = _interopRequireDefault(require("../../../../prompt"));
_prompt = function () {
return data;
};
return data;
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const APPLE_IN_HOUSE_TEAM_TYPE = 'in-house';
async function authenticate(options) {
const {
appleId,
appleIdPassword
} = await _requestAppleIdCreds(options);
try {
(0, _log().default)('Trying to authenticate with Apple Developer Portal...');
const {
teams,
fastlaneSession
} = await (0, _fastlane().runAction)(_fastlane().travelingFastlane.authenticate, [appleId, appleIdPassword], {
pipeStdout: true
});
(0, _log().default)('Authenticated with Apple Developer Portal successfully!');
const team = await _chooseTeam(teams, options.teamId);
return {
appleId,
appleIdPassword,
team,
fastlaneSession
};
} catch (err) {
(0, _log().default)('Authentication with Apple Developer Portal failed!');
throw err;
}
}
async function _requestAppleIdCreds(options) {
return _getAppleIdFromParams(options) || (await _promptForAppleId(options));
}
function _getAppleIdFromParams({
appleId
}) {
const appleIdPassword = process.env.EXPO_APPLE_PASSWORD;
if (appleId && appleIdPassword) {
return {
appleId,
appleIdPassword
};
} else {
return null;
}
}
async function _promptForAppleId({
appleId
}) {
const wrap = (0, _wordwrap().default)(process.stdout.columns || 80);
(0, _log().default)(wrap('Please enter your Apple Developer Program account credentials. ' + 'These credentials are needed to manage certificates, keys and provisioning profiles ' + 'in your Apple Developer account.'));
(0, _log().default)(wrap(_chalk().default.bold('The password is only used to authenticate with Apple and never stored.')));
if (!appleId) {
({
appleId
} = await (0, _prompt().default)({
type: 'input',
name: 'appleId',
message: `Apple ID:`,
validate: _validators().nonEmptyInput
}, {
nonInteractiveHelp: 'Pass your Apple ID using the --apple-id flag.'
}));
}
const {
appleIdPassword
} = await (0, _prompt().default)({
type: 'password',
name: 'appleIdPassword',
message: answer => `Password (for ${appleId}):`,
validate: _validators().nonEmptyInput
}, {
nonInteractiveHelp: 'Pass your Apple ID password using the EXPO_APPLE_PASSWORD environment variable'
});
return {
appleId,
appleIdPassword
};
}
async function _chooseTeam(teams, userProvidedTeamId) {
if (teams.length === 0) {
throw new Error(`You have no team associated with your Apple account, cannot proceed.
(Do you have a paid Apple Developer account?)`);
}
if (userProvidedTeamId) {
const foundTeam = teams.find(({
teamId
}) => teamId === userProvidedTeamId);
if (foundTeam) {
(0, _log().default)(`Using Apple Team with ID: ${userProvidedTeamId}`);
return _formatTeam(foundTeam);
} else {
_log().default.warn(`Your account is not associated with Apple Team with ID: ${userProvidedTeamId}`);
}
}
if (teams.length === 1) {
const [team] = teams;
(0, _log().default)(`Only 1 team associated with your account, using Apple Team with ID: ${team.teamId}`);
return _formatTeam(team);
} else {
(0, _log().default)(`You have ${teams.length} teams associated with your account`);
const choices = teams.map((team, i) => ({
name: `${i + 1}) ${team.teamId} "${team.name}" (${team.type})`,
value: team
}));
const {
team
} = await (0, _prompt().default)({
type: 'list',
name: 'team',
message: 'Which team would you like to use?',
choices
});
return _formatTeam(team);
}
}
const _formatTeam = ({
teamId,
name,
type
}) => ({
id: teamId,
name: `${name} (${type})`,
inHouse: type.toLowerCase() === APPLE_IN_HOUSE_TEAM_TYPE
});
//# sourceMappingURL=../../../../__sourcemaps__/commands/build/ios/appleApi/authenticate.js.map