registryCodebase

tcmts.registry.registryCodebase · #tgnkk3vy · term · runs on the server

uses node:fs

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

import { Codebase, openApart } from "#codebase/tcmts/cli/codebase";
import { registryDir, registryOpened } from "#codebase/tcmts/registry";
import fs from "node:fs";
import path_1 from "node:path";

export function registryCodebase(): Codebase {
  const dir = registryDir();
  const open = registryOpened.get(dir);
  if (open) return open;
  const made = fs.existsSync(path_1.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;
        }
      })();
  registryOpened.set(dir, made);
  return made;
}

uses

used by