hubCodebase

tcmts.hub.hubCodebase · #t3ptouk2 · term · runs on the server

uses node:fs

The hub's own codebase, holding what it mirrors: at hubDir (made if need be).

import { Codebase, openApart } from "#codebase/tcmts/cli/codebase";
import { hubDir, hubOpened } from "#codebase/tcmts/hub";
import fs from "node:fs";
import path from "node:path";

export function hubCodebase(): Codebase {
  const dir = hubDir();
  const open = hubOpened.get(dir);
  if (open) return open;
  const made = fs.existsSync(path.join(dir, ".tcm", "codebase.sqlite"))
    ? openApart(dir)
    : (() => {
        fs.mkdirSync(dir, { recursive: true });
        const session = process.env.TCM_BRANCH;
        delete process.env.TCM_BRANCH;
        try {
          return Codebase.init(dir);
        } finally {
          if (session !== undefined) process.env.TCM_BRANCH = session;
        }
      })();
  hubOpened.set(dir, made);
  return made;
}

uses

used by