UNPKG

eas-cli

Version:
83 lines (82 loc) 3.12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.formatBuild = exports.fetchBuildsAsync = exports.ensureBuildExistsAsync = void 0; const tslib_1 = require("tslib"); const chalk_1 = tslib_1.__importDefault(require("chalk")); const generated_1 = require("../graphql/generated"); const BuildQuery_1 = require("../graphql/queries/BuildQuery"); const platform_1 = require("../platform"); const platformToAppPlatform = { android: generated_1.AppPlatform.Android, ios: generated_1.AppPlatform.Ios, }; async function ensureBuildExistsAsync(graphqlClient, buildId) { try { await BuildQuery_1.BuildQuery.byIdAsync(graphqlClient, buildId); } catch { throw new Error(`Couldn't find a build matching the id ${buildId}`); } } exports.ensureBuildExistsAsync = ensureBuildExistsAsync; async function fetchBuildsAsync({ graphqlClient, projectId, filters, }) { let builds; const queryFilters = {}; if (filters?.platform && filters.platform !== 'all') { queryFilters['platform'] = platformToAppPlatform[filters.platform]; } if (filters?.profile) { queryFilters['buildProfile'] = filters.profile; } if (filters?.hasFingerprint) { queryFilters['hasFingerprint'] = filters.hasFingerprint; } if (!filters?.statuses) { builds = await BuildQuery_1.BuildQuery.viewBuildsOnAppAsync(graphqlClient, { appId: projectId, offset: 0, limit: 10, filter: queryFilters ? queryFilters : undefined, }); } else { builds = (await Promise.all(filters.statuses.map(status => BuildQuery_1.BuildQuery.viewBuildsOnAppAsync(graphqlClient, { appId: projectId, offset: 0, limit: 10, filter: queryFilters ? { ...queryFilters, status } : { status }, })))).flat(); } builds.sort((buildA, buildB) => (buildA.createdAt > buildB.createdAt ? -1 : 1)); return builds; } exports.fetchBuildsAsync = fetchBuildsAsync; function formatBuild(build) { const platform = platform_1.appPlatformEmojis[build.platform]; const startTime = new Date(build.createdAt).toLocaleString(); let statusText; if (build.status === generated_1.BuildStatus.New) { statusText = 'new'; } else if (build.status === generated_1.BuildStatus.InQueue) { statusText = 'in queue'; } else if (build.status === generated_1.BuildStatus.InProgress) { statusText = 'in progress'; } else if (build.status === generated_1.BuildStatus.Finished) { statusText = 'finished'; } else if (build.status === generated_1.BuildStatus.Errored) { statusText = 'errored'; } else if ([generated_1.BuildStatus.PendingCancel, generated_1.BuildStatus.Canceled].includes(build.status)) { statusText = 'canceled'; } else { statusText = 'unknown'; } const status = chalk_1.default.blue(statusText); return `${platform} Started at: ${startTime}, Status: ${status}, Id: ${build.id}`; } exports.formatBuild = formatBuild;