writeReleaseSummary

tcmts.studio.writeReleaseSummary · #tffhga3d · term · runs on the server

uses node:fs

Keep summary as what package name's next release (version, as things stand) is about: its draft (release-<name>.md, as tcm release --draft writes it, its changes below the marker made again when it's released), which releasing takes its words from. An empty summary takes the draft away. Only for the studio's maintainer, on the codebase's own branch (not one only read here).

import { publishingList } from "#codebase/tcmts/cli/release_pages";
import { draftFile, MARKER, notesOf } from "#codebase/tcmts/cli/releases";
import { HttpError } from "#codebase/tcmts/server";
import { editableCodebase } from "#codebase/tcmts/studio";
import fs from "node:fs";

export async function writeReleaseSummary(
  name: string,
  version: string,
  summary: string,
): Promise<void> {
  const cb = editableCodebase();
  if (!publishingList(cb).some((p) => p.name === name))
    throw new HttpError(404, `There's no package named ${name}.`);
  const file = draftFile(cb, name);
  const words = summary.trim();
  if (!words) return void fs.rmSync(file, { force: true });
  // (the changes below the marker are made again when it's released: none are needed here)
  fs.writeFileSync(
    file,
    notesOf(version, Date.now(), words, "").replace(`${MARKER}\n\n\n`, `${MARKER}\n`),
  );
}

uses

used by