define-alpine-the-sequel/helpers/secrets.ts

29 lines
885 B
TypeScript

import { mkdir, readFile, writeFile } from "node:fs/promises";
import { join } from "node:path";
import { exists } from "./better-api";
const secretsFileName = (name: string) => join("secrets", name + ".json");
export function loadSecretsFile<T>(name: string): () => Promise<T> {
return async () => {
const file = await readFile(secretsFileName(name), "utf-8");
return JSON.parse(file);
};
}
export function generateSecretsFile<T>(
name: string,
generate: () => Promise<T>
): () => Promise<void> {
return async () => {
const secrets = await generate();
await mkdir("secrets", { recursive: true });
const fileName = secretsFileName(name);
if (await exists(fileName)) {
console.warn(`${fileName} ya existe, salteando..`);
} else {
await writeFile(fileName, JSON.stringify(secrets, null, 2), {
flag: "wx",
});
}
};
}