everything-dev
Version:
A consolidated product package for building Module Federation apps with oRPC APIs.
56 lines (54 loc) • 1.95 kB
JavaScript
import { Effect } from "effect";
import { mkdir, readFile, rm, stat, writeFile } from "node:fs/promises";
import { execFile } from "node:child_process";
import { glob } from "glob";
import { promisify } from "node:util";
//#region src/services/scaffold/upgrade-audit/fs.ts
const execFileAsync = promisify(execFile);
const listFiles = (projectDir, pattern) => Effect.tryPromise({
try: async () => glob(pattern, {
cwd: projectDir,
nodir: true,
dot: false,
absolute: false
}),
catch: (error) => /* @__PURE__ */ new Error(`glob failed for ${pattern}: ${String(error)}`)
});
const fileExists = (projectDir, relativePath) => Effect.tryPromise({
try: async () => {
try {
await stat(`${projectDir}/${relativePath}`);
return true;
} catch {
return false;
}
},
catch: (error) => /* @__PURE__ */ new Error(`stat failed for ${relativePath}: ${String(error)}`)
});
const readText = (projectDir, relativePath) => Effect.tryPromise({
try: () => readFile(`${projectDir}/${relativePath}`, "utf-8"),
catch: (error) => /* @__PURE__ */ new Error(`read failed for ${relativePath}: ${String(error)}`)
});
const writeText = (projectDir, relativePath, content) => Effect.tryPromise({
try: async () => {
const target = `${projectDir}/${relativePath}`;
const dir = target.slice(0, target.lastIndexOf("/"));
if (dir) await mkdir(dir, { recursive: true });
await writeFile(target, content);
return relativePath;
},
catch: (error) => /* @__PURE__ */ new Error(`write failed for ${relativePath}: ${String(error)}`)
});
const removePath = (projectDir, relativePath) => Effect.tryPromise({
try: async () => {
await rm(`${projectDir}/${relativePath}`, {
force: true,
recursive: true
});
return relativePath;
},
catch: (error) => /* @__PURE__ */ new Error(`remove failed for ${relativePath}: ${String(error)}`)
});
//#endregion
export { fileExists, listFiles, readText, removePath, writeText };
//# sourceMappingURL=fs.mjs.map