UNPKG

mockey-patcher-cli

Version:

Global CLI tool for managing Mockey Patcher backend services with Docker Compose - API mocking and request redirection made simple

169 lines â€ĸ 6.01 kB
#!/usr/bin/env node "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const commander_1 = require("commander"); const logger_1 = require("../utils/logger"); const setup_1 = require("../commands/setup"); const start_1 = require("../commands/start"); const stop_1 = require("../commands/stop"); const status_1 = require("../commands/status"); const restart_1 = require("../commands/restart"); const logs_1 = require("../commands/logs"); const reset_1 = require("../commands/reset"); // Program configuration commander_1.program .name("mockey-patcher") .description("🔧 Mockey Patcher CLI - API mocking and request redirection made simple") .version("1.1.1"); // Setup command commander_1.program .command("setup [project-name]") .description("🚀 Initialize a new Mockey Patcher project") .option("-p, --port <number>", "Backend API port", (val) => parseInt(val, 10)) .option("--postgres-port <number>", "PostgreSQL port", (val) => parseInt(val, 10)) .option("-u, --docker-username <username>", "Docker Hub username") .option("-f, --force", "Overwrite existing configuration") .option("--no-interactive", "Skip interactive prompts") .action(async (projectName, options) => { try { await (0, setup_1.setupCommand)({ ...options, projectName }); } catch (error) { logger_1.Logger.error(`Setup failed: ${error}`); process.exit(1); } }); // Start command commander_1.program .command("start") .description("â–ļī¸ Start all services") .option("-d, --detach", "Run in detached mode") .option("--pull", "Pull latest images before starting") .option("--build", "Build images before starting") .action(async (options) => { try { await (0, start_1.startCommand)(options); } catch (error) { logger_1.Logger.error(`Start failed: ${error}`); process.exit(1); } }); // Stop command commander_1.program .command("stop") .description("âšī¸ Stop all services") .option("-v, --volumes", "Remove volumes") .action(async (options) => { try { await (0, stop_1.stopCommand)(options); } catch (error) { logger_1.Logger.error(`Stop failed: ${error}`); process.exit(1); } }); // Status command commander_1.program .command("status") .description("📊 Check service status") .option("-v, --verbose", "Show detailed status information") .option("--json", "Output in JSON format") .action(async (options) => { try { await (0, status_1.statusCommand)(options); } catch (error) { logger_1.Logger.error(`Status check failed: ${error}`); process.exit(1); } }); // Restart command commander_1.program .command("restart") .description("🔄 Restart all services") .option("--pull", "Pull latest images before restarting") .option("--build", "Build images before restarting") .action(async (options) => { try { await (0, restart_1.restartCommand)(options); } catch (error) { logger_1.Logger.error(`Restart failed: ${error}`); process.exit(1); } }); // Logs command commander_1.program .command("logs [service]") .description("📋 Show service logs") .option("-f, --follow", "Follow log output") .option("-t, --tail <number>", "Number of lines to show", (val) => parseInt(val, 10)) .option("--since <string>", "Show logs since timestamp") .action(async (service, options) => { try { await (0, logs_1.logsCommand)(service, options); } catch (error) { logger_1.Logger.error(`Logs failed: ${error}`); process.exit(1); } }); // Reset command commander_1.program .command("reset") .description("đŸ—‘ī¸ Reset project (remove containers, volumes, and data)") .option("-f, --force", "Skip confirmation") .action(async (options) => { try { await (0, reset_1.resetCommand)(options); } catch (error) { logger_1.Logger.error(`Reset failed: ${error}`); process.exit(1); } }); // Help command customization commander_1.program.on("--help", () => { console.log(""); console.log("Examples:"); console.log(" $ mockey-patcher setup my-project # 🚀 Initialize project"); console.log(" $ mockey-patcher setup --port 8080 # 🚀 Initialize with custom port"); console.log(" $ mockey-patcher start # â–ļī¸ Start all services"); console.log(" $ mockey-patcher start --pull # â–ļī¸ Pull latest images and start"); console.log(" $ mockey-patcher status # 📊 Check service status"); console.log(" $ mockey-patcher logs backend # 📋 Show backend logs"); console.log(" $ mockey-patcher logs --follow # 📋 Follow all logs"); console.log(" $ mockey-patcher stop # âšī¸ Stop services"); console.log(" $ mockey-patcher reset --force # đŸ—‘ī¸ Reset without confirmation"); console.log(""); }); // Error handling process.on("unhandledRejection", (reason, promise) => { logger_1.Logger.error(`Unhandled Rejection at: ${promise}, reason: ${reason}`); process.exit(1); }); process.on("uncaughtException", (error) => { logger_1.Logger.error(`Uncaught Exception: ${error.message}`); process.exit(1); }); // Graceful shutdown process.on("SIGINT", () => { logger_1.Logger.newLine(); logger_1.Logger.info("Received SIGINT, shutting down gracefully..."); logger_1.Logger.stopSpinner(); process.exit(0); }); process.on("SIGTERM", () => { logger_1.Logger.newLine(); logger_1.Logger.info("Received SIGTERM, shutting down gracefully..."); logger_1.Logger.stopSpinner(); process.exit(0); }); // Parse command line arguments commander_1.program.parse(); // Show help if no command provided if (!process.argv.slice(2).length) { commander_1.program.outputHelp(); } //# sourceMappingURL=mockey-patcher.js.map