askeroo
Version:
A modern CLI prompt library with flow control, history navigation, and conditional prompts
53 lines โข 2.5 kB
JavaScript
import { ask } from "../src/index.js";
import { text } from "../src/built-ins/text/index.js";
import { confirm } from "../src/built-ins/confirm/index.js";
import fs from "fs";
import path from "path";
async function demonstrateAdvancedOnCancel() {
console.log("Advanced onCancel example with resource cleanup...");
console.log("Press Ctrl+C to trigger cleanup callbacks\n");
const tempFile = path.join(process.cwd(), "temp-session.json");
const result = await ask(async () => {
// Create a temporary file
const sessionData = {
startTime: new Date().toISOString(),
answers: {},
};
fs.writeFileSync(tempFile, JSON.stringify(sessionData, null, 2));
console.log(`๐ Created temporary file: ${tempFile}\n`);
// Regular flow
const projectName = await text({ label: "Project name?" });
sessionData.answers.projectName = projectName;
fs.writeFileSync(tempFile, JSON.stringify(sessionData, null, 2));
const description = await text({ label: "Project description?" });
sessionData.answers.description = description;
fs.writeFileSync(tempFile, JSON.stringify(sessionData, null, 2));
const confirmed = await confirm({ label: "Create this project?" });
// Clean up temp file on successful completion
if (fs.existsSync(tempFile)) {
fs.unlinkSync(tempFile);
console.log("โ Temporary file cleaned up");
}
return { projectName, description, confirmed };
}, {
onCancel: ({ results, cleanup }) => {
cleanup(); // Clean up UI first
console.log("\n๐ซ Advanced cancellation demo");
console.log("๐ Collected answers:", results);
console.log("\n๐งน Cleanup callback 1: Removing temporary file...");
if (fs.existsSync(tempFile)) {
fs.unlinkSync(tempFile);
console.log(" โ Temporary file removed");
}
console.log("๐ Cleanup callback 2: Closing connections...");
console.log(" โ Connections closed");
console.log("๐พ Cleanup callback 3: Saving partial data...");
console.log(" โ Partial data saved");
process.exit(0); // User controls exit
}
});
console.log("\nโ
Flow completed successfully!");
console.log("Result:", result);
}
demonstrateAdvancedOnCancel();
//# sourceMappingURL=oncancel-advanced.js.map