exportFiles
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
- tcmts.cli.codebase.Codebase
- tcmts.cli.files.fileContent
- tcmts.cli.files.fileName
- tcmts.cli.files.filesIn