UNPKG

@eightshone/sshman

Version:
87 lines 3.6 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; import select, { Separator } from "@inquirer/select"; import colors from "yoctocolors-cjs"; import { inquirerTheme } from "../../utils/themes.js"; import title from "../../utils/title.js"; import stringPadding from "../../utils/stringPadding.js"; function mainMenu() { return __awaiter(this, arguments, void 0, function* (recentServers = []) { title(); const separatorLength = Math.floor((process.stdout.columns / 3) * 2); let options = null; const recents = recentServers.length ? recentServers.map((server, index) => ({ name: ` ${index + 1} - ${server.name}`, value: `ssh-connect#-_-#${JSON.stringify(server)}`, description: "Connect to server", })) : [ { name: " ⚠️ No recent sessions! Add a new server or connect to one and it will appear here", value: "recent-sessions", disabled: " ", }, ]; let answer = yield select({ message: "MAIN MENU", choices: [ { name: "✨ Recent sessions", value: "recent-sessions", disabled: "(select a session to connect quickly)", }, ...recents, new Separator(colors.dim(stringPadding("-", separatorLength % 2 === 0 ? separatorLength + 1 : separatorLength, "start", "-_"))), { name: "💻 New connection", value: "ssh-new", description: "Connect to a new session", }, { name: "🗃️ Saved servers", value: "ssh-list", description: "See all sessions", }, { name: "⚙️ Settings", value: "settings", description: "User settings", }, { name: "📰 Logs [Exiperimental]", value: "logs", description: "Connection logs", }, { name: "📖 Manual", value: "manual", description: "Help manual", }, { name: "🚪 Quit", value: "exit", description: "Quit sshman", }, ], theme: inquirerTheme, pageSize: 12, }); if (answer !== "exit") { console.clear(); } if (answer.startsWith("ssh-connect")) { [answer, ...options] = answer.split("#-_-#"); } return [answer, options]; }); } export default mainMenu; //# sourceMappingURL=mainMenu.js.map