const os = require("node:os"); const path = require("node:path"); const readline = require("node:readline"); const process = require("node:process"); function expandHome(p) { if (!p) return p; if (p.startsWith("~")) return path.join(os.homedir(), p.slice(1)); return p; } function createRl() { return readline.createInterface({ input: process.stdin, output: process.stdout, }); } function promptQuestion(question) { return new Promise((resolve) => { const rl = createRl(); rl.question(question, (answer) => { rl.close(); resolve(answer); }); }); } async function promptYesNo(question, defaultYes = true) { const suffix = defaultYes ? " [Y/n] " : " [y/N] "; const ans = (await promptQuestion(`${question}${suffix}`)).trim().toLowerCase(); if (!ans) return defaultYes; if (["y", "yes"].includes(ans)) return true; if (["n", "no"].includes(ans)) return false; return promptYesNo(question, defaultYes); } async function promptPath(question, defaultValue) { const prompt = `${question}${defaultValue ? ` (default: ${defaultValue})` : ""}: `; const ans = (await promptQuestion(prompt)).trim(); return expandHome(ans || defaultValue); } module.exports = { promptYesNo, promptPath, promptQuestion, expandHome };