exportFiles

tcmts.cli.files.exportFiles · #wubjifdl · term · runs on the server

uses node:path

Write the files kept under ns to dir, laid out by their names (ns.a.b is a/b.<format>), and the file named ns itself, if there is one and own, as <its name>.<format>: how many.

import type { Codebase } from "#codebase/tcmts/cli/codebase";
import { fileContent, fileName, filesIn } from "#codebase/tcmts/cli/files";
import fs from "node:fs";
import path_2 from "node:path";

export function exportFiles(cb: Codebase, ns: string, dir: string, own = true): number {
  const files = filesIn(cb, ns);
  if (!own) files.delete(ns);
  for (const [name, rec] of files) {
    const rel = (
      name === ns ? name.slice(name.lastIndexOf(".") + 1) : ns ? name.slice(ns.length + 1) : name
    ).split(".");
    const file = path_2.join(dir, ...rel.slice(0, -1), fileName(rel.at(-1)!, rec));
    fs.mkdirSync(path_2.dirname(file), { recursive: true });
    fs.writeFileSync(file, fileContent(cb, rec, name.slice(0, Math.max(0, name.lastIndexOf(".")))));
  }
  return files.size;
}

uses

used by