caravan-x
Version:
A terminal-based utility for managing Caravan multisig wallets in regtest mode. This tool simplifies development and testing with Caravan by providing an easy-to-use interface
70 lines (69 loc) • 2.37 kB
JavaScript
;
/**
* Scenario Commands for Caravan-X
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ScenarioCommands = void 0;
const prompts_1 = require("@inquirer/prompts");
const terminal_1 = require("../utils/terminal");
const cli_table3_1 = __importDefault(require("cli-table3"));
class ScenarioCommands {
constructor(scenarioService) {
this.scenarioService = scenarioService;
}
async showScenarioMenu() {
(0, terminal_1.displayCommandTitle)("Test Scenarios");
const action = await (0, prompts_1.select)({
message: "What would you like to do?",
choices: [
{ name: "📋 List Scenarios", value: "list" },
{ name: "🎬 Apply Scenario", value: "apply" },
{ name: "🔙 Back", value: "back" },
],
});
switch (action) {
case "list":
await this.listScenarios();
break;
case "apply":
await this.applyScenario();
break;
case "back":
return;
}
if (action !== "back") {
await this.showScenarioMenu();
}
}
async listScenarios() {
const scenarios = await this.scenarioService.listScenarios();
const table = new cli_table3_1.default({
head: ["Name", "Description", "Block Height"],
colWidths: [25, 50, 15],
});
for (const scenario of scenarios) {
table.push([
scenario.name,
scenario.description || "",
scenario.blockHeight,
]);
}
console.log("\n" + table.toString());
}
async applyScenario() {
const scenarios = await this.scenarioService.listScenarios();
const scenarioId = await (0, prompts_1.select)({
message: "Select scenario to apply:",
choices: scenarios.map((s) => ({
name: s.name,
value: s.id,
description: s.description,
})),
});
await this.scenarioService.applyScenario(scenarioId);
}
}
exports.ScenarioCommands = ScenarioCommands;