listBuilds
uses node:fs
Builds on disk, newest first (one moved away as it's read, by pruning in another process, isn't).
import type { Codebase } from "#codebase/tcmts/cli/codebase"; import { appsDir, manifestFile } from "#codebase/tcmts/cli/web"; import type { BuildManifest } from "#codebase/tcmts/cli/web"; import fs from "node:fs"; export function listBuilds(cb: Codebase): BuildManifest[] { if (!fs.existsSync(appsDir(cb))) return []; return fs .readdirSync(appsDir(cb)) .flatMap((h) => { try { return [JSON.parse(fs.readFileSync(manifestFile(cb, h), "utf8")) as BuildManifest]; } catch { return []; } }) .sort((a, b) => b.builtAt.localeCompare(a.builtAt)); }
uses
- tcmts.cli.codebase.Codebase
- tcmts.cli.web.BuildManifest
- tcmts.cli.web.appsDir
- tcmts.cli.web.manifestFile