@eightshone/sshman
Version:
A simple cli ssh manager
87 lines • 3.6 kB
JavaScript
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