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
JavaScript
;
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