prasi-bun/app/srv/api/local-files.ts

40 lines
909 B
TypeScript

import { dir } from "dir";
import { apiContext } from "service-srv";
export const _ = {
url: "/local-files",
async api(arg: {
id_site: string;
mode: "list" | "write" | "read";
path: string;
content?: string;
}) {
const { req, res } = apiContext(this);
const { mode, id_site, path, content } = arg;
const root = dir.data(`/code/${id_site}/site/src`);
switch (mode) {
case "list": {
const glob = new Bun.Glob("**");
const files = [];
for await (const file of glob.scan(root + path)) {
files.push(file);
}
return files;
}
case "write": {
await Bun.write(root + path, content || "", { createPath: true });
}
case "read": {
try {
return await Bun.file(root + path).text();
} catch (e) {
return null;
}
}
}
return "ok";
},
};