From 486220f995aa776a952df887ad35412def4e8f93 Mon Sep 17 00:00:00 2001 From: Prathik Shetty Date: Sun, 10 Aug 2025 15:34:35 +0530 Subject: [PATCH 1/2] fix: Remove dist build artifacts --- dist/commands/agent.d.ts | 40 --- dist/commands/agent.js | 321 ------------------- dist/commands/agent.js.map | 1 - dist/commands/connection.d.ts | 56 ---- dist/commands/connection.js | 383 ----------------------- dist/commands/connection.js.map | 1 - dist/commands/init.d.ts | 17 - dist/commands/init.js | 127 -------- dist/commands/init.js.map | 1 - dist/commands/key-manager.d.ts | 56 ---- dist/commands/key-manager.js | 428 -------------------------- dist/commands/key-manager.js.map | 1 - dist/commands/project.d.ts | 50 --- dist/commands/project.js | 339 -------------------- dist/commands/project.js.map | 1 - dist/constants.d.ts | 30 -- dist/constants.js | 78 ----- dist/constants.js.map | 1 - dist/index.d.ts | 2 - dist/index.js | 512 ------------------------------- dist/index.js.map | 1 - dist/types/index.d.ts | 65 ---- dist/types/index.js | 3 - dist/types/index.js.map | 1 - dist/utils/config.d.ts | 65 ---- dist/utils/config.js | 444 --------------------------- dist/utils/config.js.map | 1 - dist/utils/filesystem.d.ts | 48 --- dist/utils/filesystem.js | 217 ------------- dist/utils/filesystem.js.map | 1 - dist/utils/ssh.d.ts | 117 ------- dist/utils/ssh.js | 417 ------------------------- dist/utils/ssh.js.map | 1 - dist/utils/ui.d.ts | 33 -- dist/utils/ui.js | 304 ------------------ dist/utils/ui.js.map | 1 - 36 files changed, 4164 deletions(-) delete mode 100644 dist/commands/agent.d.ts delete mode 100644 dist/commands/agent.js delete mode 100644 dist/commands/agent.js.map delete mode 100644 dist/commands/connection.d.ts delete mode 100644 dist/commands/connection.js delete mode 100644 dist/commands/connection.js.map delete mode 100644 dist/commands/init.d.ts delete mode 100644 dist/commands/init.js delete mode 100644 dist/commands/init.js.map delete mode 100644 dist/commands/key-manager.d.ts delete mode 100644 dist/commands/key-manager.js delete mode 100644 dist/commands/key-manager.js.map delete mode 100644 dist/commands/project.d.ts delete mode 100644 dist/commands/project.js delete mode 100644 dist/commands/project.js.map delete mode 100644 dist/constants.d.ts delete mode 100644 dist/constants.js delete mode 100644 dist/constants.js.map delete mode 100644 dist/index.d.ts delete mode 100755 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 dist/types/index.d.ts delete mode 100644 dist/types/index.js delete mode 100644 dist/types/index.js.map delete mode 100644 dist/utils/config.d.ts delete mode 100644 dist/utils/config.js delete mode 100644 dist/utils/config.js.map delete mode 100644 dist/utils/filesystem.d.ts delete mode 100644 dist/utils/filesystem.js delete mode 100644 dist/utils/filesystem.js.map delete mode 100644 dist/utils/ssh.d.ts delete mode 100644 dist/utils/ssh.js delete mode 100644 dist/utils/ssh.js.map delete mode 100644 dist/utils/ui.d.ts delete mode 100644 dist/utils/ui.js delete mode 100644 dist/utils/ui.js.map diff --git a/dist/commands/agent.d.ts b/dist/commands/agent.d.ts deleted file mode 100644 index 7ba1811..0000000 --- a/dist/commands/agent.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { AgentStatus, CommandOptions } from "../types"; -/** - * Start the SSH agent - */ -export declare const startSshAgent: (options: { - setEnv?: boolean; -} & CommandOptions) => Promise; -/** - * Stop the SSH agent - */ -export declare const stopSshAgent: (options?: CommandOptions) => Promise; -/** - * Get the status of the SSH agent - */ -export declare const getSshAgentStatus: (options?: CommandOptions) => Promise; -/** - * Add all project keys to the SSH agent - */ -export declare const addProjectKeysToAgent: (options: { - projectId?: string; - lifetime?: number; -} & CommandOptions) => Promise; -/** - * Remove all keys from the SSH agent - */ -export declare const removeAllKeysFromAgentCommand: (options?: CommandOptions) => Promise; -/** - * Generate an SSH agent startup script - */ -export declare const generateAgentStartupScript: (options: { - outputPath?: string; - projectId?: string; - lifetime?: number; -} & CommandOptions) => Promise; -/** - * Export agent environment variables to a file - */ -export declare const exportAgentEnvironment: (options: { - outputPath?: string; -} & CommandOptions) => Promise; diff --git a/dist/commands/agent.js b/dist/commands/agent.js deleted file mode 100644 index 4e41030..0000000 --- a/dist/commands/agent.js +++ /dev/null @@ -1,321 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || (function () { - var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function (o) { - var ar = []; - for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); - }; - return function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - __setModuleDefault(result, mod); - return result; - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -exports.exportAgentEnvironment = exports.generateAgentStartupScript = exports.removeAllKeysFromAgentCommand = exports.addProjectKeysToAgent = exports.getSshAgentStatus = exports.stopSshAgent = exports.startSshAgent = void 0; -const ssh_1 = require("../utils/ssh"); -const config_1 = require("../utils/config"); -const ui_1 = require("../utils/ui"); -const fs = __importStar(require("fs-extra")); -const constants_1 = require("../constants"); -/** - * Start the SSH agent - */ -const startSshAgent = async (options) => { - try { - // Check if agent is already running - const status = await (0, ssh_1.getAgentStatus)(); - if (status.running) { - ui_1.log.info("SSH agent is already running"); - ui_1.log.info(`SSH_AUTH_SOCK=${status.socket}`); - ui_1.log.info(`SSH_AGENT_PID=${status.pid}`); - return; - } - // Show a spinner while starting the agent - const spinner = (0, ui_1.createSpinner)("Starting SSH agent..."); - spinner.start(); - // Start the agent - const { agentPid, sshAuthSock } = await (0, ssh_1.startAgent)(); - spinner.succeed("SSH agent started successfully"); - // Show agent details - (0, ui_1.renderBox)((0, ui_1.formatKeyValueList)({ - SSH_AUTH_SOCK: sshAuthSock, - SSH_AGENT_PID: agentPid, - }), "SSH Agent Started", "green"); - // Print commands to set environment variables if requested - if (options.setEnv) { - ui_1.log.info("Run the following commands to set the environment variables:"); - ui_1.log.info(`export SSH_AUTH_SOCK=${sshAuthSock}`); - ui_1.log.info(`export SSH_AGENT_PID=${agentPid}`); - } - } - catch (error) { - ui_1.log.error(`Failed to start SSH agent: ${error.message}`); - throw error; - } -}; -exports.startSshAgent = startSshAgent; -/** - * Stop the SSH agent - */ -const stopSshAgent = async (options = {}) => { - try { - // Check if agent is running - const status = await (0, ssh_1.getAgentStatus)(); - if (!status.running) { - ui_1.log.info("SSH agent is not running"); - return; - } - // Confirm stopping if not in JSON mode - if (!options.json) { - const confirmed = await ui_1.prompt.confirm("Are you sure you want to stop the SSH agent? All loaded keys will be unloaded.", false); - if (!confirmed) { - ui_1.log.info("Operation cancelled."); - return; - } - } - // Show a spinner while stopping the agent - const spinner = (0, ui_1.createSpinner)("Stopping SSH agent..."); - spinner.start(); - // Stop the agent - await (0, ssh_1.stopAgent)(); - spinner.succeed("SSH agent stopped successfully"); - } - catch (error) { - ui_1.log.error(`Failed to stop SSH agent: ${error.message}`); - throw error; - } -}; -exports.stopSshAgent = stopSshAgent; -/** - * Get the status of the SSH agent - */ -const getSshAgentStatus = async (options = {}) => { - try { - const status = await (0, ssh_1.getAgentStatus)(); - if (!options.json) { - if (status.running) { - (0, ui_1.renderBox)((0, ui_1.formatKeyValueList)({ - Status: "Running", - SSH_AUTH_SOCK: status.socket, - SSH_AGENT_PID: status.pid, - "Loaded Keys": status.keys?.length || 0, - }), "SSH Agent Status", "blue"); - // Show detailed key information if there are any keys - if (status.keys && status.keys.length > 0) { - ui_1.log.info("Loaded Keys:"); - status.keys.forEach((key, index) => { - ui_1.log.info(` ${index + 1}. ${key.fingerprint} (${key.type}) ${key.comment || ""}`); - }); - } - } - else { - (0, ui_1.renderBox)((0, ui_1.formatKeyValueList)({ - Status: "Not Running", - }), "SSH Agent Status", "yellow"); - } - } - return status; - } - catch (error) { - ui_1.log.error(`Failed to get SSH agent status: ${error.message}`); - throw error; - } -}; -exports.getSshAgentStatus = getSshAgentStatus; -/** - * Add all project keys to the SSH agent - */ -const addProjectKeysToAgent = async (options) => { - try { - // Get active project if not specified - const projectId = options.projectId || (await (0, config_1.getActiveProject)()); - // Load the project - const project = await (0, config_1.loadProject)(projectId); - // Check if there are any keys - if (project.keys.length === 0) { - ui_1.log.info(`No SSH keys found for project ${projectId}.`); - return; - } - // Check if agent is running, start it if not - const status = await (0, ssh_1.getAgentStatus)(); - if (!status.running) { - ui_1.log.info("SSH agent is not running. Starting..."); - await (0, exports.startSshAgent)(options); - } - // Show a spinner while adding keys - const spinner = (0, ui_1.createSpinner)(`Adding ${project.keys.length} keys to SSH agent...`); - spinner.start(); - // Add each key to the agent - const lifetime = options.lifetime || constants_1.DEFAULT_AGENT_TIMEOUT; - let addedCount = 0; - for (const key of project.keys) { - try { - // Check if the key file exists - if (await fs.pathExists(key.path)) { - await (0, ssh_1.addKeyToAgent)(key.path, { lifetime }); - addedCount++; - // Update the key's last used timestamp - key.lastUsed = new Date().toISOString(); - } - else { - ui_1.log.warn(`Key file not found: ${key.path}`); - } - } - catch (error) { - ui_1.log.warn(`Failed to add key ${key.name}: ${error.message}`); - } - } - // Save the project with updated last used timestamps - if (addedCount > 0) { - await (0, config_1.loadProject)(projectId); - } - spinner.succeed(`Added ${addedCount} keys to SSH agent`); - } - catch (error) { - ui_1.log.error(`Failed to add project keys to agent: ${error.message}`); - throw error; - } -}; -exports.addProjectKeysToAgent = addProjectKeysToAgent; -/** - * Remove all keys from the SSH agent - */ -const removeAllKeysFromAgentCommand = async (options = {}) => { - try { - // Check if agent is running - const status = await (0, ssh_1.getAgentStatus)(); - if (!status.running) { - ui_1.log.info("SSH agent is not running"); - return; - } - // Check if there are any keys - if (!status.keys || status.keys.length === 0) { - ui_1.log.info("No keys are loaded in the SSH agent"); - return; - } - // Confirm removal if not in JSON mode - if (!options.json) { - const confirmed = await ui_1.prompt.confirm(`Are you sure you want to remove all ${status.keys.length} keys from the SSH agent?`, false); - if (!confirmed) { - ui_1.log.info("Operation cancelled."); - return; - } - } - // Show a spinner while removing keys - const spinner = (0, ui_1.createSpinner)("Removing all keys from SSH agent..."); - spinner.start(); - // Remove all keys - await (0, ssh_1.removeAllKeysFromAgent)(); - spinner.succeed("All keys removed from SSH agent"); - } - catch (error) { - ui_1.log.error(`Failed to remove keys from agent: ${error.message}`); - throw error; - } -}; -exports.removeAllKeysFromAgentCommand = removeAllKeysFromAgentCommand; -/** - * Generate an SSH agent startup script - */ -const generateAgentStartupScript = async (options) => { - try { - // Get active project if not specified - const projectId = options.projectId || (await (0, config_1.getActiveProject)()); - // Default output path - const outputPath = options.outputPath || `${process.env.HOME}/.ssh-manager-agent.sh`; - // Create the script content - const scriptContent = `#!/bin/bash - # SSH Agent startup script generated by ssh-manager - # Project: ${projectId} - # Generated: ${new Date().toISOString()} - - # Start the SSH agent if not already running - if [ -z "$SSH_AUTH_SOCK" ]; then - echo "Starting SSH agent..." - eval "$(ssh-agent -s)" - fi - - # Add keys to the agent - ${options.lifetime - ? `# Keys will expire after ${options.lifetime} seconds` - : "# Keys will not expire"} - SSH_MANAGER_DIR="${process.env.HOME}/.ssh-manager" - - # Check if the ssh-manager CLI is available - if command -v ssh-manager &> /dev/null; then - echo "Adding keys from project ${projectId}..." - ssh-manager agent add-project-keys --project ${projectId} ${options.lifetime ? `--lifetime ${options.lifetime}` : ""} - else - echo "ssh-manager CLI not found. You need to install it to use this script." - fi - - echo "SSH agent ready with keys from project ${projectId}" - `; - // Write the script to file - await fs.writeFile(outputPath, scriptContent); - await fs.chmod(outputPath, 0o755); - ui_1.log.success(`SSH agent startup script generated: ${outputPath}`); - ui_1.log.info("To use this script:"); - ui_1.log.info(` 1. Add "source ${outputPath}" to your ~/.bashrc or ~/.zshrc`); - ui_1.log.info(" 2. Restart your shell or run the script manually"); - return outputPath; - } - catch (error) { - ui_1.log.error(`Failed to generate agent startup script: ${error.message}`); - throw error; - } -}; -exports.generateAgentStartupScript = generateAgentStartupScript; -/** - * Export agent environment variables to a file - */ -const exportAgentEnvironment = async (options) => { - try { - // Check if agent is running - const status = await (0, ssh_1.getAgentStatus)(); - if (!status.running) { - throw new Error("SSH agent is not running"); - } - // Default output path - const outputPath = options.outputPath || `${process.env.HOME}/.ssh-agent-env`; - // Create the environment file content - const envContent = `# SSH Agent environment variables exported by ssh-manager - # Generated: ${new Date().toISOString()} - export SSH_AUTH_SOCK=${status.socket} - export SSH_AGENT_PID=${status.pid} - `; - // Write the environment file - await fs.writeFile(outputPath, envContent); - ui_1.log.success(`SSH agent environment exported: ${outputPath}`); - ui_1.log.info("To use these environment variables:"); - ui_1.log.info(` source ${outputPath}`); - } - catch (error) { - ui_1.log.error(`Failed to export agent environment: ${error.message}`); - throw error; - } -}; -exports.exportAgentEnvironment = exportAgentEnvironment; -//# sourceMappingURL=agent.js.map \ No newline at end of file diff --git a/dist/commands/agent.js.map b/dist/commands/agent.js.map deleted file mode 100644 index 2a5babb..0000000 --- a/dist/commands/agent.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/commands/connection.d.ts b/dist/commands/connection.d.ts deleted file mode 100644 index 4eb70b9..0000000 --- a/dist/commands/connection.d.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { ServerConfig, CommandOptions } from "../types"; -/** - * Add a server to a project - */ -export declare const addServer: (options: { - projectId?: string; - name: string; - hostname: string; - port?: number; - username: string; - keyId?: string; - testConnection?: boolean; -} & CommandOptions) => Promise; -/** - * List servers in a project - */ -export declare const listServers: (options: { - projectId?: string; -} & CommandOptions) => Promise; -/** - * Delete a server from a project - */ -export declare const deleteServer: (serverId: string, options: { - projectId?: string; -} & CommandOptions) => Promise; -/** - * Connect to a server - */ -export declare const connectToServerCommand: (serverNameOrId: string, options: { - projectId?: string; - command?: string; -} & CommandOptions) => Promise; -/** - * Create an SSH tunnel - */ -export declare const createTunnel: (serverNameOrId: string, options: { - projectId?: string; - localPort?: number; - remoteHost: string; - remotePort: number; -} & CommandOptions) => Promise; -/** - * Open an SSH session using the system's ssh command - */ -export declare const openSshSession: (serverNameOrId: string, options: { - projectId?: string; - command?: string; -} & CommandOptions) => Promise; -/** - * Generate an SSH command for a server - */ -export declare const generateSshCommand: (serverNameOrId: string, options: { - projectId?: string; - command?: string; - withKey?: boolean; -} & CommandOptions) => Promise; diff --git a/dist/commands/connection.js b/dist/commands/connection.js deleted file mode 100644 index 7553880..0000000 --- a/dist/commands/connection.js +++ /dev/null @@ -1,383 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.generateSshCommand = exports.openSshSession = exports.createTunnel = exports.connectToServerCommand = exports.deleteServer = exports.listServers = exports.addServer = void 0; -const uuid_1 = require("uuid"); -const ssh_1 = require("../utils/ssh"); -const config_1 = require("../utils/config"); -const ui_1 = require("../utils/ui"); -const child_process_1 = require("child_process"); -const util_1 = require("util"); -const execAsync = (0, util_1.promisify)(child_process_1.exec); -/** - * Add a server to a project - */ -const addServer = async (options) => { - try { - // Get active project if not specified - const projectId = options.projectId || (await (0, config_1.getActiveProject)()); - // Load the project - const project = await (0, config_1.loadProject)(projectId); - // Check if server with the same name already exists - if (project.servers.some((s) => s.name === options.name)) { - throw new Error(`Server with name ${options.name} already exists in project ${projectId}`); - } - // Generate a unique ID for the server - const serverId = (0, uuid_1.v4)(); - // Create server config - const serverConfig = { - id: serverId, - name: options.name, - hostname: options.hostname, - port: options.port || 22, - username: options.username, - keyId: options.keyId || "", - options: { - ServerAliveInterval: "60", - ServerAliveCountMax: "120", - }, - }; - // Test connection if requested - if (options.testConnection) { - const spinner = (0, ui_1.createSpinner)(`Testing connection to ${options.hostname}...`); - spinner.start(); - // If a key ID is provided, find the corresponding key - let keyPath = ""; - if (options.keyId) { - const key = project.keys.find((k) => k.id === options.keyId); - if (key) { - keyPath = key.path; - } - } - const success = await (0, ssh_1.testConnection)(options.hostname, { - username: options.username, - port: options.port || 22, - keyPath, - }); - if (success) { - spinner.succeed(`Connection to ${options.hostname} successful`); - } - else { - spinner.fail(`Connection to ${options.hostname} failed`); - // Ask whether to continue if not in JSON mode - if (!options.json) { - const continue_ = await ui_1.prompt.confirm("Connection test failed. Add the server anyway?", false); - if (!continue_) { - ui_1.log.info("Operation cancelled."); - throw new Error("Connection test failed"); - } - } - } - } - // Add the server to the project - const updatedProject = await (0, config_1.addServerToProject)(projectId, serverConfig); - // Show success message - ui_1.log.success(`Server "${options.name}" added to project ${project.name}`); - // Show server details - if (!options.json) { - (0, ui_1.renderBox)((0, ui_1.formatKeyValueList)({ - "Server ID": serverConfig.id, - Name: serverConfig.name, - Hostname: serverConfig.hostname, - Port: serverConfig.port, - Username: serverConfig.username, - "SSH Key": serverConfig.keyId - ? updatedProject.keys.find((k) => k.id === serverConfig.keyId) - ?.name || serverConfig.keyId - : "None", - }), "Server Added", "green"); - } - // Ask if the user wants to update SSH config - if (!options.json) { - const updateConfig = await ui_1.prompt.confirm("Do you want to update your SSH config with this server?", true); - if (updateConfig) { - await (0, config_1.updateSshConfigWithProject)(projectId); - } - } - return serverConfig; - } - catch (error) { - ui_1.log.error(`Failed to add server: ${error.message}`); - throw error; - } -}; -exports.addServer = addServer; -/** - * List servers in a project - */ -const listServers = async (options) => { - try { - // Get active project if not specified - const projectId = options.projectId || (await (0, config_1.getActiveProject)()); - // Load the project - const project = await (0, config_1.loadProject)(projectId); - // Check if there are any servers - if (project.servers.length === 0) { - ui_1.log.info(`No servers found in project ${project.name}`); - return []; - } - // Show server list - if (!options.json) { - ui_1.log.info(`Servers in project ${project.name} (${projectId}):`); - const serverStrings = project.servers.map((server) => { - const key = project.keys.find((k) => k.id === server.keyId); - return (0, ui_1.formatKeyValueList)({ - "Server ID": server.id, - Name: server.name, - Hostname: server.hostname, - Port: server.port, - Username: server.username, - "SSH Key": key ? key.name : "None", - }); - }); - (0, ui_1.renderBox)(serverStrings.join("\n\n"), "Servers", "blue"); - } - return project.servers; - } - catch (error) { - ui_1.log.error(`Failed to list servers: ${error.message}`); - throw error; - } -}; -exports.listServers = listServers; -/** - * Delete a server from a project - */ -const deleteServer = async (serverId, options) => { - try { - // Get active project if not specified - const projectId = options.projectId || (await (0, config_1.getActiveProject)()); - // Load the project - const project = await (0, config_1.loadProject)(projectId); - // Find the server - const server = project.servers.find((s) => s.id === serverId); - if (!server) { - throw new Error(`Server with ID ${serverId} not found in project ${projectId}`); - } - // Confirm deletion if not in JSON mode - if (!options.json) { - const confirmed = await ui_1.prompt.confirm(`Are you sure you want to delete server "${server.name}" (${server.hostname})? This cannot be undone.`, false); - if (!confirmed) { - ui_1.log.info("Deletion cancelled."); - return; - } - } - // Show a spinner while deleting the server - const spinner = (0, ui_1.createSpinner)(`Deleting server "${server.name}"...`); - spinner.start(); - // Remove the server from the project - await (0, config_1.removeServerFromProject)(projectId, serverId); - spinner.succeed(`Server "${server.name}" deleted from project ${project.name}`); - // Ask if the user wants to update SSH config - if (!options.json) { - const updateConfig = await ui_1.prompt.confirm("Do you want to update your SSH config to remove this server?", true); - if (updateConfig) { - await (0, config_1.updateSshConfigWithProject)(projectId); - } - } - } - catch (error) { - ui_1.log.error(`Failed to delete server: ${error.message}`); - throw error; - } -}; -exports.deleteServer = deleteServer; -/** - * Connect to a server - */ -const connectToServerCommand = async (serverNameOrId, options) => { - try { - // Get active project if not specified - const projectId = options.projectId || (await (0, config_1.getActiveProject)()); - // Load the project - const project = await (0, config_1.loadProject)(projectId); - // Find the server by name or ID - const server = project.servers.find((s) => s.id === serverNameOrId || s.name === serverNameOrId); - if (!server) { - throw new Error(`Server "${serverNameOrId}" not found in project ${projectId}`); - } - // Find the key for this server - const key = server.keyId - ? project.keys.find((k) => k.id === server.keyId) - : null; - // Show a spinner while connecting - const spinner = (0, ui_1.createSpinner)(`Connecting to ${server.hostname}...`); - spinner.start(); - // Connect to the server - const ssh = await (0, ssh_1.connectToServer)(server.hostname, { - username: server.username, - port: server.port, - keyPath: key?.path, - command: options.command, - }); - spinner.succeed(`Connected to ${server.hostname}`); - // Update server last used timestamp - server.lastUsed = new Date().toISOString(); - await (0, config_1.addServerToProject)(projectId, server); - // Execute any additional logic here if needed - // After a delay, close the connection - setTimeout(() => { - ssh.dispose(); - ui_1.log.info(`Disconnected from ${server.hostname}`); - }, 5000); - } - catch (error) { - ui_1.log.error(`Failed to connect to server: ${error.message}`); - throw error; - } -}; -exports.connectToServerCommand = connectToServerCommand; -/** - * Create an SSH tunnel - */ -const createTunnel = async (serverNameOrId, options) => { - try { - // Get active project if not specified - const projectId = options.projectId || (await (0, config_1.getActiveProject)()); - // Load the project - const project = await (0, config_1.loadProject)(projectId); - // Find the server by name or ID - const server = project.servers.find((s) => s.id === serverNameOrId || s.name === serverNameOrId); - if (!server) { - throw new Error(`Server "${serverNameOrId}" not found in project ${projectId}`); - } - // Find the key for this server - const key = server.keyId - ? project.keys.find((k) => k.id === server.keyId) - : null; - // Generate a random local port if not specified - const localPort = options.localPort || (0, ssh_1.generateRandomPort)(); - // Show a spinner while creating the tunnel - const spinner = (0, ui_1.createSpinner)(`Creating SSH tunnel: localhost:${localPort} -> ${options.remoteHost}:${options.remotePort} via ${server.hostname}...`); - spinner.start(); - // Create the tunnel - const tunnel = await (0, ssh_1.createSshTunnel)({ - localPort, - remoteHost: options.remoteHost, - remotePort: options.remotePort, - sshHost: server.hostname, - sshPort: server.port, - sshUser: server.username, - keyPath: key?.path, - }); - spinner.succeed(`SSH tunnel created: localhost:${localPort} -> ${options.remoteHost}:${options.remotePort} via ${server.hostname}`); - // Notify the user - (0, ui_1.notify)("SSH Tunnel Created", `Tunnel: localhost:${localPort} -> ${options.remoteHost}:${options.remotePort}`, "success"); - // Keep the process running - ui_1.log.info("Press Ctrl+C to close the tunnel"); - // Handle process termination - process.on("SIGINT", () => { - ui_1.log.info("Closing SSH tunnel..."); - (0, ssh_1.closeSshTunnel)(tunnel.process); - process.exit(0); - }); - } - catch (error) { - ui_1.log.error(`Failed to create SSH tunnel: ${error.message}`); - throw error; - } -}; -exports.createTunnel = createTunnel; -/** - * Open an SSH session using the system's ssh command - */ -const openSshSession = async (serverNameOrId, options) => { - try { - // Get active project if not specified - const projectId = options.projectId || (await (0, config_1.getActiveProject)()); - // Load the project - const project = await (0, config_1.loadProject)(projectId); - // Find the server by name or ID - const server = project.servers.find((s) => s.id === serverNameOrId || s.name === serverNameOrId); - if (!server) { - throw new Error(`Server "${serverNameOrId}" not found in project ${projectId}`); - } - // Find the key for this server - const key = server.keyId - ? project.keys.find((k) => k.id === server.keyId) - : null; - // Build the SSH command - let command = `ssh ${server.username}@${server.hostname}`; - if (server.port !== 22) { - command += ` -p ${server.port}`; - } - if (key) { - command += ` -i "${key.path}"`; - } - if (options.command) { - command += ` "${options.command}"`; - } - // Show the command being executed - ui_1.log.info(`Executing: ${command}`); - // Update server's lastUsed timestamp in the project BEFORE opening the connection - const serverIndex = project.servers.findIndex((s) => s.id === server.id); - if (serverIndex !== -1) { - project.servers[serverIndex].lastUsed = new Date().toISOString(); - // Save the updated project - await (0, config_1.saveProject)(project); - } - // Use a more direct approach - execute the command via a shell - const { execSync } = require("child_process"); - try { - // This will take over the terminal completely and block until the SSH session ends - execSync(command, { - stdio: "inherit", - shell: true, - encoding: "utf-8", - }); - } - catch (error) { - // SSH returns non-zero exit codes sometimes even on successful sessions - // We can typically ignore these errors - if (error.status !== 0 && error.status !== 255) { - ui_1.log.warn(`SSH process exited with code ${error.status}`); - } - } - } - catch (error) { - ui_1.log.error(`Failed to open SSH session: ${error.message}`); - throw error; - } -}; -exports.openSshSession = openSshSession; -/** - * Generate an SSH command for a server - */ -const generateSshCommand = async (serverNameOrId, options) => { - try { - // Get active project if not specified - const projectId = options.projectId || (await (0, config_1.getActiveProject)()); - // Load the project - const project = await (0, config_1.loadProject)(projectId); - // Find the server by name or ID - const server = project.servers.find((s) => s.id === serverNameOrId || s.name === serverNameOrId); - if (!server) { - throw new Error(`Server "${serverNameOrId}" not found in project ${projectId}`); - } - // Find the key for this server - const key = server.keyId && options.withKey - ? project.keys.find((k) => k.id === server.keyId) - : null; - // Build the SSH command - let command = `ssh ${server.username}@${server.hostname}`; - if (server.port !== 22) { - command += ` -p ${server.port}`; - } - if (key) { - command += ` -i "${key.path}"`; - } - if (options.command) { - command += ` "${options.command}"`; - } - // Show the command - if (!options.json) { - (0, ui_1.renderBox)(command, "SSH Command", "green"); - } - return command; - } - catch (error) { - ui_1.log.error(`Failed to generate SSH command: ${error.message}`); - throw error; - } -}; -exports.generateSshCommand = generateSshCommand; -//# sourceMappingURL=connection.js.map \ No newline at end of file diff --git a/dist/commands/connection.js.map b/dist/commands/connection.js.map deleted file mode 100644 index ea16366..0000000 --- a/dist/commands/connection.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/commands/connection.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/commands/init.d.ts b/dist/commands/init.d.ts deleted file mode 100644 index a249b98..0000000 --- a/dist/commands/init.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { CommandOptions } from "../types"; -/** - * Initialize the application - */ -export declare const initializeApplication: (options: { - force?: boolean; - projectName?: string; - skipIntro?: boolean; -} & CommandOptions) => Promise; -/** - * Check if the application is already initialized - */ -export declare const isInitialized: () => Promise; -/** - * Show application status - */ -export declare const showStatus: (options?: CommandOptions) => Promise; diff --git a/dist/commands/init.js b/dist/commands/init.js deleted file mode 100644 index a6bdee2..0000000 --- a/dist/commands/init.js +++ /dev/null @@ -1,127 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.showStatus = exports.isInitialized = exports.initializeApplication = void 0; -const constants_1 = require("../constants"); -const config_1 = require("../utils/config"); -const filesystem_1 = require("../utils/filesystem"); -const ui_1 = require("../utils/ui"); -/** - * Initialize the application - */ -const initializeApplication = async (options) => { - try { - // Show app title - if (!options.skipIntro) { - (0, ui_1.renderTitle)(); - } - // Show a welcome message - if (!options.skipIntro && !options.json) { - ui_1.log.info(`Welcome to ${constants_1.APP_NAME} v${constants_1.APP_VERSION}!`); - ui_1.log.info("This wizard will help you set up your SSH key management environment."); - console.log(""); - } - // Check if force flag is set or confirm initialization - const shouldInitialize = options.force || - (!options.json && - (await ui_1.prompt.confirm("This will initialize the application and create the necessary directories. Continue?", true))); - if (!shouldInitialize) { - ui_1.log.info("Initialization cancelled."); - return; - } - // Show a spinner while initializing - const spinner = (0, ui_1.createSpinner)("Initializing application..."); - spinner.start(); - // Create required directories - await Promise.all([ - (0, filesystem_1.ensureDirectory)(constants_1.BASE_DIR), - (0, filesystem_1.ensureDirectory)(constants_1.CONFIG_DIR), - (0, filesystem_1.ensureDirectory)(constants_1.KEYS_DIR), - (0, filesystem_1.ensureDirectory)(constants_1.PROJECTS_DIR), - (0, filesystem_1.ensureDirectory)(constants_1.LOGS_DIR), - ]); - // Initialize the application - await (0, config_1.initializeApp)(options.force); - spinner.succeed("Application initialized successfully"); - // Create a project if name is provided or prompt for one - let projectName = options.projectName; - if (!projectName && !options.json) { - projectName = await ui_1.prompt.input("Enter a name for your first project:", "default"); - } - if (projectName && projectName !== constants_1.DEFAULT_PROJECT) { - const projectSpinner = (0, ui_1.createSpinner)(`Creating project "${projectName}"...`); - projectSpinner.start(); - // Create the project - const project = await (0, config_1.createProject)(projectName); - // Set as active project - await (0, config_1.setActiveProject)(project.id); - projectSpinner.succeed(`Project "${projectName}" created and set as active`); - } - // Show summary of the initialization - if (!options.json) { - (0, ui_1.renderBox)((0, ui_1.formatKeyValueList)({ - Application: `${constants_1.APP_NAME} v${constants_1.APP_VERSION}`, - "Base Directory": constants_1.BASE_DIR, - "Config Directory": constants_1.CONFIG_DIR, - "Keys Directory": constants_1.KEYS_DIR, - "Projects Directory": constants_1.PROJECTS_DIR, - "Active Project": projectName || constants_1.DEFAULT_PROJECT, - }), "Initialization Complete", "green"); - // Show next steps - ui_1.log.info("\nNext Steps:"); - ui_1.log.info("1. Generate SSH keys using the `key generate` command"); - ui_1.log.info("2. Add servers using the `server add` command"); - ui_1.log.info("3. Connect to your servers using the `connect` command"); - ui_1.log.info("\nFor more information, run `ssh-manager --help`"); - } - } - catch (error) { - ui_1.log.error(`Failed to initialize application: ${error.message}`); - throw error; - } -}; -exports.initializeApplication = initializeApplication; -/** - * Check if the application is already initialized - */ -const isInitialized = async () => { - try { - await (0, config_1.loadConfig)(); - return true; - } - catch { - return false; - } -}; -exports.isInitialized = isInitialized; -/** - * Show application status - */ -const showStatus = async (options = {}) => { - try { - // Check if the application is initialized - const initialized = await (0, exports.isInitialized)(); - if (!initialized) { - ui_1.log.warn("Application is not initialized. Run `ssh-manager init` to set up."); - return; - } - // Load configuration - const config = await (0, config_1.loadConfig)(); - // Show application status - if (!options.json) { - (0, ui_1.renderBox)((0, ui_1.formatKeyValueList)({ - Application: `${constants_1.APP_NAME} v${constants_1.APP_VERSION}`, - Status: "Initialized", - "Base Directory": constants_1.BASE_DIR, - "Default Project": config.defaultProject, - "Active Project": config.activeProject || config.defaultProject, - Projects: config.projects.length, - }), "Application Status", "blue"); - } - } - catch (error) { - ui_1.log.error(`Failed to show application status: ${error.message}`); - throw error; - } -}; -exports.showStatus = showStatus; -//# sourceMappingURL=init.js.map \ No newline at end of file diff --git a/dist/commands/init.js.map b/dist/commands/init.js.map deleted file mode 100644 index 7e9c541..0000000 --- a/dist/commands/init.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;AAGA,4CASsB;AACtB,4CAMyB;AACzB,oDAAsD;AACtD,oCAOqB;AAErB;;GAEG;AACI,MAAM,qBAAqB,GAAG,KAAK,EACxC,OAIkB,EACH,EAAE;IACjB,IAAI,CAAC;QACH,iBAAiB;QACjB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACvB,IAAA,gBAAW,GAAE,CAAC;QAChB,CAAC;QAED,yBAAyB;QACzB,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACxC,QAAG,CAAC,IAAI,CAAC,cAAc,oBAAQ,KAAK,uBAAW,GAAG,CAAC,CAAC;YACpD,QAAG,CAAC,IAAI,CACN,uEAAuE,CACxE,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAED,uDAAuD;QACvD,MAAM,gBAAgB,GACpB,OAAO,CAAC,KAAK;YACb,CAAC,CAAC,OAAO,CAAC,IAAI;gBACZ,CAAC,MAAM,WAAM,CAAC,OAAO,CACnB,sFAAsF,EACtF,IAAI,CACL,CAAC,CAAC,CAAC;QAER,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,QAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YACtC,OAAO;QACT,CAAC;QAED,oCAAoC;QACpC,MAAM,OAAO,GAAG,IAAA,kBAAa,EAAC,6BAA6B,CAAC,CAAC;QAC7D,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,8BAA8B;QAC9B,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAA,4BAAe,EAAC,oBAAQ,CAAC;YACzB,IAAA,4BAAe,EAAC,sBAAU,CAAC;YAC3B,IAAA,4BAAe,EAAC,oBAAQ,CAAC;YACzB,IAAA,4BAAe,EAAC,wBAAY,CAAC;YAC7B,IAAA,4BAAe,EAAC,oBAAQ,CAAC;SAC1B,CAAC,CAAC;QAEH,6BAA6B;QAC7B,MAAM,IAAA,sBAAa,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnC,OAAO,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;QAExD,yDAAyD;QACzD,IAAI,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QAEtC,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClC,WAAW,GAAG,MAAM,WAAM,CAAC,KAAK,CAC9B,sCAAsC,EACtC,SAAS,CACV,CAAC;QACJ,CAAC;QAED,IAAI,WAAW,IAAI,WAAW,KAAK,2BAAe,EAAE,CAAC;YACnD,MAAM,cAAc,GAAG,IAAA,kBAAa,EAClC,qBAAqB,WAAW,MAAM,CACvC,CAAC;YACF,cAAc,CAAC,KAAK,EAAE,CAAC;YAEvB,qBAAqB;YACrB,MAAM,OAAO,GAAG,MAAM,IAAA,sBAAa,EAAC,WAAW,CAAC,CAAC;YAEjD,wBAAwB;YACxB,MAAM,IAAA,yBAAgB,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAEnC,cAAc,CAAC,OAAO,CACpB,YAAY,WAAW,6BAA6B,CACrD,CAAC;QACJ,CAAC;QAED,qCAAqC;QACrC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,IAAA,cAAS,EACP,IAAA,uBAAkB,EAAC;gBACjB,WAAW,EAAE,GAAG,oBAAQ,KAAK,uBAAW,EAAE;gBAC1C,gBAAgB,EAAE,oBAAQ;gBAC1B,kBAAkB,EAAE,sBAAU;gBAC9B,gBAAgB,EAAE,oBAAQ;gBAC1B,oBAAoB,EAAE,wBAAY;gBAClC,gBAAgB,EAAE,WAAW,IAAI,2BAAe;aACjD,CAAC,EACF,yBAAyB,EACzB,OAAO,CACR,CAAC;YAEF,kBAAkB;YAClB,QAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC1B,QAAG,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;YAClE,QAAG,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;YAC1D,QAAG,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;YACnE,QAAG,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,QAAG,CAAC,KAAK,CAAC,qCAAqC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAChE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AA3GW,QAAA,qBAAqB,yBA2GhC;AAEF;;GAEG;AACI,MAAM,aAAa,GAAG,KAAK,IAAsB,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,IAAA,mBAAU,GAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAPW,QAAA,aAAa,iBAOxB;AAEF;;GAEG;AACI,MAAM,UAAU,GAAG,KAAK,EAC7B,UAA0B,EAAE,EACb,EAAE;IACjB,IAAI,CAAC;QACH,0CAA0C;QAC1C,MAAM,WAAW,GAAG,MAAM,IAAA,qBAAa,GAAE,CAAC;QAE1C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,QAAG,CAAC,IAAI,CACN,mEAAmE,CACpE,CAAC;YACF,OAAO;QACT,CAAC;QAED,qBAAqB;QACrB,MAAM,MAAM,GAAG,MAAM,IAAA,mBAAU,GAAE,CAAC;QAElC,0BAA0B;QAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,IAAA,cAAS,EACP,IAAA,uBAAkB,EAAC;gBACjB,WAAW,EAAE,GAAG,oBAAQ,KAAK,uBAAW,EAAE;gBAC1C,MAAM,EAAE,aAAa;gBACrB,gBAAgB,EAAE,oBAAQ;gBAC1B,iBAAiB,EAAE,MAAM,CAAC,cAAc;gBACxC,gBAAgB,EAAE,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,cAAc;gBAC/D,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;aACjC,CAAC,EACF,oBAAoB,EACpB,MAAM,CACP,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,QAAG,CAAC,KAAK,CAAC,sCAAsC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AApCW,QAAA,UAAU,cAoCrB"} \ No newline at end of file diff --git a/dist/commands/key-manager.d.ts b/dist/commands/key-manager.d.ts deleted file mode 100644 index 3415d6e..0000000 --- a/dist/commands/key-manager.d.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { SSHKey, KeyType, CommandOptions } from "../types"; -/** - * Generate a new SSH key - */ -export declare const generateSshKey: (options: { - projectId?: string; - name?: string; - type?: KeyType; - bits?: number; - kdfRounds?: number; - comment?: string; - passphrase?: string; - force?: boolean; -} & CommandOptions) => Promise; -/** - * List all SSH keys for a project - */ -export declare const listSshKeys: (options: { - projectId?: string; -} & CommandOptions) => Promise; -/** - * Delete an SSH key - */ -export declare const deleteSshKey: (keyId: string, options: { - projectId?: string; - removeFiles?: boolean; -} & CommandOptions) => Promise; -/** - * Get an SSH key by ID - */ -export declare const getSshKey: (keyId: string, options: { - projectId?: string; -} & CommandOptions) => Promise; -/** - * Add an SSH key to the agent - */ -export declare const addKeyToAgentCommand: (keyId: string, options: { - projectId?: string; - lifetime?: number; - passphrase?: string; -} & CommandOptions) => Promise; -/** - * Show the public key - */ -export declare const showPublicKey: (keyId: string, options: { - projectId?: string; - clipboard?: boolean; -} & CommandOptions) => Promise; -/** - * Import an existing SSH key - */ -export declare const importSshKey: (keyPath: string, options: { - projectId?: string; - name?: string; - copy?: boolean; -} & CommandOptions) => Promise; diff --git a/dist/commands/key-manager.js b/dist/commands/key-manager.js deleted file mode 100644 index 36b035f..0000000 --- a/dist/commands/key-manager.js +++ /dev/null @@ -1,428 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || (function () { - var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function (o) { - var ar = []; - for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); - }; - return function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - __setModuleDefault(result, mod); - return result; - }; -})(); -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.importSshKey = exports.showPublicKey = exports.addKeyToAgentCommand = exports.getSshKey = exports.deleteSshKey = exports.listSshKeys = exports.generateSshKey = void 0; -const path = __importStar(require("path")); -const fs = __importStar(require("fs-extra")); -const uuid_1 = require("uuid"); -const child_process_1 = require("child_process"); -const util_1 = __importDefault(require("util")); -const constants_1 = require("../constants"); -const ssh_1 = require("../utils/ssh"); -const config_1 = require("../utils/config"); -const filesystem_1 = require("../utils/filesystem"); -const ui_1 = require("../utils/ui"); -/** - * Generate a new SSH key - */ -const generateSshKey = async (options) => { - try { - // Get active project if not specified - const projectId = options.projectId || (await (0, config_1.getActiveProject)()); - // Load the project - const project = await (0, config_1.loadProject)(projectId); - // Get key details from options or prompt for them - const keyName = options.name || - (await ui_1.prompt.input("Enter a name for the key (e.g., production-server):", `${projectId}-key-${new Date().getTime()}`)); - // Generate a unique ID for the key - const keyId = (0, uuid_1.v7)(); - // Set key parameters - const keyType = options.type || constants_1.DEFAULT_KEY_TYPE; - const keyBits = options.bits || constants_1.DEFAULT_KEY_BITS; - const kdfRounds = options.kdfRounds || constants_1.DEFAULT_KDF_ROUNDS; - const comment = options.comment || `${keyName} (${projectId}) created by ssh-manager`; - // Get passphrase if not provided - let passphrase = options.passphrase; - if (!passphrase && !options.json) { - passphrase = await ui_1.prompt.password("Enter passphrase for the key (leave empty for no passphrase):"); - // Confirm passphrase if not empty - if (passphrase) { - const confirmPassphrase = await ui_1.prompt.password("Confirm passphrase:"); - if (passphrase !== confirmPassphrase) { - throw new Error("Passphrases do not match"); - } - } - } - // Create a unique file name for the key - const fileName = (0, ssh_1.generateKeyName)(keyName); - // Create directory for the project's keys - const projectKeyDir = path.join(constants_1.KEYS_DIR, projectId); - await (0, filesystem_1.ensureDirectory)(projectKeyDir); - // Path for the key - const keyPath = path.join(projectKeyDir, fileName); - // Check if the key already exists - if ((await (0, filesystem_1.fileExists)(keyPath)) && !options.force) { - throw new Error(`Key file ${keyPath} already exists. Use --force to overwrite.`); - } - // Show a spinner while generating the key - const spinner = (0, ui_1.createSpinner)("Generating SSH key..."); - spinner.start(); - // Generate the key - await (0, ssh_1.generateKey)(keyPath, { - type: keyType, - bits: keyBits, - kdfRounds, - passphrase, - comment, - }); - // Get the key's fingerprint - const fingerprint = await (0, ssh_1.getKeyFingerprint)(keyPath); - spinner.succeed("SSH key generated successfully"); - // Create the SSHKey object - const sshKey = { - id: keyId, - name: keyName, - type: keyType, - path: keyPath, - publicKeyPath: `${keyPath}.pub`, - fingerprint, - created: new Date().toISOString(), - comment, - bits: keyBits, - kdfRounds, - }; - // Add the key to the project - await (0, config_1.addKeyToProject)(projectId, sshKey); - // Show key details - (0, ui_1.renderBox)((0, ui_1.formatKeyValueList)({ - "Key ID": sshKey.id, - "Key Name": sshKey.name, - Type: sshKey.type, - Bits: sshKey.bits, - Fingerprint: sshKey.fingerprint, - Path: sshKey.path, - "Public Key": sshKey.publicKeyPath, - Created: new Date(sshKey.created).toLocaleString(), - }), "SSH Key Generated", "green"); - return sshKey; - } - catch (error) { - ui_1.log.error(`Failed to generate SSH key: ${error.message}`); - throw error; - } -}; -exports.generateSshKey = generateSshKey; -/** - * List all SSH keys for a project - */ -const listSshKeys = async (options) => { - try { - // Get active project if not specified - const projectId = options.projectId || (await (0, config_1.getActiveProject)()); - // Load the project - const project = await (0, config_1.loadProject)(projectId); - // Check if there are any keys - if (project.keys.length === 0) { - ui_1.log.info(`No SSH keys found for project ${projectId}.`); - return []; - } - // Display the keys - if (!options.json) { - ui_1.log.info(`SSH keys for project ${project.name} (${projectId}):`); - const keyStrings = project.keys.map((key, index) => { - return (0, ui_1.formatKeyValueList)({ - "Key ID": key.id, - "Key Name": key.name, - Type: key.type, - Fingerprint: key.fingerprint, - Created: new Date(key.created).toLocaleString(), - "Last Used": key.lastUsed - ? new Date(key.lastUsed).toLocaleString() - : "Never", - }); - }); - (0, ui_1.renderBox)(keyStrings.join("\n\n"), "SSH Keys", "blue"); - } - return project.keys; - } - catch (error) { - ui_1.log.error(`Failed to list SSH keys: ${error.message}`); - throw error; - } -}; -exports.listSshKeys = listSshKeys; -/** - * Delete an SSH key - */ -const deleteSshKey = async (keyId, options) => { - try { - // Get active project if not specified - const projectId = options.projectId || (await (0, config_1.getActiveProject)()); - // Load the project - const project = await (0, config_1.loadProject)(projectId); - // Find the key - const key = project.keys.find((k) => k.id === keyId); - if (!key) { - throw new Error(`Key with ID ${keyId} not found in project ${projectId}`); - } - // Confirm deletion if not in JSON mode - if (!options.json) { - const confirmed = await ui_1.prompt.confirm(`Are you sure you want to delete the key "${key.name}" (${key.fingerprint})? This cannot be undone.`, false); - if (!confirmed) { - ui_1.log.info("Deletion cancelled."); - return; - } - } - // Remove the key from the SSH agent if it's loaded - try { - await (0, ssh_1.removeKeyFromAgent)(key.path); - } - catch (error) { - // Ignore errors, the key might not be loaded - ui_1.log.debug(`Failed to remove key from agent: ${error.message}`); - } - // Remove the key files if requested - if (options.removeFiles) { - try { - await fs.unlink(key.path); - await fs.unlink(key.publicKeyPath); - ui_1.log.success(`Key files deleted: ${key.path}`); - } - catch (error) { - ui_1.log.warn(`Failed to delete key files: ${error.message}`); - } - } - // Remove the key from the project - await (0, config_1.removeKeyFromProject)(projectId, keyId); - ui_1.log.success(`Key "${key.name}" deleted from project ${project.name}`); - } - catch (error) { - ui_1.log.error(`Failed to delete SSH key: ${error.message}`); - throw error; - } -}; -exports.deleteSshKey = deleteSshKey; -/** - * Get an SSH key by ID - */ -const getSshKey = async (keyId, options) => { - try { - // Get active project if not specified - const projectId = options.projectId || (await (0, config_1.getActiveProject)()); - // Load the project - const project = await (0, config_1.loadProject)(projectId); - // Find the key - const key = project.keys.find((k) => k.id === keyId); - if (!key) { - throw new Error(`Key with ID ${keyId} not found in project ${projectId}`); - } - // Display the key details - if (!options.json) { - (0, ui_1.renderBox)((0, ui_1.formatKeyValueList)({ - "Key ID": key.id, - "Key Name": key.name, - Type: key.type, - Bits: key.bits || "Unknown", - Fingerprint: key.fingerprint, - Path: key.path, - "Public Key": key.publicKeyPath, - Created: new Date(key.created).toLocaleString(), - "Last Used": key.lastUsed - ? new Date(key.lastUsed).toLocaleString() - : "Never", - Comment: key.comment || "None", - }), `SSH Key: ${key.name}`, "blue"); - } - return key; - } - catch (error) { - ui_1.log.error(`Failed to get SSH key: ${error.message}`); - throw error; - } -}; -exports.getSshKey = getSshKey; -/** - * Add an SSH key to the agent - */ -const addKeyToAgentCommand = async (keyId, options) => { - try { - // Get active project if not specified - const projectId = options.projectId || (await (0, config_1.getActiveProject)()); - // Load the project - const project = await (0, config_1.loadProject)(projectId); - // Find the key - const key = project.keys.find((k) => k.id === keyId); - if (!key) { - throw new Error(`Key with ID ${keyId} not found in project ${projectId}`); - } - // Get passphrase if not provided - let passphrase = options.passphrase; - if (!passphrase && !options.json) { - passphrase = await ui_1.prompt.password(`Enter passphrase for key "${key.name}" (leave empty if no passphrase):`); - } - // Show a spinner while adding the key - const spinner = (0, ui_1.createSpinner)(`Adding key "${key.name}" to SSH agent...`); - spinner.start(); - // Add the key to the agent - await (0, ssh_1.addKeyToAgent)(key.path, { - lifetime: options.lifetime, - passphrase, - }); - spinner.succeed(`Key "${key.name}" added to SSH agent`); - // Update the key's last used timestamp - key.lastUsed = new Date().toISOString(); - await (0, config_1.addKeyToProject)(projectId, key); - } - catch (error) { - ui_1.log.error(`Failed to add key to agent: ${error.message}`); - throw error; - } -}; -exports.addKeyToAgentCommand = addKeyToAgentCommand; -/** - * Show the public key - */ -const showPublicKey = async (keyId, options) => { - try { - // Get active project if not specified - const projectId = options.projectId || (await (0, config_1.getActiveProject)()); - // Load the project - const project = await (0, config_1.loadProject)(projectId); - // Find the key - const key = project.keys.find((k) => k.id === keyId); - if (!key) { - throw new Error(`Key with ID ${keyId} not found in project ${projectId}`); - } - // Read the public key - const publicKey = await fs.readFile(key.publicKeyPath, "utf8"); - // Copy to clipboard if requested - if (options.clipboard) { - try { - await fs.writeFile("/tmp/ssh-key-temp", publicKey); - await fs.chmod("/tmp/ssh-key-temp", 0o600); - const execAsync = util_1.default.promisify(child_process_1.exec); - await execAsync("cat /tmp/ssh-key-temp | xclip -selection clipboard"); - await fs.unlink("/tmp/ssh-key-temp"); - ui_1.log.success("Public key copied to clipboard"); - } - catch (error) { - ui_1.log.warn(`Failed to copy to clipboard: ${error.message}`); - ui_1.log.info("Make sure xclip is installed: sudo apt install xclip"); - } - } - // Display the public key - if (!options.json) { - (0, ui_1.renderBox)(publicKey.trim(), `Public Key: ${key.name}`, "green"); - } - return publicKey; - } - catch (error) { - ui_1.log.error(`Failed to show public key: ${error.message}`); - throw error; - } -}; -exports.showPublicKey = showPublicKey; -/** - * Import an existing SSH key - */ -const importSshKey = async (keyPath, options) => { - try { - // Get active project if not specified - const projectId = options.projectId || (await (0, config_1.getActiveProject)()); - // Load the project - const project = await (0, config_1.loadProject)(projectId); - // Check if the private key exists - if (!(await (0, filesystem_1.fileExists)(keyPath))) { - throw new Error(`Key file ${keyPath} does not exist`); - } - // Check if the public key exists - const publicKeyPath = `${keyPath}.pub`; - if (!(await (0, filesystem_1.fileExists)(publicKeyPath))) { - throw new Error(`Public key file ${publicKeyPath} does not exist`); - } - // Generate a name for the key if not provided - const keyName = options.name || path.basename(keyPath); - // Generate a unique ID for the key - const keyId = (0, uuid_1.v7)(); - // Get the key's fingerprint - const fingerprint = await (0, ssh_1.getKeyFingerprint)(keyPath); - // Determine the key type - const publicKey = await fs.readFile(publicKeyPath, "utf8"); - const keyTypeMatch = publicKey.match(/^(ssh-[a-z0-9]+)/); - const keyType = (keyTypeMatch?.[1] || "unknown"); - // Create a proper destination for the key if copying - let destKeyPath = keyPath; - let destPublicKeyPath = publicKeyPath; - if (options.copy) { - // Create directory for the project's keys - const projectKeyDir = path.join(constants_1.KEYS_DIR, projectId); - await (0, filesystem_1.ensureDirectory)(projectKeyDir); - // Create a unique file name for the key - const fileName = (0, ssh_1.generateKeyName)(keyName); - // Path for the key - destKeyPath = path.join(projectKeyDir, fileName); - destPublicKeyPath = `${destKeyPath}.pub`; - // Copy the key files - await fs.copy(keyPath, destKeyPath); - await fs.copy(publicKeyPath, destPublicKeyPath); - // Set proper permissions - await fs.chmod(destKeyPath, 0o600); - await fs.chmod(destPublicKeyPath, 0o644); - ui_1.log.success(`Key files copied to ${destKeyPath}`); - } - // Create the SSHKey object - const sshKey = { - id: keyId, - name: keyName, - type: keyType, - path: destKeyPath, - publicKeyPath: destPublicKeyPath, - fingerprint, - created: new Date().toISOString(), - }; - // Add the key to the project - await (0, config_1.addKeyToProject)(projectId, sshKey); - // Show key details - (0, ui_1.renderBox)((0, ui_1.formatKeyValueList)({ - "Key ID": sshKey.id, - "Key Name": sshKey.name, - Type: sshKey.type, - Fingerprint: sshKey.fingerprint, - Path: sshKey.path, - "Public Key": sshKey.publicKeyPath, - Created: new Date(sshKey.created).toLocaleString(), - }), "SSH Key Imported", "green"); - return sshKey; - } - catch (error) { - ui_1.log.error(`Failed to import SSH key: ${error.message}`); - throw error; - } -}; -exports.importSshKey = importSshKey; -//# sourceMappingURL=key-manager.js.map \ No newline at end of file diff --git a/dist/commands/key-manager.js.map b/dist/commands/key-manager.js.map deleted file mode 100644 index b16f11e..0000000 --- a/dist/commands/key-manager.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"key-manager.js","sourceRoot":"","sources":["../../src/commands/key-manager.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/commands/project.d.ts b/dist/commands/project.d.ts deleted file mode 100644 index c38cc55..0000000 --- a/dist/commands/project.d.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { Project, CommandOptions } from "../types"; -/** - * Create a new project - */ -export declare const createNewProject: (name: string, options: { - description?: string; - activate?: boolean; -} & CommandOptions) => Promise; -/** - * List all projects - */ -export declare const listAllProjects: (options?: CommandOptions) => Promise; -/** - * Set active project - */ -export declare const setActiveProjectCommand: (projectId: string, options?: CommandOptions) => Promise; -/** - * Get project details - */ -export declare const getProjectDetails: (projectId: string, options?: CommandOptions) => Promise; -/** - * Update project details - */ -export declare const updateProject: (projectId: string, options: { - name?: string; - description?: string; -} & CommandOptions) => Promise; -/** - * Delete a project - */ -export declare const deleteProjectCommand: (projectId: string, options?: CommandOptions) => Promise; -/** - * Update SSH config with project servers - */ -export declare const updateSshConfigWithProjectCommand: (options: { - projectId?: string; -} & CommandOptions) => Promise; -/** - * Export project data - */ -export declare const exportProject: (projectId: string, options: { - outputPath?: string; - includeKeys?: boolean; -} & CommandOptions) => Promise; -/** - * Import project data - */ -export declare const importProject: (importPath: string, options: { - overwrite?: boolean; -} & CommandOptions) => Promise; diff --git a/dist/commands/project.js b/dist/commands/project.js deleted file mode 100644 index 2b48a86..0000000 --- a/dist/commands/project.js +++ /dev/null @@ -1,339 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.importProject = exports.exportProject = exports.updateSshConfigWithProjectCommand = exports.deleteProjectCommand = exports.updateProject = exports.getProjectDetails = exports.setActiveProjectCommand = exports.listAllProjects = exports.createNewProject = void 0; -const config_1 = require("../utils/config"); -const ui_1 = require("../utils/ui"); -/** - * Create a new project - */ -const createNewProject = async (name, options) => { - try { - // Show a spinner while creating the project - const spinner = (0, ui_1.createSpinner)(`Creating project "${name}"...`); - spinner.start(); - // Create the project - const project = await (0, config_1.createProject)(name, options.description); - spinner.succeed(`Project "${name}" created successfully`); - // Set as active project if requested - if (options.activate) { - await (0, config_1.setActiveProject)(project.id); - ui_1.log.success(`Project "${name}" set as active project`); - } - // Show project details - (0, ui_1.renderBox)((0, ui_1.formatKeyValueList)({ - "Project ID": project.id, - Name: project.name, - Description: project.description || "No description", - Created: new Date(project.created).toLocaleString(), - "SSH Keys": 0, - Servers: 0, - }), "Project Created", "green"); - return project; - } - catch (error) { - ui_1.log.error(`Failed to create project: ${error.message}`); - throw error; - } -}; -exports.createNewProject = createNewProject; -/** - * List all projects - */ -const listAllProjects = async (options = {}) => { - try { - // Get active project - const activeProjectId = await (0, config_1.getActiveProject)(); - // Show a spinner while listing projects - const spinner = (0, ui_1.createSpinner)("Loading projects..."); - spinner.start(); - // Get all projects - const projects = await (0, config_1.listProjects)(); - spinner.succeed(`Loaded ${projects.length} projects`); - // Show projects - if (!options.json) { - if (projects.length === 0) { - ui_1.log.info("No projects found"); - } - else { - ui_1.log.info(`Projects (active: ${activeProjectId}):`); - const projectStrings = projects.map((project) => { - const isActive = project.id === activeProjectId; - return (0, ui_1.formatKeyValueList)({ - "Project ID": project.id + (isActive ? " (active)" : ""), - Name: project.name, - Description: project.description || "No description", - Created: new Date(project.created).toLocaleString(), - "Last Used": project.lastUsed - ? new Date(project.lastUsed).toLocaleString() - : "Never", - "SSH Keys": project.keys.length, - Servers: project.servers.length, - }); - }); - (0, ui_1.renderBox)(projectStrings.join("\n\n"), "Projects", "blue"); - } - } - return projects; - } - catch (error) { - ui_1.log.error(`Failed to list projects: ${error.message}`); - throw error; - } -}; -exports.listAllProjects = listAllProjects; -/** - * Set active project - */ -const setActiveProjectCommand = async (projectId, options = {}) => { - try { - // Check if project exists - const project = await (0, config_1.loadProject)(projectId); - // Show a spinner while setting active project - const spinner = (0, ui_1.createSpinner)(`Setting project "${project.name}" as active...`); - spinner.start(); - // Set active project - await (0, config_1.setActiveProject)(projectId); - spinner.succeed(`Project "${project.name}" set as active project`); - // Update last used timestamp - project.lastUsed = new Date().toISOString(); - await (0, config_1.saveProject)(project); - } - catch (error) { - ui_1.log.error(`Failed to set active project: ${error.message}`); - throw error; - } -}; -exports.setActiveProjectCommand = setActiveProjectCommand; -/** - * Get project details - */ -const getProjectDetails = async (projectId, options = {}) => { - try { - // Load the project - const project = await (0, config_1.loadProject)(projectId); - // Show project details - if (!options.json) { - (0, ui_1.renderBox)((0, ui_1.formatKeyValueList)({ - "Project ID": project.id, - Name: project.name, - Description: project.description || "No description", - Created: new Date(project.created).toLocaleString(), - "Last Used": project.lastUsed - ? new Date(project.lastUsed).toLocaleString() - : "Never", - "SSH Keys": project.keys.length, - Servers: project.servers.length, - }), `Project: ${project.name}`, "blue"); - // Show SSH keys if any - if (project.keys.length > 0) { - ui_1.log.info("\nSSH Keys:"); - project.keys.forEach((key, index) => { - ui_1.log.info(` ${index + 1}. ${key.name} (${key.fingerprint})`); - }); - } - // Show servers if any - if (project.servers.length > 0) { - ui_1.log.info("\nServers:"); - project.servers.forEach((server, index) => { - ui_1.log.info(` ${index + 1}. ${server.name} (${server.hostname}:${server.port})`); - }); - } - } - return project; - } - catch (error) { - ui_1.log.error(`Failed to get project details: ${error.message}`); - throw error; - } -}; -exports.getProjectDetails = getProjectDetails; -/** - * Update project details - */ -const updateProject = async (projectId, options) => { - try { - // Load the project - const project = await (0, config_1.loadProject)(projectId); - // Update project details - if (options.name) { - project.name = options.name; - } - if (options.description !== undefined) { - project.description = options.description; - } - // Show a spinner while updating the project - const spinner = (0, ui_1.createSpinner)(`Updating project "${project.name}"...`); - spinner.start(); - // Save the project - await (0, config_1.saveProject)(project); - spinner.succeed(`Project "${project.name}" updated successfully`); - // Show updated project details - if (!options.json) { - (0, ui_1.renderBox)((0, ui_1.formatKeyValueList)({ - "Project ID": project.id, - Name: project.name, - Description: project.description || "No description", - Created: new Date(project.created).toLocaleString(), - "Last Used": project.lastUsed - ? new Date(project.lastUsed).toLocaleString() - : "Never", - "SSH Keys": project.keys.length, - Servers: project.servers.length, - }), "Project Updated", "green"); - } - return project; - } - catch (error) { - ui_1.log.error(`Failed to update project: ${error.message}`); - throw error; - } -}; -exports.updateProject = updateProject; -/** - * Delete a project - */ -const deleteProjectCommand = async (projectId, options = {}) => { - try { - // Load the project - const project = await (0, config_1.loadProject)(projectId); - // Confirm deletion if not in JSON mode - if (!options.json) { - const confirmed = await ui_1.prompt.confirm(`Are you sure you want to delete project "${project.name}"? This cannot be undone.`, false); - if (!confirmed) { - ui_1.log.info("Deletion cancelled."); - return; - } - } - // Get active project - const activeProjectId = await (0, config_1.getActiveProject)(); - // Check if this is the active project - if (projectId === activeProjectId) { - ui_1.log.warn("Cannot delete the active project. Set another project as active first."); - return; - } - // Show a spinner while deleting the project - const spinner = (0, ui_1.createSpinner)(`Deleting project "${project.name}"...`); - spinner.start(); - // Delete the project - await (0, config_1.deleteProject)(projectId); - spinner.succeed(`Project "${project.name}" deleted successfully`); - } - catch (error) { - ui_1.log.error(`Failed to delete project: ${error.message}`); - throw error; - } -}; -exports.deleteProjectCommand = deleteProjectCommand; -/** - * Update SSH config with project servers - */ -const updateSshConfigWithProjectCommand = async (options) => { - try { - // Get active project if not specified - const projectId = options.projectId || (await (0, config_1.getActiveProject)()); - // Load the project - const project = await (0, config_1.loadProject)(projectId); - // Check if there are any servers - if (project.servers.length === 0) { - ui_1.log.warn(`No servers found in project ${project.name}`); - return; - } - // Show a spinner while updating SSH config - const spinner = (0, ui_1.createSpinner)(`Updating SSH config with ${project.servers.length} servers from project "${project.name}"...`); - spinner.start(); - // Update SSH config - await (0, config_1.updateSshConfigWithProject)(projectId); - spinner.succeed(`SSH config updated with ${project.servers.length} servers from project "${project.name}"`); - } - catch (error) { - ui_1.log.error(`Failed to update SSH config: ${error.message}`); - throw error; - } -}; -exports.updateSshConfigWithProjectCommand = updateSshConfigWithProjectCommand; -/** - * Export project data - */ -const exportProject = async (projectId, options) => { - try { - // Load the project - const project = await (0, config_1.loadProject)(projectId); - // Create export object - const exportData = { - ...project, - exported: new Date().toISOString(), - }; - // Remove sensitive information if not including keys - if (!options.includeKeys) { - exportData.keys = exportData.keys.map((key) => ({ - ...key, - // Remove path to private key file - path: "[REDACTED]", - })); - } - // Default output path - const outputPath = options.outputPath || `${projectId}-export.json`; - // Show a spinner while exporting - const spinner = (0, ui_1.createSpinner)(`Exporting project "${project.name}" to ${outputPath}...`); - spinner.start(); - // Write export file - await require("fs-extra").writeJson(outputPath, exportData, { spaces: 2 }); - spinner.succeed(`Project "${project.name}" exported to ${outputPath}`); - // Show warning if including keys - if (options.includeKeys) { - ui_1.log.warn("The export file contains sensitive information! Keep it secure."); - } - } - catch (error) { - ui_1.log.error(`Failed to export project: ${error.message}`); - throw error; - } -}; -exports.exportProject = exportProject; -/** - * Import project data - */ -const importProject = async (importPath, options) => { - try { - // Read import file - const importData = await require("fs-extra").readJson(importPath); - // Check if project already exists - const config = await (0, config_1.loadConfig)(); - const exists = config.projects.includes(importData.id); - if (exists && !options.overwrite) { - throw new Error(`Project with ID ${importData.id} already exists. Use --overwrite to replace it.`); - } - // Show a spinner while importing - const spinner = (0, ui_1.createSpinner)(`Importing project "${importData.name}"...`); - spinner.start(); - // Update project data - const project = { - ...importData, - imported: new Date().toISOString(), - }; - // Save the project - await (0, config_1.saveProject)(project); - spinner.succeed(`Project "${project.name}" imported successfully`); - // Show imported project details - if (!options.json) { - (0, ui_1.renderBox)((0, ui_1.formatKeyValueList)({ - "Project ID": project.id, - Name: project.name, - Description: project.description || "No description", - Created: new Date(project.created).toLocaleString(), - Imported: project.imported - ? new Date(project.imported).toLocaleString() - : "N/A", - "SSH Keys": project.keys.length, - Servers: project.servers.length, - }), "Project Imported", "green"); - } - return project; - } - catch (error) { - ui_1.log.error(`Failed to import project: ${error.message}`); - throw error; - } -}; -exports.importProject = importProject; -//# sourceMappingURL=project.js.map \ No newline at end of file diff --git a/dist/commands/project.js.map b/dist/commands/project.js.map deleted file mode 100644 index b414e53..0000000 --- a/dist/commands/project.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/commands/project.ts"],"names":[],"mappings":";;;AACA,4CAUyB;AACzB,oCAMqB;AAErB;;GAEG;AACI,MAAM,gBAAgB,GAAG,KAAK,EACnC,IAAY,EACZ,OAGkB,EACA,EAAE;IACpB,IAAI,CAAC;QACH,4CAA4C;QAC5C,MAAM,OAAO,GAAG,IAAA,kBAAa,EAAC,qBAAqB,IAAI,MAAM,CAAC,CAAC;QAC/D,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,qBAAqB;QACrB,MAAM,OAAO,GAAG,MAAM,IAAA,sBAAa,EAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAE/D,OAAO,CAAC,OAAO,CAAC,YAAY,IAAI,wBAAwB,CAAC,CAAC;QAE1D,qCAAqC;QACrC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,IAAA,yBAAgB,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACnC,QAAG,CAAC,OAAO,CAAC,YAAY,IAAI,yBAAyB,CAAC,CAAC;QACzD,CAAC;QAED,uBAAuB;QACvB,IAAA,cAAS,EACP,IAAA,uBAAkB,EAAC;YACjB,YAAY,EAAE,OAAO,CAAC,EAAE;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,gBAAgB;YACpD,OAAO,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE;YACnD,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,CAAC;SACX,CAAC,EACF,iBAAiB,EACjB,OAAO,CACR,CAAC;QAEF,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,QAAG,CAAC,KAAK,CAAC,6BAA6B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AA1CW,QAAA,gBAAgB,oBA0C3B;AAEF;;GAEG;AACI,MAAM,eAAe,GAAG,KAAK,EAClC,UAA0B,EAAE,EACR,EAAE;IACtB,IAAI,CAAC;QACH,qBAAqB;QACrB,MAAM,eAAe,GAAG,MAAM,IAAA,yBAAgB,GAAE,CAAC;QAEjD,wCAAwC;QACxC,MAAM,OAAO,GAAG,IAAA,kBAAa,EAAC,qBAAqB,CAAC,CAAC;QACrD,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,mBAAmB;QACnB,MAAM,QAAQ,GAAG,MAAM,IAAA,qBAAY,GAAE,CAAC;QAEtC,OAAO,CAAC,OAAO,CAAC,UAAU,QAAQ,CAAC,MAAM,WAAW,CAAC,CAAC;QAEtD,gBAAgB;QAChB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,QAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,QAAG,CAAC,IAAI,CAAC,qBAAqB,eAAe,IAAI,CAAC,CAAC;gBAEnD,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;oBAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,EAAE,KAAK,eAAe,CAAC;oBAEhD,OAAO,IAAA,uBAAkB,EAAC;wBACxB,YAAY,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;wBACxD,IAAI,EAAE,OAAO,CAAC,IAAI;wBAClB,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,gBAAgB;wBACpD,OAAO,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE;wBACnD,WAAW,EAAE,OAAO,CAAC,QAAQ;4BAC3B,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,cAAc,EAAE;4BAC7C,CAAC,CAAC,OAAO;wBACX,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM;wBAC/B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;qBAChC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBAEH,IAAA,cAAS,EAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,QAAG,CAAC,KAAK,CAAC,4BAA4B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACvD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAhDW,QAAA,eAAe,mBAgD1B;AAEF;;GAEG;AACI,MAAM,uBAAuB,GAAG,KAAK,EAC1C,SAAiB,EACjB,UAA0B,EAAE,EACb,EAAE;IACjB,IAAI,CAAC;QACH,0BAA0B;QAC1B,MAAM,OAAO,GAAG,MAAM,IAAA,oBAAW,EAAC,SAAS,CAAC,CAAC;QAE7C,8CAA8C;QAC9C,MAAM,OAAO,GAAG,IAAA,kBAAa,EAC3B,oBAAoB,OAAO,CAAC,IAAI,gBAAgB,CACjD,CAAC;QACF,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,qBAAqB;QACrB,MAAM,IAAA,yBAAgB,EAAC,SAAS,CAAC,CAAC;QAElC,OAAO,CAAC,OAAO,CAAC,YAAY,OAAO,CAAC,IAAI,yBAAyB,CAAC,CAAC;QAEnE,6BAA6B;QAC7B,OAAO,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,IAAA,oBAAW,EAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,QAAG,CAAC,KAAK,CAAC,iCAAiC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AA1BW,QAAA,uBAAuB,2BA0BlC;AAEF;;GAEG;AACI,MAAM,iBAAiB,GAAG,KAAK,EACpC,SAAiB,EACjB,UAA0B,EAAE,EACV,EAAE;IACpB,IAAI,CAAC;QACH,mBAAmB;QACnB,MAAM,OAAO,GAAG,MAAM,IAAA,oBAAW,EAAC,SAAS,CAAC,CAAC;QAE7C,uBAAuB;QACvB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,IAAA,cAAS,EACP,IAAA,uBAAkB,EAAC;gBACjB,YAAY,EAAE,OAAO,CAAC,EAAE;gBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,gBAAgB;gBACpD,OAAO,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE;gBACnD,WAAW,EAAE,OAAO,CAAC,QAAQ;oBAC3B,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,cAAc,EAAE;oBAC7C,CAAC,CAAC,OAAO;gBACX,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM;gBAC/B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;aAChC,CAAC,EACF,YAAY,OAAO,CAAC,IAAI,EAAE,EAC1B,MAAM,CACP,CAAC;YAEF,uBAAuB;YACvB,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,QAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACxB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;oBAClC,QAAG,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC;gBAC/D,CAAC,CAAC,CAAC;YACL,CAAC;YAED,sBAAsB;YACtB,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/B,QAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACvB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBACxC,QAAG,CAAC,IAAI,CACN,KAAK,KAAK,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,GAAG,CACrE,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,QAAG,CAAC,KAAK,CAAC,kCAAkC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAlDW,QAAA,iBAAiB,qBAkD5B;AAEF;;GAEG;AACI,MAAM,aAAa,GAAG,KAAK,EAChC,SAAiB,EACjB,OAGkB,EACA,EAAE;IACpB,IAAI,CAAC;QACH,mBAAmB;QACnB,MAAM,OAAO,GAAG,MAAM,IAAA,oBAAW,EAAC,SAAS,CAAC,CAAC;QAE7C,yBAAyB;QACzB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC9B,CAAC;QAED,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QAC5C,CAAC;QAED,4CAA4C;QAC5C,MAAM,OAAO,GAAG,IAAA,kBAAa,EAAC,qBAAqB,OAAO,CAAC,IAAI,MAAM,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,mBAAmB;QACnB,MAAM,IAAA,oBAAW,EAAC,OAAO,CAAC,CAAC;QAE3B,OAAO,CAAC,OAAO,CAAC,YAAY,OAAO,CAAC,IAAI,wBAAwB,CAAC,CAAC;QAElE,+BAA+B;QAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,IAAA,cAAS,EACP,IAAA,uBAAkB,EAAC;gBACjB,YAAY,EAAE,OAAO,CAAC,EAAE;gBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,gBAAgB;gBACpD,OAAO,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE;gBACnD,WAAW,EAAE,OAAO,CAAC,QAAQ;oBAC3B,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,cAAc,EAAE;oBAC7C,CAAC,CAAC,OAAO;gBACX,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM;gBAC/B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;aAChC,CAAC,EACF,iBAAiB,EACjB,OAAO,CACR,CAAC;QACJ,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,QAAG,CAAC,KAAK,CAAC,6BAA6B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AArDW,QAAA,aAAa,iBAqDxB;AAEF;;GAEG;AACI,MAAM,oBAAoB,GAAG,KAAK,EACvC,SAAiB,EACjB,UAA0B,EAAE,EACb,EAAE;IACjB,IAAI,CAAC;QACH,mBAAmB;QACnB,MAAM,OAAO,GAAG,MAAM,IAAA,oBAAW,EAAC,SAAS,CAAC,CAAC;QAE7C,uCAAuC;QACvC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,SAAS,GAAG,MAAM,WAAM,CAAC,OAAO,CACpC,4CAA4C,OAAO,CAAC,IAAI,2BAA2B,EACnF,KAAK,CACN,CAAC;YAEF,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,QAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBAChC,OAAO;YACT,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,MAAM,eAAe,GAAG,MAAM,IAAA,yBAAgB,GAAE,CAAC;QAEjD,sCAAsC;QACtC,IAAI,SAAS,KAAK,eAAe,EAAE,CAAC;YAClC,QAAG,CAAC,IAAI,CACN,wEAAwE,CACzE,CAAC;YACF,OAAO;QACT,CAAC;QAED,4CAA4C;QAC5C,MAAM,OAAO,GAAG,IAAA,kBAAa,EAAC,qBAAqB,OAAO,CAAC,IAAI,MAAM,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,qBAAqB;QACrB,MAAM,IAAA,sBAAa,EAAC,SAAS,CAAC,CAAC;QAE/B,OAAO,CAAC,OAAO,CAAC,YAAY,OAAO,CAAC,IAAI,wBAAwB,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,QAAG,CAAC,KAAK,CAAC,6BAA6B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AA5CW,QAAA,oBAAoB,wBA4C/B;AAEF;;GAEG;AACI,MAAM,iCAAiC,GAAG,KAAK,EACpD,OAEkB,EACH,EAAE;IACjB,IAAI,CAAC;QACH,sCAAsC;QACtC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,MAAM,IAAA,yBAAgB,GAAE,CAAC,CAAC;QAElE,mBAAmB;QACnB,MAAM,OAAO,GAAG,MAAM,IAAA,oBAAW,EAAC,SAAS,CAAC,CAAC;QAE7C,iCAAiC;QACjC,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,QAAG,CAAC,IAAI,CAAC,+BAA+B,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QAED,2CAA2C;QAC3C,MAAM,OAAO,GAAG,IAAA,kBAAa,EAC3B,4BAA4B,OAAO,CAAC,OAAO,CAAC,MAAM,0BAA0B,OAAO,CAAC,IAAI,MAAM,CAC/F,CAAC;QACF,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,oBAAoB;QACpB,MAAM,IAAA,mCAA0B,EAAC,SAAS,CAAC,CAAC;QAE5C,OAAO,CAAC,OAAO,CACb,2BAA2B,OAAO,CAAC,OAAO,CAAC,MAAM,0BAA0B,OAAO,CAAC,IAAI,GAAG,CAC3F,CAAC;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,QAAG,CAAC,KAAK,CAAC,gCAAgC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAlCW,QAAA,iCAAiC,qCAkC5C;AAEF;;GAEG;AACI,MAAM,aAAa,GAAG,KAAK,EAChC,SAAiB,EACjB,OAGkB,EACH,EAAE;IACjB,IAAI,CAAC;QACH,mBAAmB;QACnB,MAAM,OAAO,GAAG,MAAM,IAAA,oBAAW,EAAC,SAAS,CAAC,CAAC;QAE7C,uBAAuB;QACvB,MAAM,UAAU,GAAG;YACjB,GAAG,OAAO;YACV,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACnC,CAAC;QAEF,qDAAqD;QACrD,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACzB,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC9C,GAAG,GAAG;gBACN,kCAAkC;gBAClC,IAAI,EAAE,YAAY;aACnB,CAAC,CAAC,CAAC;QACN,CAAC;QAED,sBAAsB;QACtB,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,GAAG,SAAS,cAAc,CAAC;QAEpE,iCAAiC;QACjC,MAAM,OAAO,GAAG,IAAA,kBAAa,EAC3B,sBAAsB,OAAO,CAAC,IAAI,QAAQ,UAAU,KAAK,CAC1D,CAAC;QACF,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,oBAAoB;QACpB,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAE3E,OAAO,CAAC,OAAO,CAAC,YAAY,OAAO,CAAC,IAAI,iBAAiB,UAAU,EAAE,CAAC,CAAC;QAEvE,iCAAiC;QACjC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,QAAG,CAAC,IAAI,CACN,iEAAiE,CAClE,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,QAAG,CAAC,KAAK,CAAC,6BAA6B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAlDW,QAAA,aAAa,iBAkDxB;AAEF;;GAEG;AACI,MAAM,aAAa,GAAG,KAAK,EAChC,UAAkB,EAClB,OAEkB,EACA,EAAE;IACpB,IAAI,CAAC;QACH,mBAAmB;QACnB,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAElE,kCAAkC;QAClC,MAAM,MAAM,GAAG,MAAM,IAAA,mBAAU,GAAE,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAEvD,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CACb,mBAAmB,UAAU,CAAC,EAAE,iDAAiD,CAClF,CAAC;QACJ,CAAC;QAED,iCAAiC;QACjC,MAAM,OAAO,GAAG,IAAA,kBAAa,EAAC,sBAAsB,UAAU,CAAC,IAAI,MAAM,CAAC,CAAC;QAC3E,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,sBAAsB;QACtB,MAAM,OAAO,GAAY;YACvB,GAAG,UAAU;YACb,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACnC,CAAC;QAEF,mBAAmB;QACnB,MAAM,IAAA,oBAAW,EAAC,OAAO,CAAC,CAAC;QAE3B,OAAO,CAAC,OAAO,CAAC,YAAY,OAAO,CAAC,IAAI,yBAAyB,CAAC,CAAC;QAEnE,gCAAgC;QAChC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,IAAA,cAAS,EACP,IAAA,uBAAkB,EAAC;gBACjB,YAAY,EAAE,OAAO,CAAC,EAAE;gBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,gBAAgB;gBACpD,OAAO,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE;gBACnD,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBACxB,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,cAAc,EAAE;oBAC7C,CAAC,CAAC,KAAK;gBACT,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM;gBAC/B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;aAChC,CAAC,EACF,kBAAkB,EAClB,OAAO,CACR,CAAC;QACJ,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,QAAG,CAAC,KAAK,CAAC,6BAA6B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AA3DW,QAAA,aAAa,iBA2DxB"} \ No newline at end of file diff --git a/dist/constants.d.ts b/dist/constants.d.ts deleted file mode 100644 index d393ceb..0000000 --- a/dist/constants.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -export declare const APP_NAME = "ssh-manager"; -export declare const APP_VERSION = "1.0.0"; -export declare const HOME_DIR: string; -export declare const BASE_DIR: string; -export declare const KEYS_DIR: string; -export declare const CONFIG_DIR: string; -export declare const LOGS_DIR: string; -export declare const PROJECTS_DIR: string; -export declare const CONFIG_FILE: string; -export declare const ACTIVE_PROJECT_FILE: string; -export declare const SSH_CONFIG_PATH: string; -export declare const SSH_CONFIG_BACKUP_PATH: string; -export declare const DEFAULT_KEY_TYPE = "ed25519"; -export declare const DEFAULT_KEY_BITS = 4096; -export declare const DEFAULT_KDF_ROUNDS = 100; -export declare const DEFAULT_PROJECT = "default"; -export declare const SERVER_ALIVE_INTERVAL = 60; -export declare const SERVER_ALIVE_COUNT_MAX = 120; -export declare const SSH_KEY_PERMISSIONS = 384; -export declare const SSH_PUB_KEY_PERMISSIONS = 420; -export declare const SSH_DIR_PERMISSIONS = 448; -export declare const DEFAULT_AGENT_TIMEOUT = 28800; -export declare const SPINNER_INTERVAL = 80; -export declare const LOG_LEVELS: { - DEBUG: string; - INFO: string; - WARN: string; - ERROR: string; - SUCCESS: string; -}; diff --git a/dist/constants.js b/dist/constants.js deleted file mode 100644 index 3e28449..0000000 --- a/dist/constants.js +++ /dev/null @@ -1,78 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || (function () { - var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function (o) { - var ar = []; - for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); - }; - return function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - __setModuleDefault(result, mod); - return result; - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LOG_LEVELS = exports.SPINNER_INTERVAL = exports.DEFAULT_AGENT_TIMEOUT = exports.SSH_DIR_PERMISSIONS = exports.SSH_PUB_KEY_PERMISSIONS = exports.SSH_KEY_PERMISSIONS = exports.SERVER_ALIVE_COUNT_MAX = exports.SERVER_ALIVE_INTERVAL = exports.DEFAULT_PROJECT = exports.DEFAULT_KDF_ROUNDS = exports.DEFAULT_KEY_BITS = exports.DEFAULT_KEY_TYPE = exports.SSH_CONFIG_BACKUP_PATH = exports.SSH_CONFIG_PATH = exports.ACTIVE_PROJECT_FILE = exports.CONFIG_FILE = exports.PROJECTS_DIR = exports.LOGS_DIR = exports.CONFIG_DIR = exports.KEYS_DIR = exports.BASE_DIR = exports.HOME_DIR = exports.APP_VERSION = exports.APP_NAME = void 0; -const os = __importStar(require("os")); -const path = __importStar(require("path")); -// App name and version -exports.APP_NAME = "ssh-manager"; -exports.APP_VERSION = "1.0.0"; -// Base directories -exports.HOME_DIR = os.homedir(); -exports.BASE_DIR = path.join(exports.HOME_DIR, ".ssh-manager"); -exports.KEYS_DIR = path.join(exports.BASE_DIR, "keys"); -exports.CONFIG_DIR = path.join(exports.BASE_DIR, "config"); -exports.LOGS_DIR = path.join(exports.BASE_DIR, "logs"); -exports.PROJECTS_DIR = path.join(exports.BASE_DIR, "projects"); -// Config files -exports.CONFIG_FILE = path.join(exports.CONFIG_DIR, "config.json"); -exports.ACTIVE_PROJECT_FILE = path.join(exports.CONFIG_DIR, "active-project"); -exports.SSH_CONFIG_PATH = path.join(exports.HOME_DIR, ".ssh", "config"); -exports.SSH_CONFIG_BACKUP_PATH = path.join(exports.HOME_DIR, ".ssh", "config.backup"); -// SSH key settings -exports.DEFAULT_KEY_TYPE = "ed25519"; -exports.DEFAULT_KEY_BITS = 4096; -exports.DEFAULT_KDF_ROUNDS = 100; -// Project config -exports.DEFAULT_PROJECT = "default"; -// Connection settings -exports.SERVER_ALIVE_INTERVAL = 60; -exports.SERVER_ALIVE_COUNT_MAX = 120; -// Security settings -exports.SSH_KEY_PERMISSIONS = 0o600; // Read/write for owner only -exports.SSH_PUB_KEY_PERMISSIONS = 0o644; // Read for everyone, write for owner -exports.SSH_DIR_PERMISSIONS = 0o700; // Read/write/execute for owner only -// Agent settings -exports.DEFAULT_AGENT_TIMEOUT = 28800; // 8 hours in seconds -// UI settings -exports.SPINNER_INTERVAL = 80; -exports.LOG_LEVELS = { - DEBUG: "debug", - INFO: "info", - WARN: "warn", - ERROR: "error", - SUCCESS: "success", -}; -//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/dist/constants.js.map b/dist/constants.js.map deleted file mode 100644 index 39755fe..0000000 --- a/dist/constants.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAE7B,uBAAuB;AACV,QAAA,QAAQ,GAAG,aAAa,CAAC;AACzB,QAAA,WAAW,GAAG,OAAO,CAAC;AAEnC,mBAAmB;AACN,QAAA,QAAQ,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;AACxB,QAAA,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAQ,EAAE,cAAc,CAAC,CAAC;AAC/C,QAAA,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAQ,EAAE,MAAM,CAAC,CAAC;AACvC,QAAA,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAQ,EAAE,QAAQ,CAAC,CAAC;AAC3C,QAAA,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAQ,EAAE,MAAM,CAAC,CAAC;AACvC,QAAA,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAQ,EAAE,UAAU,CAAC,CAAC;AAE5D,eAAe;AACF,QAAA,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAU,EAAE,aAAa,CAAC,CAAC;AACnD,QAAA,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAU,EAAE,gBAAgB,CAAC,CAAC;AAC9D,QAAA,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AACxD,QAAA,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAC7C,gBAAQ,EACR,MAAM,EACN,eAAe,CAChB,CAAC;AAEF,mBAAmB;AACN,QAAA,gBAAgB,GAAG,SAAS,CAAC;AAC7B,QAAA,gBAAgB,GAAG,IAAI,CAAC;AACxB,QAAA,kBAAkB,GAAG,GAAG,CAAC;AAEtC,iBAAiB;AACJ,QAAA,eAAe,GAAG,SAAS,CAAC;AAEzC,sBAAsB;AACT,QAAA,qBAAqB,GAAG,EAAE,CAAC;AAC3B,QAAA,sBAAsB,GAAG,GAAG,CAAC;AAE1C,oBAAoB;AACP,QAAA,mBAAmB,GAAG,KAAK,CAAC,CAAC,4BAA4B;AACzD,QAAA,uBAAuB,GAAG,KAAK,CAAC,CAAC,qCAAqC;AACtE,QAAA,mBAAmB,GAAG,KAAK,CAAC,CAAC,oCAAoC;AAE9E,iBAAiB;AACJ,QAAA,qBAAqB,GAAG,KAAK,CAAC,CAAC,qBAAqB;AAEjE,cAAc;AACD,QAAA,gBAAgB,GAAG,EAAE,CAAC;AACtB,QAAA,UAAU,GAAG;IACxB,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;CACnB,CAAC"} \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index b798801..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env node -export {}; diff --git a/dist/index.js b/dist/index.js deleted file mode 100755 index 691c95e..0000000 --- a/dist/index.js +++ /dev/null @@ -1,512 +0,0 @@ -#!/usr/bin/env node -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const commander_1 = require("commander"); -const constants_1 = require("./constants"); -const ui_1 = require("./utils/ui"); -// Import command modules -const init_1 = require("./commands/init"); -const key_manager_1 = require("./commands/key-manager"); -const project_1 = require("./commands/project"); -const agent_1 = require("./commands/agent"); -const connection_1 = require("./commands/connection"); -const config_1 = require("./utils/config"); -// Create the command line interface -const program = new commander_1.Command(); -// Configure the program -program - .name(constants_1.APP_NAME) - .description("Secure SSH key management with project-based namespaces") - .version(constants_1.APP_VERSION) - .option("-v, --verbose", "Show verbose output") - .option("-j, --json", "Output in JSON format") - .hook("preAction", async (thisCommand) => { - // Skip initialization check for init command - if (thisCommand.name() === "init") { - return; - } - // Check if the application is initialized - if (!(await (0, init_1.isInitialized)())) { - ui_1.log.error("Application is not initialized. Run `ssh-manager init` to set up."); - process.exit(1); - } -}); -// Initialize command -program - .command("init") - .description("Initialize the application") - .option("-f, --force", "Force initialization even if already initialized") - .option("-p, --project-name ", "Name for the first project") - .option("--skip-intro", "Skip the introduction") - .action(async (options) => { - try { - await (0, init_1.initializeApplication)(options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -// Status command -program - .command("status") - .description("Show application status") - .action(async (options) => { - try { - await (0, init_1.showStatus)(options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -// Key management commands -const keyCommand = program.command("key").description("Manage SSH keys"); -keyCommand - .command("generate") - .description("Generate a new SSH key") - .option("-p, --project ", "Project ID") - .option("-n, --name ", "Key name") - .option("-t, --type ", "Key type (ed25519, ecdsa, rsa)") - .option("-b, --bits ", "Key bits (for RSA)") - .option("-a, --kdf-rounds ", "KDF rounds") - .option("-c, --comment ", "Key comment") - .option("-f, --force", "Force overwrite if key already exists") - .action(async (options) => { - try { - await (0, key_manager_1.generateSshKey)(options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -keyCommand - .command("list") - .description("List SSH keys") - .option("-p, --project ", "Project ID") - .action(async (options) => { - try { - await (0, key_manager_1.listSshKeys)(options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -keyCommand - .command("delete ") - .description("Delete an SSH key") - .option("-p, --project ", "Project ID") - .option("-r, --remove-files", "Remove key files") - .action(async (keyId, options) => { - try { - await (0, key_manager_1.deleteSshKey)(keyId, options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -keyCommand - .command("show ") - .description("Show SSH key details") - .option("-p, --project ", "Project ID") - .action(async (keyId, options) => { - try { - await (0, key_manager_1.getSshKey)(keyId, options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -keyCommand - .command("public ") - .description("Show SSH public key") - .option("-p, --project ", "Project ID") - .option("-c, --clipboard", "Copy to clipboard") - .action(async (keyId, options) => { - try { - await (0, key_manager_1.showPublicKey)(keyId, options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -keyCommand - .command("add ") - .description("Add SSH key to agent") - .option("-p, --project ", "Project ID") - .option("-t, --lifetime ", "Key lifetime in seconds") - .action(async (keyId, options) => { - try { - await (0, key_manager_1.addKeyToAgentCommand)(keyId, options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -keyCommand - .command("import ") - .description("Import an existing SSH key") - .option("-p, --project ", "Project ID") - .option("-n, --name ", "Key name") - .option("-c, --copy", "Copy the key instead of referencing it") - .action(async (keyPath, options) => { - try { - await (0, key_manager_1.importSshKey)(keyPath, options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -// Project management commands -const projectCommand = program - .command("project") - .description("Manage projects"); -projectCommand - .command("create ") - .description("Create a new project") - .option("-d, --description ", "Project description") - .option("-a, --activate", "Set as active project") - .action(async (name, options) => { - try { - await (0, project_1.createNewProject)(name, options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -projectCommand - .command("list") - .description("List all projects") - .action(async (options) => { - try { - await (0, project_1.listAllProjects)(options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -projectCommand - .command("set-active ") - .description("Set active project") - .action(async (projectId, options) => { - try { - await (0, project_1.setActiveProjectCommand)(projectId, options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -projectCommand - .command("show [project-id]") - .description("Show project details") - .action(async (projectId, options) => { - try { - if (!projectId) { - // If no project ID is provided, use the active project - projectId = await (0, config_1.getActiveProject)(); - } - await (0, project_1.getProjectDetails)(projectId, options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -projectCommand - .command("update ") - .description("Update project details") - .option("-n, --name ", "Project name") - .option("-d, --description ", "Project description") - .action(async (projectId, options) => { - try { - await (0, project_1.updateProject)(projectId, options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -projectCommand - .command("delete ") - .description("Delete a project") - .action(async (projectId, options) => { - try { - await (0, project_1.deleteProjectCommand)(projectId, options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -projectCommand - .command("update-ssh-config [project-id]") - .description("Update SSH config with project servers") - .action(async (projectId, options) => { - try { - await (0, project_1.updateSshConfigWithProjectCommand)({ projectId, ...options }); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -projectCommand - .command("export ") - .description("Export project data") - .option("-o, --output-path ", "Output file path") - .option("-k, --include-keys", "Include sensitive key information") - .action(async (projectId, options) => { - try { - await (0, project_1.exportProject)(projectId, options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -projectCommand - .command("import ") - .description("Import project data") - .option("-o, --overwrite", "Overwrite existing project") - .action(async (importPath, options) => { - try { - await (0, project_1.importProject)(importPath, options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -// Agent management commands -const agentCommand = program.command("agent").description("Manage SSH agent"); -agentCommand - .command("start") - .description("Start the SSH agent") - .option("-e, --set-env", "Show commands to set environment variables") - .action(async (options) => { - try { - await (0, agent_1.startSshAgent)(options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -agentCommand - .command("stop") - .description("Stop the SSH agent") - .action(async (options) => { - try { - await (0, agent_1.stopSshAgent)(options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -agentCommand - .command("status") - .description("Show SSH agent status") - .action(async (options) => { - try { - await (0, agent_1.getSshAgentStatus)(options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -agentCommand - .command("add-project-keys") - .description("Add all project keys to the SSH agent") - .option("-p, --project ", "Project ID") - .option("-t, --lifetime ", "Key lifetime in seconds") - .action(async (options) => { - try { - await (0, agent_1.addProjectKeysToAgent)(options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -agentCommand - .command("remove-all-keys") - .description("Remove all keys from the SSH agent") - .action(async (options) => { - try { - await (0, agent_1.removeAllKeysFromAgentCommand)(options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -agentCommand - .command("generate-startup-script") - .description("Generate an SSH agent startup script") - .option("-o, --output-path ", "Output file path") - .option("-p, --project ", "Project ID") - .option("-t, --lifetime ", "Key lifetime in seconds") - .action(async (options) => { - try { - await (0, agent_1.generateAgentStartupScript)(options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -agentCommand - .command("export-env") - .description("Export agent environment variables to a file") - .option("-o, --output-path ", "Output file path") - .action(async (options) => { - try { - await (0, agent_1.exportAgentEnvironment)(options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -// Server management commands -const serverCommand = program.command("server").description("Manage servers"); -serverCommand - .command("add") - .description("Add a server to a project") - .option("-p, --project ", "Project ID") - .option("-n, --name ", "Server name") - .option("-h, --hostname ", "Server hostname") - .option("--port ", "Server port") - .option("-u, --username ", "Username") - .option("-k, --key-id ", "SSH key ID") - .option("-t, --test-connection", "Test connection") - .action(async (options) => { - try { - // Require name, hostname, and username - if (!options.name) { - throw new Error("Server name is required"); - } - if (!options.hostname) { - throw new Error("Server hostname is required"); - } - if (!options.username) { - throw new Error("Username is required"); - } - await (0, connection_1.addServer)(options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -serverCommand - .command("list") - .description("List servers") - .option("-p, --project ", "Project ID") - .action(async (options) => { - try { - await (0, connection_1.listServers)(options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -serverCommand - .command("delete ") - .description("Delete a server") - .option("-p, --project ", "Project ID") - .action(async (serverId, options) => { - try { - await (0, connection_1.deleteServer)(serverId, options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -// Connection commands -program - .command("connect ") - .description("Connect to a server") - .option("-p, --project ", "Project ID") - .option("-c, --command ", "Command to execute") - .action(async (serverNameOrId, options) => { - try { - await (0, connection_1.openSshSession)(serverNameOrId, options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -program - .command("tunnel ") - .description("Create an SSH tunnel") - .option("-p, --project ", "Project ID") - .option("-l, --local-port ", "Local port") - .option("-r, --remote-host ", "Remote hostname") - .option("-P, --remote-port ", "Remote port") - .action(async (serverNameOrId, options) => { - try { - // Require remote host and port - if (!options.remoteHost) { - throw new Error("Remote hostname is required"); - } - if (!options.remotePort) { - throw new Error("Remote port is required"); - } - await (0, connection_1.createTunnel)(serverNameOrId, options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -program - .command("ssh-command ") - .description("Generate an SSH command for a server") - .option("-p, --project ", "Project ID") - .option("-c, --command ", "Command to execute") - .option("-k, --with-key", "Include key path in command") - .action(async (serverNameOrId, options) => { - try { - await (0, connection_1.generateSshCommand)(serverNameOrId, options); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -}); -// TUI dashboard command -program - .command("dashboard") - .description("Open the interactive dashboard") - .action(async () => { - // This will be implemented separately with a TUI library - ui_1.log.info("Interactive dashboard coming soon!"); -}); -// Execute the program -async function main() { - try { - await program.parseAsync(process.argv); - } - catch (error) { - ui_1.log.error(error.message); - process.exit(1); - } -} -main(); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map deleted file mode 100644 index 163c17c..0000000 --- a/dist/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/types/index.d.ts b/dist/types/index.d.ts deleted file mode 100644 index caa8e86..0000000 --- a/dist/types/index.d.ts +++ /dev/null @@ -1,65 +0,0 @@ -export type KeyType = "ed25519" | "ecdsa" | "rsa"; -export interface SSHKey { - id: string; - name: string; - type: KeyType; - path: string; - publicKeyPath: string; - fingerprint?: string; - created: string; - lastUsed?: string; - comment?: string; - bits?: number; - kdfRounds?: number; -} -export interface ServerConfig { - id: string; - name: string; - hostname: string; - port: number; - username: string; - keyId: string; - options?: Record; - lastUsed?: string; -} -export interface Project { - id: string; - name: string; - description?: string; - created: string; - lastUsed?: string; - imported?: string; - keys: SSHKey[]; - servers: ServerConfig[]; -} -export interface AppConfig { - version: string; - defaultProject: string; - activeProject?: string; - projects: string[]; - agentSettings: { - autostart: boolean; - timeout: number; - }; - uiSettings: { - colorTheme: string; - logLevel: string; - }; -} -export interface CommandOptions { - verbose?: boolean; - force?: boolean; - json?: boolean; -} -export interface AgentStatus { - running: boolean; - pid?: number; - socket?: string; - keys?: AgentKey[]; -} -export interface AgentKey { - type: string; - fingerprint: string; - comment?: string; - added: string; -} diff --git a/dist/types/index.js b/dist/types/index.js deleted file mode 100644 index aa219d8..0000000 --- a/dist/types/index.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/types/index.js.map b/dist/types/index.js.map deleted file mode 100644 index 37b1eea..0000000 --- a/dist/types/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/utils/config.d.ts b/dist/utils/config.d.ts deleted file mode 100644 index ff63a39..0000000 --- a/dist/utils/config.d.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { AppConfig, Project, SSHKey, ServerConfig } from "../types"; -/** - * Initialize the application - */ -export declare const initializeApp: (force?: boolean) => Promise; -/** - * Load application configuration - */ -export declare const loadConfig: () => Promise; -/** - * Save application configuration - */ -export declare const saveConfig: (config: AppConfig) => Promise; -/** - * Update application configuration - */ -export declare const updateConfig: (updates: Partial) => Promise; -/** - * Get active project ID - */ -export declare const getActiveProject: () => Promise; -/** - * Set active project - */ -export declare const setActiveProject: (projectId: string) => Promise; -/** - * List all projects - */ -export declare const listProjects: () => Promise; -/** - * Load a project - */ -export declare const loadProject: (projectId: string) => Promise; -/** - * Save a project - */ -export declare const saveProject: (project: Project) => Promise; -/** - * Create a new project - */ -export declare const createProject: (name: string, description?: string) => Promise; -/** - * Delete a project - */ -export declare const deleteProject: (projectId: string) => Promise; -/** - * Add a key to a project - */ -export declare const addKeyToProject: (projectId: string, key: SSHKey) => Promise; -/** - * Remove a key from a project - */ -export declare const removeKeyFromProject: (projectId: string, keyId: string) => Promise; -/** - * Add a server to a project - */ -export declare const addServerToProject: (projectId: string, server: ServerConfig) => Promise; -/** - * Remove a server from a project - */ -export declare const removeServerFromProject: (projectId: string, serverId: string) => Promise; -/** - * Update SSH config with project servers - */ -export declare const updateSshConfigWithProject: (projectId: string) => Promise; diff --git a/dist/utils/config.js b/dist/utils/config.js deleted file mode 100644 index 5cf94d6..0000000 --- a/dist/utils/config.js +++ /dev/null @@ -1,444 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || (function () { - var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function (o) { - var ar = []; - for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); - }; - return function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - __setModuleDefault(result, mod); - return result; - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -exports.updateSshConfigWithProject = exports.removeServerFromProject = exports.addServerToProject = exports.removeKeyFromProject = exports.addKeyToProject = exports.deleteProject = exports.createProject = exports.saveProject = exports.loadProject = exports.listProjects = exports.setActiveProject = exports.getActiveProject = exports.updateConfig = exports.saveConfig = exports.loadConfig = exports.initializeApp = void 0; -const path = __importStar(require("path")); -const constants_1 = require("../constants"); -const filesystem_1 = require("./filesystem"); -const ui_1 = require("./ui"); -const ssh_1 = require("./ssh"); -/** - * Default configuration - */ -const defaultConfig = { - version: constants_1.APP_VERSION, - defaultProject: constants_1.DEFAULT_PROJECT, - projects: [constants_1.DEFAULT_PROJECT], - agentSettings: { - autostart: true, - timeout: constants_1.DEFAULT_AGENT_TIMEOUT, - }, - uiSettings: { - colorTheme: "default", - logLevel: "info", - }, -}; -/** - * Initialize the application - */ -const initializeApp = async (force = false) => { - try { - // Create required directories - await Promise.all([ - (0, filesystem_1.ensureDirectory)(constants_1.BASE_DIR), - (0, filesystem_1.ensureDirectory)(constants_1.CONFIG_DIR), - (0, filesystem_1.ensureDirectory)(constants_1.KEYS_DIR), - (0, filesystem_1.ensureDirectory)(constants_1.PROJECTS_DIR), - (0, filesystem_1.ensureDirectory)(constants_1.LOGS_DIR), - ]); - // Check if config already exists - const configExists = await (0, filesystem_1.fileExists)(constants_1.CONFIG_FILE); - if (configExists && !force) { - ui_1.log.info("Configuration already exists. Use --force to reinitialize."); - return; - } - // Create default config - await (0, filesystem_1.writeJsonFile)(constants_1.CONFIG_FILE, defaultConfig); - // Create default project - const defaultProjectDir = path.join(constants_1.PROJECTS_DIR, constants_1.DEFAULT_PROJECT); - await (0, filesystem_1.ensureDirectory)(defaultProjectDir); - // Create default project config - const defaultProjectConfig = { - id: constants_1.DEFAULT_PROJECT, - name: "Default Project", - created: new Date().toISOString(), - keys: [], - servers: [], - }; - await (0, filesystem_1.writeJsonFile)(path.join(defaultProjectDir, "project.json"), defaultProjectConfig); - // Set active project - await (0, exports.setActiveProject)(constants_1.DEFAULT_PROJECT); - ui_1.log.success(`${constants_1.APP_NAME} initialized successfully.`); - } - catch (error) { - ui_1.log.error(`Failed to initialize app: ${error.message}`); - throw error; - } -}; -exports.initializeApp = initializeApp; -/** - * Load application configuration - */ -const loadConfig = async () => { - try { - // Check if config file exists - if (!(await (0, filesystem_1.fileExists)(constants_1.CONFIG_FILE))) { - // Initialize with default config - await (0, exports.initializeApp)(); - } - // Read config file - return await (0, filesystem_1.readJsonFile)(constants_1.CONFIG_FILE); - } - catch (error) { - ui_1.log.error(`Failed to load config: ${error.message}`); - throw error; - } -}; -exports.loadConfig = loadConfig; -/** - * Save application configuration - */ -const saveConfig = async (config) => { - try { - await (0, filesystem_1.writeJsonFile)(constants_1.CONFIG_FILE, config); - } - catch (error) { - ui_1.log.error(`Failed to save config: ${error.message}`); - throw error; - } -}; -exports.saveConfig = saveConfig; -/** - * Update application configuration - */ -const updateConfig = async (updates) => { - try { - const config = await (0, exports.loadConfig)(); - const updatedConfig = { ...config, ...updates }; - await (0, exports.saveConfig)(updatedConfig); - return updatedConfig; - } - catch (error) { - ui_1.log.error(`Failed to update config: ${error.message}`); - throw error; - } -}; -exports.updateConfig = updateConfig; -/** - * Get active project ID - */ -const getActiveProject = async () => { - try { - if (await (0, filesystem_1.fileExists)(constants_1.ACTIVE_PROJECT_FILE)) { - return (await (0, filesystem_1.readFile)(constants_1.ACTIVE_PROJECT_FILE)).trim(); - } - else { - // Use default project if no active project is set - const config = await (0, exports.loadConfig)(); - return config.defaultProject; - } - } - catch (error) { - ui_1.log.error(`Failed to get active project: ${error.message}`); - throw error; - } -}; -exports.getActiveProject = getActiveProject; -/** - * Set active project - */ -const setActiveProject = async (projectId) => { - try { - await (0, filesystem_1.writeFile)(constants_1.ACTIVE_PROJECT_FILE, projectId); - // Update config as well - const config = await (0, exports.loadConfig)(); - config.activeProject = projectId; - await (0, exports.saveConfig)(config); - } - catch (error) { - ui_1.log.error(`Failed to set active project: ${error.message}`); - throw error; - } -}; -exports.setActiveProject = setActiveProject; -/** - * List all projects - */ -const listProjects = async () => { - try { - const config = await (0, exports.loadConfig)(); - const projects = []; - for (const projectId of config.projects) { - const projectPath = path.join(constants_1.PROJECTS_DIR, projectId, "project.json"); - if (await (0, filesystem_1.fileExists)(projectPath)) { - const project = await (0, filesystem_1.readJsonFile)(projectPath); - projects.push(project); - } - } - return projects; - } - catch (error) { - ui_1.log.error(`Failed to list projects: ${error.message}`); - throw error; - } -}; -exports.listProjects = listProjects; -/** - * Load a project - */ -const loadProject = async (projectId) => { - try { - const projectPath = path.join(constants_1.PROJECTS_DIR, projectId, "project.json"); - if (!(await (0, filesystem_1.fileExists)(projectPath))) { - throw new Error(`Project ${projectId} does not exist`); - } - return await (0, filesystem_1.readJsonFile)(projectPath); - } - catch (error) { - ui_1.log.error(`Failed to load project ${projectId}: ${error.message}`); - throw error; - } -}; -exports.loadProject = loadProject; -/** - * Save a project - */ -const saveProject = async (project) => { - try { - // Create project directory if it doesn't exist - const projectDir = path.join(constants_1.PROJECTS_DIR, project.id); - await (0, filesystem_1.ensureDirectory)(projectDir); - // Save project config - await (0, filesystem_1.writeJsonFile)(path.join(projectDir, "project.json"), project); - // Update app config to include this project if not already present - const config = await (0, exports.loadConfig)(); - if (!config.projects.includes(project.id)) { - config.projects.push(project.id); - await (0, exports.saveConfig)(config); - } - } - catch (error) { - ui_1.log.error(`Failed to save project ${project.id}: ${error.message}`); - throw error; - } -}; -exports.saveProject = saveProject; -/** - * Create a new project - */ -const createProject = async (name, description) => { - try { - // Generate a safe project ID from the name - const projectId = name - .toLowerCase() - .replace(/[^a-z0-9]/g, "-") - .replace(/-+/g, "-") - .replace(/^-|-$/g, ""); - // Check if project already exists - const config = await (0, exports.loadConfig)(); - if (config.projects.includes(projectId)) { - throw new Error(`Project with ID ${projectId} already exists`); - } - // Create the project - const project = { - id: projectId, - name, - description, - created: new Date().toISOString(), - keys: [], - servers: [], - }; - // Save the project - await (0, exports.saveProject)(project); - return project; - } - catch (error) { - ui_1.log.error(`Failed to create project: ${error.message}`); - throw error; - } -}; -exports.createProject = createProject; -/** - * Delete a project - */ -const deleteProject = async (projectId) => { - try { - // Check if it's the default project - const config = await (0, exports.loadConfig)(); - if (projectId === config.defaultProject) { - throw new Error("Cannot delete the default project"); - } - // Update the app config to remove this project - config.projects = config.projects.filter((id) => id !== projectId); - await (0, exports.saveConfig)(config); - // Remove project directory - // Note: We don't remove the actual files/keys for safety - // but we remove the project from the configuration - ui_1.log.warn(`Project ${projectId} has been removed from configuration.`); - ui_1.log.warn(`The project files remain in ${path.join(constants_1.PROJECTS_DIR, projectId)}.`); - } - catch (error) { - ui_1.log.error(`Failed to delete project ${projectId}: ${error.message}`); - throw error; - } -}; -exports.deleteProject = deleteProject; -/** - * Add a key to a project - */ -const addKeyToProject = async (projectId, key) => { - try { - const project = await (0, exports.loadProject)(projectId); - // Check if key with same ID already exists - if (project.keys.some((k) => k.id === key.id)) { - throw new Error(`Key with ID ${key.id} already exists in project ${projectId}`); - } - // Add the key to the project - project.keys.push(key); - // Save the project - await (0, exports.saveProject)(project); - return project; - } - catch (error) { - ui_1.log.error(`Failed to add key to project ${projectId}: ${error.message}`); - throw error; - } -}; -exports.addKeyToProject = addKeyToProject; -/** - * Remove a key from a project - */ -const removeKeyFromProject = async (projectId, keyId) => { - try { - const project = await (0, exports.loadProject)(projectId); - // Remove the key from the project - project.keys = project.keys.filter((k) => k.id !== keyId); - // Update any servers that were using this key - for (const server of project.servers) { - if (server.keyId === keyId) { - server.keyId = ""; - } - } - // Save the project - await (0, exports.saveProject)(project); - return project; - } - catch (error) { - ui_1.log.error(`Failed to remove key from project ${projectId}: ${error.message}`); - throw error; - } -}; -exports.removeKeyFromProject = removeKeyFromProject; -/** - * Add a server to a project - */ -const addServerToProject = async (projectId, server) => { - try { - const project = await (0, exports.loadProject)(projectId); - // Check if server with same ID already exists - if (project.servers.some((s) => s.id === server.id)) { - throw new Error(`Server with ID ${server.id} already exists in project ${projectId}`); - } - // Add the server to the project - project.servers.push(server); - // Save the project - await (0, exports.saveProject)(project); - return project; - } - catch (error) { - ui_1.log.error(`Failed to add server to project ${projectId}: ${error.message}`); - throw error; - } -}; -exports.addServerToProject = addServerToProject; -/** - * Remove a server from a project - */ -const removeServerFromProject = async (projectId, serverId) => { - try { - const project = await (0, exports.loadProject)(projectId); - // Remove the server from the project - project.servers = project.servers.filter((s) => s.id !== serverId); - // Save the project - await (0, exports.saveProject)(project); - return project; - } - catch (error) { - ui_1.log.error(`Failed to remove server from project ${projectId}: ${error.message}`); - throw error; - } -}; -exports.removeServerFromProject = removeServerFromProject; -/** - * Update SSH config with project servers - */ -const updateSshConfigWithProject = async (projectId) => { - try { - const project = await (0, exports.loadProject)(projectId); - // Backup current SSH config - await (0, filesystem_1.backupFile)(constants_1.SSH_CONFIG_PATH); - // Generate SSH config entries for each server - const configEntries = []; - for (const server of project.servers) { - // Find the key for this server - const key = project.keys.find((k) => k.id === server.keyId); - configEntries.push((0, ssh_1.formatSshConfigEntry)(server.name, { - hostname: server.hostname, - user: server.username, - port: server.port, - identityFile: key ? key.path : undefined, - options: { - ServerAliveInterval: 60, - ServerAliveCountMax: 120, - ...server.options, - }, - })); - } - // Add a project header - const header = `# Project: ${project.name} (${project.id})\n`; - // Read current config - let currentConfig = ""; - if (await (0, filesystem_1.fileExists)(constants_1.SSH_CONFIG_PATH)) { - currentConfig = await (0, filesystem_1.readFile)(constants_1.SSH_CONFIG_PATH); - } - // Find any existing project sections and replace them - const projectRegex = new RegExp(`# Project: .* \\(${projectId}\\)[\\s\\S]*?(?=# Project:|$)`, "g"); - if (projectRegex.test(currentConfig)) { - currentConfig = currentConfig.replace(projectRegex, header + configEntries.join("\n\n") + "\n\n"); - } - else { - currentConfig += "\n\n" + header + configEntries.join("\n\n") + "\n\n"; - } - // Write updated config - await (0, filesystem_1.writeFile)(constants_1.SSH_CONFIG_PATH, currentConfig); - ui_1.log.success(`SSH config updated with ${project.servers.length} servers from project ${projectId}.`); - } - catch (error) { - ui_1.log.error(`Failed to update SSH config with project ${projectId}: ${error.message}`); - throw error; - } -}; -exports.updateSshConfigWithProject = updateSshConfigWithProject; -//# sourceMappingURL=config.js.map \ No newline at end of file diff --git a/dist/utils/config.js.map b/dist/utils/config.js.map deleted file mode 100644 index 3591a23..0000000 --- a/dist/utils/config.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/utils/filesystem.d.ts b/dist/utils/filesystem.d.ts deleted file mode 100644 index 1cc5946..0000000 --- a/dist/utils/filesystem.d.ts +++ /dev/null @@ -1,48 +0,0 @@ -/** - * Ensure a directory exists with the correct permissions - */ -export declare const ensureDirectory: (dirPath: string, permissions?: number) => Promise; -/** - * Write a file with the correct permissions - */ -export declare const writeFile: (filePath: string, content: string, permissions?: number) => Promise; -/** - * Read a file - */ -export declare const readFile: (filePath: string) => Promise; -/** - * Check if a file exists - */ -export declare const fileExists: (filePath: string) => Promise; -/** - * List all files in a directory - */ -export declare const listFiles: (dirPath: string, filter?: RegExp) => Promise; -/** - * Delete a file - */ -export declare const deleteFile: (filePath: string) => Promise; -/** - * Read a JSON file - */ -export declare const readJsonFile: (filePath: string) => Promise; -/** - * Write a JSON file - */ -export declare const writeJsonFile: (filePath: string, data: T, permissions?: number) => Promise; -/** - * Move a file - */ -export declare const moveFile: (source: string, destination: string) => Promise; -/** - * Copy a file - */ -export declare const copyFile: (source: string, destination: string) => Promise; -/** - * Backup a file - */ -export declare const backupFile: (filePath: string, backupDir?: string) => Promise; -/** - * Run a command and return the output - */ -export declare const runCommand: (command: string) => Promise; diff --git a/dist/utils/filesystem.js b/dist/utils/filesystem.js deleted file mode 100644 index cf15987..0000000 --- a/dist/utils/filesystem.js +++ /dev/null @@ -1,217 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || (function () { - var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function (o) { - var ar = []; - for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); - }; - return function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - __setModuleDefault(result, mod); - return result; - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -exports.runCommand = exports.backupFile = exports.copyFile = exports.moveFile = exports.writeJsonFile = exports.readJsonFile = exports.deleteFile = exports.listFiles = exports.fileExists = exports.readFile = exports.writeFile = exports.ensureDirectory = void 0; -const fs = __importStar(require("fs-extra")); -const path = __importStar(require("path")); -const child_process_1 = require("child_process"); -const util_1 = require("util"); -const constants_1 = require("../constants"); -const ui_1 = require("./ui"); -const execAsync = (0, util_1.promisify)(child_process_1.exec); -/** - * Ensure a directory exists with the correct permissions - */ -const ensureDirectory = async (dirPath, permissions = constants_1.SSH_DIR_PERMISSIONS) => { - try { - await fs.ensureDir(dirPath); - await fs.chmod(dirPath, permissions); - } - catch (error) { - ui_1.log.error(`Failed to create directory ${dirPath}: ${error.message}`); - throw error; - } -}; -exports.ensureDirectory = ensureDirectory; -/** - * Write a file with the correct permissions - */ -const writeFile = async (filePath, content, permissions = constants_1.SSH_KEY_PERMISSIONS) => { - try { - await fs.writeFile(filePath, content); - await fs.chmod(filePath, permissions); - } - catch (error) { - ui_1.log.error(`Failed to write file ${filePath}: ${error.message}`); - throw error; - } -}; -exports.writeFile = writeFile; -/** - * Read a file - */ -const readFile = async (filePath) => { - try { - return await fs.readFile(filePath, "utf8"); - } - catch (error) { - ui_1.log.error(`Failed to read file ${filePath}: ${error.message}`); - throw error; - } -}; -exports.readFile = readFile; -/** - * Check if a file exists - */ -const fileExists = async (filePath) => { - try { - await fs.access(filePath); - return true; - } - catch { - return false; - } -}; -exports.fileExists = fileExists; -/** - * List all files in a directory - */ -const listFiles = async (dirPath, filter) => { - try { - const files = await fs.readdir(dirPath); - return filter ? files.filter((file) => filter.test(file)) : files; - } - catch (error) { - ui_1.log.error(`Failed to list files in ${dirPath}: ${error.message}`); - throw error; - } -}; -exports.listFiles = listFiles; -/** - * Delete a file - */ -const deleteFile = async (filePath) => { - try { - await fs.remove(filePath); - } - catch (error) { - ui_1.log.error(`Failed to delete file ${filePath}: ${error.message}`); - throw error; - } -}; -exports.deleteFile = deleteFile; -/** - * Read a JSON file - */ -const readJsonFile = async (filePath) => { - try { - return await fs.readJson(filePath); - } - catch (error) { - ui_1.log.error(`Failed to read JSON file ${filePath}: ${error.message}`); - throw error; - } -}; -exports.readJsonFile = readJsonFile; -/** - * Write a JSON file - */ -const writeJsonFile = async (filePath, data, permissions = constants_1.SSH_KEY_PERMISSIONS) => { - try { - await fs.writeJson(filePath, data, { spaces: 2 }); - await fs.chmod(filePath, permissions); - } - catch (error) { - ui_1.log.error(`Failed to write JSON file ${filePath}: ${error.message}`); - throw error; - } -}; -exports.writeJsonFile = writeJsonFile; -/** - * Move a file - */ -const moveFile = async (source, destination) => { - try { - await fs.move(source, destination, { overwrite: true }); - } - catch (error) { - ui_1.log.error(`Failed to move file ${source} to ${destination}: ${error.message}`); - throw error; - } -}; -exports.moveFile = moveFile; -/** - * Copy a file - */ -const copyFile = async (source, destination) => { - try { - await fs.copy(source, destination, { overwrite: true }); - } - catch (error) { - ui_1.log.error(`Failed to copy file ${source} to ${destination}: ${error.message}`); - throw error; - } -}; -exports.copyFile = copyFile; -/** - * Backup a file - */ -const backupFile = async (filePath, backupDir) => { - try { - const fileName = path.basename(filePath); - const timestamp = new Date().toISOString().replace(/[:.]/g, "-"); - const backupPath = backupDir - ? path.join(backupDir, `${fileName}.${timestamp}`) - : `${filePath}.${timestamp}`; - if (backupDir) { - await (0, exports.ensureDirectory)(backupDir); - } - await (0, exports.copyFile)(filePath, backupPath); - return backupPath; - } - catch (error) { - ui_1.log.error(`Failed to backup file ${filePath}: ${error.message}`); - throw error; - } -}; -exports.backupFile = backupFile; -/** - * Run a command and return the output - */ -const runCommand = async (command) => { - try { - const { stdout, stderr } = await execAsync(command); - if (stderr) { - ui_1.log.warn(`Command stderr: ${stderr}`); - } - return stdout.trim(); - } - catch (error) { - ui_1.log.error(`Command failed: ${command}\n${error.message}`); - throw error; - } -}; -exports.runCommand = runCommand; -//# sourceMappingURL=filesystem.js.map \ No newline at end of file diff --git a/dist/utils/filesystem.js.map b/dist/utils/filesystem.js.map deleted file mode 100644 index 778f4ff..0000000 --- a/dist/utils/filesystem.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../src/utils/filesystem.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/utils/ssh.d.ts b/dist/utils/ssh.d.ts deleted file mode 100644 index 1aaeb20..0000000 --- a/dist/utils/ssh.d.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { KeyType, AgentStatus } from "../types"; -import { NodeSSH } from "node-ssh"; -/** - * Generate a new SSH key pair with secure parameters - */ -export declare const generateKey: (keyPath: string, options?: { - type?: KeyType; - bits?: number; - kdfRounds?: number; - passphrase?: string; - comment?: string; -}) => Promise<{ - privateKey: string; - publicKey: string; -}>; -/** - * Get the fingerprint of an SSH key - */ -export declare const getKeyFingerprint: (keyPath: string) => Promise; -/** - * Start the SSH agent if not already running - */ -export declare const startAgent: () => Promise<{ - agentPid: string; - sshAuthSock: string; -}>; -/** - * Stop the SSH agent - */ -export declare const stopAgent: () => Promise; -/** - * Get the status of the SSH agent - */ -export declare const getAgentStatus: () => Promise; -/** - * Add a key to the SSH agent - */ -export declare const addKeyToAgent: (keyPath: string, options?: { - lifetime?: number; - passphrase?: string; -}) => Promise; -/** - * Remove a key from the SSH agent - */ -export declare const removeKeyFromAgent: (keyPath: string) => Promise; -/** - * Remove all keys from the SSH agent - */ -export declare const removeAllKeysFromAgent: () => Promise; -/** - * Connect to a server using SSH - */ -export declare const connectToServer: (hostname: string, options: { - username: string; - port?: number; - keyPath?: string; - passphrase?: string; - command?: string; -}) => Promise; -/** - * Test SSH connection - */ -export declare const testConnection: (hostname: string, options: { - username: string; - port?: number; - keyPath?: string; - passphrase?: string; -}) => Promise; -/** - * Generate a key name based on purpose and timestamp - */ -export declare const generateKeyName: (purpose: string, timestamp?: Date) => string; -/** - * Parse an SSH public key - */ -export declare const parsePublicKey: (publicKeyContent: string) => { - type: string; - key: string; - comment?: string; -}; -/** - * Format an SSH key entry for .ssh/config - */ -export declare const formatSshConfigEntry: (host: string, config: { - hostname: string; - user: string; - port?: number; - identityFile?: string; - options?: Record; -}) => string; -/** - * Update SSH config file with new entries - */ -export declare const updateSshConfig: (configEntries: string[]) => Promise; -/** - * Generate a random port number for tunneling - */ -export declare const generateRandomPort: () => number; -/** - * Create an SSH tunnel - */ -export declare const createSshTunnel: (options: { - localPort: number; - remoteHost: string; - remotePort: number; - sshHost: string; - sshPort?: number; - sshUser: string; - keyPath?: string; -}) => Promise<{ - process: any; - localPort: number; -}>; -/** - * Close an SSH tunnel - */ -export declare const closeSshTunnel: (process: any) => void; diff --git a/dist/utils/ssh.js b/dist/utils/ssh.js deleted file mode 100644 index 313bc7e..0000000 --- a/dist/utils/ssh.js +++ /dev/null @@ -1,417 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || (function () { - var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function (o) { - var ar = []; - for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); - }; - return function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - __setModuleDefault(result, mod); - return result; - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -exports.closeSshTunnel = exports.createSshTunnel = exports.generateRandomPort = exports.updateSshConfig = exports.formatSshConfigEntry = exports.parsePublicKey = exports.generateKeyName = exports.testConnection = exports.connectToServer = exports.removeAllKeysFromAgent = exports.removeKeyFromAgent = exports.addKeyToAgent = exports.getAgentStatus = exports.stopAgent = exports.startAgent = exports.getKeyFingerprint = exports.generateKey = void 0; -const path = __importStar(require("path")); -const child_process_1 = require("child_process"); -const util_1 = require("util"); -const constants_1 = require("../constants"); -const ui_1 = require("./ui"); -const filesystem_1 = require("./filesystem"); -const node_ssh_1 = require("node-ssh"); -const date_fns_1 = require("date-fns"); -const execAsync = (0, util_1.promisify)(child_process_1.exec); -/** - * Generate a new SSH key pair with secure parameters - */ -const generateKey = async (keyPath, options = {}) => { - const { type = constants_1.DEFAULT_KEY_TYPE, bits = constants_1.DEFAULT_KEY_BITS, kdfRounds = constants_1.DEFAULT_KDF_ROUNDS, passphrase = "", comment = `generated by ssh-manager on ${new Date().toISOString()}`, } = options; - // Build the ssh-keygen command - let command = `ssh-keygen -t ${type}`; - // Add key-specific options - if (type === "rsa") { - command += ` -b ${bits}`; - } - // Add KDF rounds for stronger passphrase protection - command += ` -a ${kdfRounds}`; - // Add output file and other options - command += ` -f "${keyPath}" -C "${comment}"`; - // Use a temporary file for the passphrase to avoid it showing in process list - const passphraseFile = path.join(path.dirname(keyPath), ".passphrase-temp"); - await (0, filesystem_1.writeFile)(passphraseFile, passphrase); - try { - // Use passphrase file - command += ` -N "$(cat "${passphraseFile}")"`; - // Execute the command - await (0, filesystem_1.runCommand)(command); - // Read the generated files - const privateKey = await (0, filesystem_1.readFile)(keyPath); - const publicKey = await (0, filesystem_1.readFile)(`${keyPath}.pub`); - // Set correct permissions - await Promise.all([ - (0, filesystem_1.runCommand)(`chmod ${constants_1.SSH_KEY_PERMISSIONS.toString(8)} "${keyPath}"`), - (0, filesystem_1.runCommand)(`chmod ${constants_1.SSH_PUB_KEY_PERMISSIONS.toString(8)} "${keyPath}.pub"`), - ]); - return { privateKey, publicKey }; - } - catch (error) { - ui_1.log.error(`Failed to generate SSH key: ${error.message}`); - throw error; - } - finally { - // Cleanup the passphrase file - try { - await (0, filesystem_1.runCommand)(`rm -f "${passphraseFile}"`); - } - catch (error) { - ui_1.log.warn(`Failed to remove passphrase file: ${error.message}`); - } - } -}; -exports.generateKey = generateKey; -/** - * Get the fingerprint of an SSH key - */ -const getKeyFingerprint = async (keyPath) => { - try { - // Use ssh-keygen to get the fingerprint in MD5 format - const output = await (0, filesystem_1.runCommand)(`ssh-keygen -l -E md5 -f "${keyPath}"`); - // Extract the fingerprint part (second field) - const match = output.match(/MD5:([a-f0-9:]+)/i); - return match ? match[1] : ""; - } - catch (error) { - ui_1.log.error(`Failed to get key fingerprint: ${error.message}`); - throw error; - } -}; -exports.getKeyFingerprint = getKeyFingerprint; -/** - * Start the SSH agent if not already running - */ -const startAgent = async () => { - try { - // Start the SSH agent and parse its output - const output = await (0, filesystem_1.runCommand)("ssh-agent -s"); - // Extract SSH_AUTH_SOCK and SSH_AGENT_PID - const sshAuthSockMatch = output.match(/SSH_AUTH_SOCK=([^;]+)/); - const sshAgentPidMatch = output.match(/SSH_AGENT_PID=([^;]+)/); - if (!sshAuthSockMatch || !sshAgentPidMatch) { - throw new Error("Failed to parse ssh-agent output"); - } - const sshAuthSock = sshAuthSockMatch[1]; - const agentPid = sshAgentPidMatch[1]; - // Set environment variables for the current process - process.env.SSH_AUTH_SOCK = sshAuthSock; - process.env.SSH_AGENT_PID = agentPid; - return { agentPid, sshAuthSock }; - } - catch (error) { - ui_1.log.error(`Failed to start SSH agent: ${error.message}`); - throw error; - } -}; -exports.startAgent = startAgent; -/** - * Stop the SSH agent - */ -const stopAgent = async () => { - try { - await (0, filesystem_1.runCommand)("ssh-agent -k"); - delete process.env.SSH_AUTH_SOCK; - delete process.env.SSH_AGENT_PID; - } - catch (error) { - ui_1.log.error(`Failed to stop SSH agent: ${error.message}`); - throw error; - } -}; -exports.stopAgent = stopAgent; -/** - * Get the status of the SSH agent - */ -const getAgentStatus = async () => { - // Check if the SSH agent is running - if (!process.env.SSH_AUTH_SOCK || !process.env.SSH_AGENT_PID) { - return { running: false }; - } - try { - // Check if the agent has any keys - const output = await (0, filesystem_1.runCommand)("ssh-add -l"); - // Parse output to get keys - const keys = []; - if (!output.includes("The agent has no identities")) { - const keyLines = output.split("\n"); - for (const line of keyLines) { - if (!line.trim()) - continue; - // Parse each line (format: bits type fingerprint comment) - const parts = line.split(" "); - if (parts.length >= 3) { - const type = parts[1]; - const fingerprint = parts[2]; - const comment = parts.slice(3).join(" "); - keys.push({ - type, - fingerprint, - comment, - added: new Date().toISOString(), - }); - } - } - } - return { - running: true, - pid: parseInt(process.env.SSH_AGENT_PID, 10), - socket: process.env.SSH_AUTH_SOCK, - keys, - }; - } - catch (error) { - // If ssh-add fails, the agent may not be running correctly - return { running: false }; - } -}; -exports.getAgentStatus = getAgentStatus; -/** - * Add a key to the SSH agent - */ -const addKeyToAgent = async (keyPath, options = {}) => { - const { lifetime } = options; - try { - let command = "ssh-add"; - // Add lifetime option if specified - if (lifetime) { - command += ` -t ${lifetime}`; - } - command += ` "${keyPath}"`; - // Execute the command - await (0, filesystem_1.runCommand)(command); - } - catch (error) { - ui_1.log.error(`Failed to add key to agent: ${error.message}`); - throw error; - } -}; -exports.addKeyToAgent = addKeyToAgent; -/** - * Remove a key from the SSH agent - */ -const removeKeyFromAgent = async (keyPath) => { - try { - await (0, filesystem_1.runCommand)(`ssh-add -d "${keyPath}"`); - } - catch (error) { - ui_1.log.error(`Failed to remove key from agent: ${error.message}`); - throw error; - } -}; -exports.removeKeyFromAgent = removeKeyFromAgent; -/** - * Remove all keys from the SSH agent - */ -const removeAllKeysFromAgent = async () => { - try { - await (0, filesystem_1.runCommand)("ssh-add -D"); - } - catch (error) { - ui_1.log.error(`Failed to remove all keys from agent: ${error.message}`); - throw error; - } -}; -exports.removeAllKeysFromAgent = removeAllKeysFromAgent; -/** - * Connect to a server using SSH - */ -const connectToServer = async (hostname, options) => { - const { username, port = 22, keyPath, passphrase, command } = options; - try { - const ssh = new node_ssh_1.NodeSSH(); - // Connect to the server - await ssh.connect({ - host: hostname, - port, - username, - privateKey: keyPath, - passphrase, - }); - // Execute command if provided - if (command) { - const result = await ssh.execCommand(command); - ui_1.log.info(`Command execution result: ${result.stdout}`); - if (result.stderr) { - ui_1.log.warn(`Command stderr: ${result.stderr}`); - } - } - return ssh; - } - catch (error) { - ui_1.log.error(`Failed to connect to server ${hostname}: ${error.message}`); - throw error; - } -}; -exports.connectToServer = connectToServer; -/** - * Test SSH connection - */ -const testConnection = async (hostname, options) => { - try { - const ssh = await (0, exports.connectToServer)(hostname, { - ...options, - command: 'echo "Connection successful"', - }); - ssh.dispose(); - return true; - } - catch (error) { - ui_1.log.error(`Connection test failed: ${error.message}`); - return false; - } -}; -exports.testConnection = testConnection; -/** - * Generate a key name based on purpose and timestamp - */ -const generateKeyName = (purpose, timestamp = new Date()) => { - const formattedDate = (0, date_fns_1.format)(timestamp, "yyyyMMdd-HHmmss"); - const sanitizedPurpose = purpose.replace(/[^a-zA-Z0-9_-]/g, "_"); - return `id_${constants_1.DEFAULT_KEY_TYPE}_${sanitizedPurpose}_${formattedDate}`; -}; -exports.generateKeyName = generateKeyName; -/** - * Parse an SSH public key - */ -const parsePublicKey = (publicKeyContent) => { - const parts = publicKeyContent.trim().split(" "); - if (parts.length < 2) { - throw new Error("Invalid public key format"); - } - const type = parts[0]; - const key = parts[1]; - const comment = parts.slice(2).join(" ") || undefined; - return { type, key, comment }; -}; -exports.parsePublicKey = parsePublicKey; -/** - * Format an SSH key entry for .ssh/config - */ -const formatSshConfigEntry = (host, config) => { - const { hostname, user, port, identityFile, options = {} } = config; - let entry = `Host ${host}\n`; - entry += ` HostName ${hostname}\n`; - entry += ` User ${user}\n`; - if (port) { - entry += ` Port ${port}\n`; - } - if (identityFile) { - entry += ` IdentityFile ${identityFile}\n`; - } - // Add all other options - for (const [key, value] of Object.entries(options)) { - // Skip entries that we've already handled - if (["HostName", "User", "Port", "IdentityFile"].includes(key)) { - continue; - } - // Format the value based on its type - let formattedValue; - if (typeof value === "boolean") { - formattedValue = value ? "yes" : "no"; - } - else { - formattedValue = String(value); - } - entry += ` ${key} ${formattedValue}\n`; - } - return entry; -}; -exports.formatSshConfigEntry = formatSshConfigEntry; -/** - * Update SSH config file with new entries - */ -const updateSshConfig = async (configEntries) => { - try { - // Read existing config - const configPath = path.join(process.env.HOME || "", ".ssh", "config"); - let configContent = ""; - if (await (0, filesystem_1.fileExists)(configPath)) { - configContent = await (0, filesystem_1.readFile)(configPath); - } - // Add new entries - configContent += "\n\n# Added by ssh-manager\n"; - configContent += configEntries.join("\n\n"); - // Write updated config - await (0, filesystem_1.writeFile)(configPath, configContent, constants_1.SSH_KEY_PERMISSIONS); - } - catch (error) { - ui_1.log.error(`Failed to update SSH config: ${error.message}`); - throw error; - } -}; -exports.updateSshConfig = updateSshConfig; -/** - * Generate a random port number for tunneling - */ -const generateRandomPort = () => { - // Generate a random port number between 10000 and 65535 - return Math.floor(Math.random() * 55535) + 10000; -}; -exports.generateRandomPort = generateRandomPort; -/** - * Create an SSH tunnel - */ -const createSshTunnel = async (options) => { - const { localPort, remoteHost, remotePort, sshHost, sshPort = 22, sshUser, keyPath, } = options; - try { - // Build SSH command for tunneling - let command = `ssh -N -L ${localPort}:${remoteHost}:${remotePort}`; - if (sshPort !== 22) { - command += ` -p ${sshPort}`; - } - if (keyPath) { - command += ` -i "${keyPath}"`; - } - command += ` ${sshUser}@${sshHost}`; - // Start the SSH tunnel as a background process - const child = (0, child_process_1.exec)(command); - // Wait a bit to ensure the tunnel is established - await new Promise((resolve) => setTimeout(resolve, 1000)); - return { process: child, localPort }; - } - catch (error) { - ui_1.log.error(`Failed to create SSH tunnel: ${error.message}`); - throw error; - } -}; -exports.createSshTunnel = createSshTunnel; -/** - * Close an SSH tunnel - */ -const closeSshTunnel = (process) => { - if (process) { - process.kill(); - } -}; -exports.closeSshTunnel = closeSshTunnel; -//# sourceMappingURL=ssh.js.map \ No newline at end of file diff --git a/dist/utils/ssh.js.map b/dist/utils/ssh.js.map deleted file mode 100644 index faac36e..0000000 --- a/dist/utils/ssh.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ssh.js","sourceRoot":"","sources":["../../src/utils/ssh.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/utils/ui.d.ts b/dist/utils/ui.d.ts deleted file mode 100644 index 331e637..0000000 --- a/dist/utils/ui.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { Ora } from "ora"; -import blessed from "blessed"; -export declare const renderTitle: () => void; -export declare const renderBox: (content: string, title?: string, borderColor?: string) => void; -export declare const createSpinner: (text: string) => Ora; -export declare const log: { - debug: (message: string) => void; - info: (message: string) => void; - warn: (message: string) => void; - error: (message: string) => void; - success: (message: string) => void; - table: (data: any[]) => void; -}; -export declare const notify: (title: string, message: string, type?: "info" | "success" | "warning" | "error") => void; -export declare const prompt: { - confirm: (message: string, defaultValue?: boolean) => Promise; - select: (message: string, choices: Array<{ - name: string; - value: T; - }>, defaultValue?: T) => Promise; - input: (message: string, defaultValue?: string, validate?: (input: string) => boolean | string) => Promise; - password: (message: string, validate?: (input: string) => boolean | string) => Promise; - checkbox: (message: string, choices: Array<{ - name: string; - value: T; - checked?: boolean; - }>) => Promise; -}; -export declare const createDashboard: () => blessed.Widgets.Screen; -export declare const createDashboardBox: (screen: blessed.Widgets.Screen, title: string, options?: blessed.Widgets.BoxOptions) => blessed.Widgets.BoxElement; -export declare const createDashboardList: (screen: blessed.Widgets.Screen, title: string, items: string[], options?: blessed.Widgets.ListOptions) => blessed.Widgets.ListElement; -export declare const formatKeyValueList: (data: Record, indent?: number) => string; -export declare const createProgressBar: (screen: blessed.Widgets.Screen, options?: blessed.Widgets.ProgressBarOptions) => blessed.Widgets.ProgressBarElement; diff --git a/dist/utils/ui.js b/dist/utils/ui.js deleted file mode 100644 index 7b526d3..0000000 --- a/dist/utils/ui.js +++ /dev/null @@ -1,304 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || (function () { - var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function (o) { - var ar = []; - for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); - }; - return function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - __setModuleDefault(result, mod); - return result; - }; -})(); -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.createProgressBar = exports.formatKeyValueList = exports.createDashboardList = exports.createDashboardBox = exports.createDashboard = exports.prompt = exports.notify = exports.log = exports.createSpinner = exports.renderBox = exports.renderTitle = void 0; -const chalk_1 = __importDefault(require("chalk")); -const ora_1 = __importDefault(require("ora")); -const figlet_1 = __importDefault(require("figlet")); -const gradient_string_1 = __importDefault(require("gradient-string")); -const boxen_1 = __importDefault(require("boxen")); -const inquirer_1 = __importDefault(require("inquirer")); -const constants_1 = require("../constants"); -const blessed_1 = __importDefault(require("blessed")); -const notifier = __importStar(require("node-notifier")); -const date_fns_1 = require("date-fns"); -// Color palette -const colors = { - primary: "#36c5f0", - secondary: "#2eb67d", - warning: "#ecb22e", - error: "#e01e5a", - info: "#4a154b", - success: "#2eb67d", - muted: "#6c757d", -}; -// Create a beautiful gradient for the app title -const renderTitle = () => { - const title = figlet_1.default.textSync("SSH Manager", { font: "Big" }); - const titleGradient = (0, gradient_string_1.default)(["#36c5f0", "#2eb67d", "#ecb22e", "#e01e5a"]); - console.log(titleGradient(title)); - console.log(chalk_1.default.dim("Secure SSH Key Management | v1.0.0")); - console.log(""); -}; -exports.renderTitle = renderTitle; -// Create a styled box for displaying information -const renderBox = (content, title, borderColor = "blue") => { - console.log((0, boxen_1.default)(content, { - title, - titleAlignment: "center", - padding: 1, - margin: 1, - borderColor, - borderStyle: "round", - })); -}; -exports.renderBox = renderBox; -// Create a spinner with the given text -const createSpinner = (text) => { - return (0, ora_1.default)({ - text, - spinner: "dots", - color: "cyan", - interval: constants_1.SPINNER_INTERVAL, - }); -}; -exports.createSpinner = createSpinner; -// Create a standard way to log messages -exports.log = { - debug: (message) => { - console.log(chalk_1.default.dim(`[${getTimestamp()}] ${message}`)); - }, - info: (message) => { - console.log(chalk_1.default.blue(`[${getTimestamp()}] ℹ️ ${message}`)); - }, - warn: (message) => { - console.log(chalk_1.default.yellow(`[${getTimestamp()}] ⚠️ ${message}`)); - }, - error: (message) => { - console.log(chalk_1.default.red(`[${getTimestamp()}] ❌ ${message}`)); - }, - success: (message) => { - console.log(chalk_1.default.green(`[${getTimestamp()}] ✅ ${message}`)); - }, - table: (data) => { - console.table(data); - }, -}; -// Get timestamp for logging -const getTimestamp = () => { - return (0, date_fns_1.format)(new Date(), "HH:mm:ss"); -}; -// Display a notification -const notify = (title, message, type = "info") => { - notifier.notify({ - title, - message, - icon: getIconForType(type), - }); -}; -exports.notify = notify; -const getIconForType = (type) => { - // Return platform-appropriate icons or empty string if not available - return ""; -}; -// Interactive prompts -exports.prompt = { - // Confirm action - confirm: async (message, defaultValue = false) => { - const { result } = await inquirer_1.default.prompt([ - { - type: "confirm", - name: "result", - message, - default: defaultValue, - }, - ]); - return result; - }, - // Select from a list - select: async (message, choices, defaultValue) => { - const { result } = await inquirer_1.default.prompt([ - { - type: "list", - name: "result", - message, - choices, - default: defaultValue, - }, - ]); - return result; - }, - // Input text - input: async (message, defaultValue, validate) => { - const { result } = await inquirer_1.default.prompt([ - { - type: "input", - name: "result", - message, - default: defaultValue, - validate, - }, - ]); - return result; - }, - // Input password (masked) - password: async (message, validate) => { - const { result } = await inquirer_1.default.prompt([ - { - type: "password", - name: "result", - message, - validate, - }, - ]); - return result; - }, - // Multiple selection - checkbox: async (message, choices) => { - const { result } = await inquirer_1.default.prompt([ - { - type: "checkbox", - name: "result", - message, - choices, - }, - ]); - return result; - }, -}; -// Create a simple terminal UI dashboard using blessed -const createDashboard = () => { - const screen = blessed_1.default.screen({ - smartCSR: true, - title: "SSH Manager Dashboard", - }); - // Allow Ctrl+C to exit - screen.key(["C-c"], () => process.exit(0)); - return screen; -}; -exports.createDashboard = createDashboard; -// Create a dashboard box -const createDashboardBox = (screen, title, options = {}) => { - const box = blessed_1.default.box({ - label: ` ${title} `, - border: { - type: "line", - }, - style: { - border: { - fg: "blue", - }, - header: { - fg: "white", - bold: true, - }, - }, - ...options, - }); - screen.append(box); - return box; -}; -exports.createDashboardBox = createDashboardBox; -// Create a dashboard list -const createDashboardList = (screen, title, items, options = {}) => { - const list = blessed_1.default.list({ - label: ` ${title} `, - items, - border: { - type: "line", - }, - style: { - border: { - fg: "blue", - }, - selected: { - bg: "blue", - fg: "white", - bold: true, - }, - }, - keys: true, - vi: true, - mouse: true, - ...options, - }); - screen.append(list); - return list; -}; -exports.createDashboardList = createDashboardList; -// Format a list of key-value pairs for display -const formatKeyValueList = (data, indent = 2) => { - const indentStr = " ".repeat(indent); - return Object.entries(data) - .map(([key, value]) => { - const formattedKey = chalk_1.default.cyan(`${key}:`); - return `${indentStr}${formattedKey} ${formatValue(value)}`; - }) - .join("\n"); -}; -exports.formatKeyValueList = formatKeyValueList; -// Format a value for display -const formatValue = (value) => { - if (value === undefined || value === null) { - return chalk_1.default.dim("Not set"); - } - if (typeof value === "boolean") { - return value ? chalk_1.default.green("Yes") : chalk_1.default.red("No"); - } - if (typeof value === "object") { - if (Array.isArray(value)) { - return value.length > 0 - ? chalk_1.default.yellow(`[${value.join(", ")}]`) - : chalk_1.default.dim("Empty array"); - } - return JSON.stringify(value); - } - return String(value); -}; -// Progress bar for long operations -const createProgressBar = (screen, options = {}) => { - const progressBar = blessed_1.default.progressbar({ - border: { - type: "line", - }, - style: { - border: { - fg: "blue", - }, - bar: { - bg: "blue", - }, - }, - height: 3, - ...options, - }); - screen.append(progressBar); - return progressBar; -}; -exports.createProgressBar = createProgressBar; -//# sourceMappingURL=ui.js.map \ No newline at end of file diff --git a/dist/utils/ui.js.map b/dist/utils/ui.js.map deleted file mode 100644 index c9460f9..0000000 --- a/dist/utils/ui.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/utils/ui.ts"],"names":[],"mappings":"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"} \ No newline at end of file From 6acdcf873681a10a47142b18f43520a798b7231b Mon Sep 17 00:00:00 2001 From: Prathik Shetty Date: Sun, 10 Aug 2025 15:52:39 +0530 Subject: [PATCH 2/2] chore: Add dist/ to .gitignore --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index b512c09..12fe332 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ -node_modules \ No newline at end of file +node_modules + +dist/