UNPKG

@git.zone/cli

Version:

A comprehensive CLI tool for enhancing and managing local development workflows with gitzone utilities, focusing on project setup, version control, code formatting, and template management.

188 lines 15.3 kB
import * as plugins from './mod.plugins.js'; import * as helpers from './helpers.js'; import { ServiceManager } from './classes.servicemanager.js'; import { logger } from '../gitzone.logging.js'; export const run = async (argvArg) => { const serviceManager = new ServiceManager(); await serviceManager.init(); const command = argvArg._[1] || 'help'; const service = argvArg._[2] || 'all'; switch (command) { case 'start': await handleStart(serviceManager, service); break; case 'stop': await handleStop(serviceManager, service); break; case 'restart': await handleRestart(serviceManager, service); break; case 'status': await serviceManager.showStatus(); break; case 'config': await serviceManager.showConfig(); break; case 'compass': await serviceManager.showCompassConnection(); break; case 'logs': const lines = parseInt(argvArg._[3]) || 20; await serviceManager.showLogs(service, lines); break; case 'remove': await handleRemove(serviceManager); break; case 'clean': await handleClean(serviceManager); break; case 'reconfigure': await serviceManager.reconfigure(); break; case 'help': default: showHelp(); break; } }; async function handleStart(serviceManager, service) { helpers.printHeader('Starting Services'); switch (service) { case 'mongo': case 'mongodb': await serviceManager.startMongoDB(); break; case 'minio': case 's3': await serviceManager.startMinIO(); break; case 'all': case '': await serviceManager.startMongoDB(); console.log(); await serviceManager.startMinIO(); break; default: logger.log('error', `Unknown service: ${service}`); logger.log('note', 'Use: mongo, s3, or all'); break; } } async function handleStop(serviceManager, service) { helpers.printHeader('Stopping Services'); switch (service) { case 'mongo': case 'mongodb': await serviceManager.stopMongoDB(); break; case 'minio': case 's3': await serviceManager.stopMinIO(); break; case 'all': case '': await serviceManager.stopMongoDB(); console.log(); await serviceManager.stopMinIO(); break; default: logger.log('error', `Unknown service: ${service}`); logger.log('note', 'Use: mongo, s3, or all'); break; } } async function handleRestart(serviceManager, service) { helpers.printHeader('Restarting Services'); switch (service) { case 'mongo': case 'mongodb': await serviceManager.stopMongoDB(); await plugins.smartdelay.delayFor(2000); await serviceManager.startMongoDB(); break; case 'minio': case 's3': await serviceManager.stopMinIO(); await plugins.smartdelay.delayFor(2000); await serviceManager.startMinIO(); break; case 'all': case '': await serviceManager.stopMongoDB(); await serviceManager.stopMinIO(); await plugins.smartdelay.delayFor(2000); await serviceManager.startMongoDB(); console.log(); await serviceManager.startMinIO(); break; default: logger.log('error', `Unknown service: ${service}`); break; } } async function handleRemove(serviceManager) { helpers.printHeader('Removing Containers'); logger.log('note', '⚠️ This will remove containers but preserve data'); const shouldContinue = await plugins.smartinteract.SmartInteract.getCliConfirmation('Continue?', false); if (shouldContinue) { await serviceManager.removeContainers(); } else { logger.log('note', 'Cancelled'); } } async function handleClean(serviceManager) { helpers.printHeader('Clean All'); logger.log('error', '⚠️ WARNING: This will remove all containers and data!'); logger.log('error', 'This action cannot be undone!'); const smartinteraction = new plugins.smartinteract.SmartInteract(); const confirmAnswer = await smartinteraction.askQuestion({ name: 'confirm', type: 'input', message: 'Type "yes" to confirm:', default: 'no' }); if (confirmAnswer.value === 'yes') { await serviceManager.removeContainers(); console.log(); await serviceManager.cleanData(); logger.log('ok', 'All cleaned ✓'); } else { logger.log('note', 'Cancelled'); } } function showHelp() { helpers.printHeader('GitZone Services Manager'); logger.log('ok', 'Usage: gitzone services [command] [options]'); console.log(); logger.log('note', 'Commands:'); logger.log('info', ' start [service] Start services (mongo|s3|all)'); logger.log('info', ' stop [service] Stop services (mongo|s3|all)'); logger.log('info', ' restart [service] Restart services (mongo|s3|all)'); logger.log('info', ' status Show service status'); logger.log('info', ' config Show current configuration'); logger.log('info', ' compass Show MongoDB Compass connection string'); logger.log('info', ' logs [service] Show logs (mongo|s3|all) [lines]'); logger.log('info', ' reconfigure Reassign ports and restart services'); logger.log('info', ' remove Remove all containers'); logger.log('info', ' clean Remove all containers and data ⚠️'); logger.log('info', ' help Show this help message'); console.log(); logger.log('note', 'Features:'); logger.log('info', ' • Auto-creates .nogit/env.json with smart defaults'); logger.log('info', ' • Random ports (20000-30000) to avoid conflicts'); logger.log('info', ' • Project-specific containers for multi-project support'); logger.log('info', ' • Preserves custom configuration values'); logger.log('info', ' • MongoDB Compass connection support'); console.log(); logger.log('note', 'Examples:'); logger.log('info', ' gitzone services start # Start all services'); logger.log('info', ' gitzone services start mongo # Start only MongoDB'); logger.log('info', ' gitzone services stop # Stop all services'); logger.log('info', ' gitzone services status # Check service status'); logger.log('info', ' gitzone services config # Show configuration'); logger.log('info', ' gitzone services compass # Get MongoDB Compass connection'); logger.log('info', ' gitzone services logs mongo 50 # Show last 50 lines of MongoDB logs'); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9tb2Rfc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsT0FBWSxFQUFFLEVBQUU7SUFDeEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztJQUM1QyxNQUFNLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUU1QixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQztJQUN2QyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUV0QyxRQUFRLE9BQU8sRUFBRSxDQUFDO1FBQ2hCLEtBQUssT0FBTztZQUNWLE1BQU0sV0FBVyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUMzQyxNQUFNO1FBRVIsS0FBSyxNQUFNO1lBQ1QsTUFBTSxVQUFVLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzFDLE1BQU07UUFFUixLQUFLLFNBQVM7WUFDWixNQUFNLGFBQWEsQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDN0MsTUFBTTtRQUVSLEtBQUssUUFBUTtZQUNYLE1BQU0sY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xDLE1BQU07UUFFUixLQUFLLFFBQVE7WUFDWCxNQUFNLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQyxNQUFNO1FBRVIsS0FBSyxTQUFTO1lBQ1osTUFBTSxjQUFjLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUM3QyxNQUFNO1FBRVIsS0FBSyxNQUFNO1lBQ1QsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0MsTUFBTSxjQUFjLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM5QyxNQUFNO1FBRVIsS0FBSyxRQUFRO1lBQ1gsTUFBTSxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDbkMsTUFBTTtRQUVSLEtBQUssT0FBTztZQUNWLE1BQU0sV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ2xDLE1BQU07UUFFUixLQUFLLGFBQWE7WUFDaEIsTUFBTSxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkMsTUFBTTtRQUVSLEtBQUssTUFBTSxDQUFDO1FBQ1o7WUFDRSxRQUFRLEVBQUUsQ0FBQztZQUNYLE1BQU07SUFDVixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsS0FBSyxVQUFVLFdBQVcsQ0FBQyxjQUE4QixFQUFFLE9BQWU7SUFDeEUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRXpDLFFBQVEsT0FBTyxFQUFFLENBQUM7UUFDaEIsS0FBSyxPQUFPLENBQUM7UUFDYixLQUFLLFNBQVM7WUFDWixNQUFNLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQyxNQUFNO1FBRVIsS0FBSyxPQUFPLENBQUM7UUFDYixLQUFLLElBQUk7WUFDUCxNQUFNLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQyxNQUFNO1FBRVIsS0FBSyxLQUFLLENBQUM7UUFDWCxLQUFLLEVBQUU7WUFDTCxNQUFNLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDZCxNQUFNLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQyxNQUFNO1FBRVI7WUFDRSxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxvQkFBb0IsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUNuRCxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO1lBQzdDLE1BQU07SUFDVixDQUFDO0FBQ0gsQ0FBQztBQUVELEtBQUssVUFBVSxVQUFVLENBQUMsY0FBOEIsRUFBRSxPQUFlO0lBQ3ZFLE9BQU8sQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUV6QyxRQUFRLE9BQU8sRUFBRSxDQUFDO1FBQ2hCLEtBQUssT0FBTyxDQUFDO1FBQ2IsS0FBSyxTQUFTO1lBQ1osTUFBTSxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkMsTUFBTTtRQUVSLEtBQUssT0FBTyxDQUFDO1FBQ2IsS0FBSyxJQUFJO1lBQ1AsTUFBTSxjQUFjLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakMsTUFBTTtRQUVSLEtBQUssS0FBSyxDQUFDO1FBQ1gsS0FBSyxFQUFFO1lBQ0wsTUFBTSxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2QsTUFBTSxjQUFjLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakMsTUFBTTtRQUVSO1lBQ0UsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsb0JBQW9CLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDbkQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztZQUM3QyxNQUFNO0lBQ1YsQ0FBQztBQUNILENBQUM7QUFFRCxLQUFLLFVBQVUsYUFBYSxDQUFDLGNBQThCLEVBQUUsT0FBZTtJQUMxRSxPQUFPLENBQUMsV0FBVyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFFM0MsUUFBUSxPQUFPLEVBQUUsQ0FBQztRQUNoQixLQUFLLE9BQU8sQ0FBQztRQUNiLEtBQUssU0FBUztZQUNaLE1BQU0sY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25DLE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEMsTUFBTSxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEMsTUFBTTtRQUVSLEtBQUssT0FBTyxDQUFDO1FBQ2IsS0FBSyxJQUFJO1lBQ1AsTUFBTSxjQUFjLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakMsTUFBTSxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QyxNQUFNLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQyxNQUFNO1FBRVIsS0FBSyxLQUFLLENBQUM7UUFDWCxLQUFLLEVBQUU7WUFDTCxNQUFNLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQyxNQUFNLGNBQWMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQyxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNkLE1BQU0sY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xDLE1BQU07UUFFUjtZQUNFLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLG9CQUFvQixPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ25ELE1BQU07SUFDVixDQUFDO0FBQ0gsQ0FBQztBQUVELEtBQUssVUFBVSxZQUFZLENBQUMsY0FBOEI7SUFDeEQsT0FBTyxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLG1EQUFtRCxDQUFDLENBQUM7SUFFeEUsTUFBTSxjQUFjLEdBQUcsTUFBTSxPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFFeEcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUNuQixNQUFNLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFDLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDbEMsQ0FBQztBQUNILENBQUM7QUFFRCxLQUFLLFVBQVUsV0FBVyxDQUFDLGNBQThCO0lBQ3ZELE9BQU8sQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsd0RBQXdELENBQUMsQ0FBQztJQUM5RSxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSwrQkFBK0IsQ0FBQyxDQUFDO0lBRXJELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ25FLE1BQU0sYUFBYSxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsV0FBVyxDQUFDO1FBQ3ZELElBQUksRUFBRSxTQUFTO1FBQ2YsSUFBSSxFQUFFLE9BQU87UUFDYixPQUFPLEVBQUUsd0JBQXdCO1FBQ2pDLE9BQU8sRUFBRSxJQUFJO0tBQ2QsQ0FBQyxDQUFDO0lBRUgsSUFBSSxhQUFhLENBQUMsS0FBSyxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQ2xDLE1BQU0sY0FBYyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2QsTUFBTSxjQUFjLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDcEMsQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNsQyxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsUUFBUTtJQUNmLE9BQU8sQ0FBQyxXQUFXLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUVoRCxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSw2Q0FBNkMsQ0FBQyxDQUFDO0lBQ2hFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUVkLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2hDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLG1EQUFtRCxDQUFDLENBQUM7SUFDeEUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsa0RBQWtELENBQUMsQ0FBQztJQUN2RSxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxxREFBcUQsQ0FBQyxDQUFDO0lBQzFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLHlDQUF5QyxDQUFDLENBQUM7SUFDOUQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsZ0RBQWdELENBQUMsQ0FBQztJQUNyRSxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSw0REFBNEQsQ0FBQyxDQUFDO0lBQ2pGLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLHNEQUFzRCxDQUFDLENBQUM7SUFDM0UsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUseURBQXlELENBQUMsQ0FBQztJQUM5RSxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSwyQ0FBMkMsQ0FBQyxDQUFDO0lBQ2hFLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLHVEQUF1RCxDQUFDLENBQUM7SUFDNUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsNENBQTRDLENBQUMsQ0FBQztJQUNqRSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7SUFFZCxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNoQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxzREFBc0QsQ0FBQyxDQUFDO0lBQzNFLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLG1EQUFtRCxDQUFDLENBQUM7SUFDeEUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsMkRBQTJELENBQUMsQ0FBQztJQUNoRixNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSwyQ0FBMkMsQ0FBQyxDQUFDO0lBQ2hFLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLHdDQUF3QyxDQUFDLENBQUM7SUFDN0QsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRWQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDaEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsd0RBQXdELENBQUMsQ0FBQztJQUM3RSxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSx3REFBd0QsQ0FBQyxDQUFDO0lBQzdFLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLHVEQUF1RCxDQUFDLENBQUM7SUFDNUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsMERBQTBELENBQUMsQ0FBQztJQUMvRSxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSx3REFBd0QsQ0FBQyxDQUFDO0lBQzdFLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLG9FQUFvRSxDQUFDLENBQUM7SUFDekYsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsd0VBQXdFLENBQUMsQ0FBQztBQUMvRixDQUFDIn0=