storebound/cli/play/publish-ready.ts

20 lines
1.1 KiB
TypeScript

// Read-only: the production releases waiting in Publishing overview (managed publishing), from the tracks and the public store page.
import type { ShipConfig } from '../lib/config';
import { need } from '../lib/ctx';
import { type ReadyChange, readyToPublish, readyUndetermined } from '../lib/play-publish';
import { playPublicPage } from '../lib/play-public';
import { playClient } from './client';
export async function readyFromApi(root: string, config: ShipConfig): Promise<ReadyChange[] & { undetermined?: boolean }> {
const pkg = need(config.play?.packageName, 'play.packageName');
const play = await playClient(root, pkg);
let out: ReadyChange[] & { undetermined?: boolean } = [];
await play.read(async id => {
const tracks = (await play.call<{ tracks?: unknown[] }>('GET', `${play.API}/edits/${id}/tracks`)).tracks ?? [];
const publicPage = await playPublicPage(play.packageName);
const data = { tracks, publicPage, managedPublishing: config.play?.managedPublishing ?? null };
out = readyToPublish(data);
out.undetermined = !out.length && readyUndetermined(data);
});
return out;
}