import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; export type SecretFiles = { passwordFile?: string; tokenFile?: string; }; export async function withTempSecretFiles( prefix: string, secrets: { password?: string; token?: string }, run: (files: SecretFiles) => Promise, ): Promise { const dir = await fs.mkdtemp(path.join(os.tmpdir(), prefix)); try { const files: SecretFiles = {}; if (secrets.token !== undefined) { files.tokenFile = path.join(dir, "token.txt"); await fs.writeFile(files.tokenFile, secrets.token, "utf8"); } if (secrets.password !== undefined) { files.passwordFile = path.join(dir, "password.txt"); await fs.writeFile(files.passwordFile, secrets.password, "utf8"); } return await run(files); } finally { await fs.rm(dir, { recursive: true, force: true }); } }