eas-cli
Version:
EAS command line tool
72 lines (71 loc) • 2.73 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.downloadMetadataAsync = void 0;
const tslib_1 = require("tslib");
const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
const path_1 = tslib_1.__importDefault(require("path"));
const tasks_1 = require("./apple/tasks");
const auth_1 = require("./auth");
const resolve_1 = require("./config/resolve");
const errors_1 = require("./errors");
const telemetry_1 = require("./utils/telemetry");
const AnalyticsManager_1 = require("../analytics/AnalyticsManager");
const log_1 = tslib_1.__importDefault(require("../log"));
const prompts_1 = require("../prompts");
/**
* Generate a local store configuration from the stores.
* Note, only App Store is supported at this time.
*/
async function downloadMetadataAsync({ projectDir, profile, exp, analytics, credentialsCtx, }) {
const filePath = (0, resolve_1.getStaticConfigFilePath)({ projectDir, profile });
const fileExists = await fs_extra_1.default.pathExists(filePath);
if (fileExists) {
const filePathRelative = path_1.default.relative(projectDir, filePath);
const overwrite = await (0, prompts_1.confirmAsync)({
message: `Do you want to overwrite the existing "${filePathRelative}"?`,
});
if (!overwrite) {
throw new errors_1.MetadataValidationError(`Store config already exists at "${filePath}"`);
}
}
const { app, auth } = await (0, auth_1.getAppStoreAuthAsync)({
exp,
credentialsCtx,
projectDir,
profile,
});
const { unsubscribeTelemetry, executionId } = (0, telemetry_1.subscribeTelemetry)(analytics, AnalyticsManager_1.MetadataEvent.APPLE_METADATA_DOWNLOAD, { app, auth });
log_1.default.addNewLineIfNone();
log_1.default.log('Downloading App Store config...');
const errors = [];
const config = (0, resolve_1.createAppleWriter)();
const tasks = (0, tasks_1.createAppleTasks)();
const taskCtx = { app };
for (const task of tasks) {
try {
await task.prepareAsync({ context: taskCtx });
}
catch (error) {
errors.push(error);
}
}
for (const task of tasks) {
try {
await task.downloadAsync({ config, context: taskCtx });
}
catch (error) {
errors.push(error);
}
}
try {
await fs_extra_1.default.writeJSON(filePath, config.toSchema(), { spaces: 2 });
}
finally {
unsubscribeTelemetry();
}
if (errors.length > 0) {
throw new errors_1.MetadataDownloadError(errors, executionId);
}
return filePath;
}
exports.downloadMetadataAsync = downloadMetadataAsync;