import { spawn } from "bun"; const SERVICE = "sh.tangled.cli"; export async function setPassword(did: string, password: string): Promise { const proc = spawn({ cmd: ["security", "add-generic-password", "-U", "-a", did, "-s", SERVICE, "-w", password], stdout: "pipe", stderr: "pipe", }); const code = await proc.exited; if (code !== 0) { const err = await new Response(proc.stderr).text(); throw new Error(`keychain write failed: ${err.trim()}`); } } export async function getPassword(did: string): Promise { const proc = spawn({ cmd: ["security", "find-generic-password", "-a", did, "-s", SERVICE, "-w"], stdout: "pipe", stderr: "pipe", }); const code = await proc.exited; if (code !== 0) return null; const out = await new Response(proc.stdout).text(); return out.replace(/\n$/, ""); } export async function deletePassword(did: string): Promise { const proc = spawn({ cmd: ["security", "delete-generic-password", "-a", did, "-s", SERVICE], stdout: "pipe", stderr: "pipe", }); await proc.exited; }