41 lines
1021 B
JavaScript
41 lines
1021 B
JavaScript
import fs from "node:fs";
|
|
import os from "node:os";
|
|
import path from "node:path";
|
|
|
|
export function ensureAbsolutePath(cwd, maybePath) {
|
|
return path.isAbsolute(maybePath) ? maybePath : path.resolve(cwd, maybePath);
|
|
}
|
|
|
|
export function createTempDir(prefix = "codex-plugin-") {
|
|
return fs.mkdtempSync(path.join(os.tmpdir(), prefix));
|
|
}
|
|
|
|
export function readJsonFile(filePath) {
|
|
return JSON.parse(fs.readFileSync(filePath, "utf8"));
|
|
}
|
|
|
|
export function writeJsonFile(filePath, value) {
|
|
fs.writeFileSync(filePath, `${JSON.stringify(value, null, 2)}\n`, "utf8");
|
|
}
|
|
|
|
export function safeReadFile(filePath) {
|
|
return fs.existsSync(filePath) ? fs.readFileSync(filePath, "utf8") : "";
|
|
}
|
|
|
|
export function isProbablyText(buffer) {
|
|
const sample = buffer.subarray(0, Math.min(buffer.length, 4096));
|
|
for (const value of sample) {
|
|
if (value === 0) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
export function readStdinIfPiped() {
|
|
if (process.stdin.isTTY) {
|
|
return "";
|
|
}
|
|
return fs.readFileSync(0, "utf8");
|
|
}
|