keptBuilds
uses node:fs
The builds kept in root: the known-good one (known-good), the one it replaced (previous, in
known-good-previous), then older ones (builds/<id>), newest first.
import { buildBin, buildRecord } from "#codebase/tcmts/cli/builds"; import type { TcmBuild } from "#codebase/tcmts/cli/builds"; import fs from "node:fs"; import path from "node:path"; export function keptBuilds(root: string): TcmBuild[] { const one = (name: string, dir: string): TcmBuild[] => { const bin = buildBin(dir); if (!bin) return []; const record = buildRecord(dir) ?? { head: undefined, when: undefined, how: "verified" as const, at: fs.statSync(dir).mtimeMs, }; return [{ name, dir, bin, ...record }]; }; const older = path.join(root, "builds"); return [ ...one("known-good", path.join(root, "known-good")), ...one("previous", path.join(root, "known-good-previous")), ...(fs.existsSync(older) ? fs .readdirSync(older) .flatMap((id) => one(id, path.join(older, id))) .sort((a, b) => b.at - a.at) : []), ]; }