40 lines
909 B
TypeScript
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";
|
|
},
|
|
};
|