From 7b9ebfdacb85af376bfbffa663b3b223f7fcc121 Mon Sep 17 00:00:00 2001 From: Juergen Kunz Date: Fri, 15 Aug 2025 09:37:54 +0000 Subject: [PATCH] fix(services): Improve logging and enhance MongoDB Compass integration --- changelog.md | 8 + package.json | 2 +- ts/mod_services/classes.dockercontainer.ts | 3 +- .../classes.serviceconfiguration.ts | 13 +- ts/mod_services/classes.servicemanager.ts | 189 +++++++++--------- ts/mod_services/helpers.ts | 33 +-- ts/mod_services/index.ts | 75 +++---- 7 files changed, 160 insertions(+), 163 deletions(-) diff --git a/changelog.md b/changelog.md index 005f40c..9d7e10b 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,13 @@ # Changelog +## 2025-08-15 - 1.17.1 - fix(services) +Improve services module logging and enhance MongoDB Compass integration + +- Refactored services module to use centralized logger from gitzone.logging.ts +- Automatically display MongoDB Compass connection string when starting services or checking status +- Removed custom printMessage wrapper in favor of standard logger.log() calls +- Consistent logging across all service commands + ## 2025-08-14 - 1.17.0 - feat(services) Add comprehensive development services management for MongoDB and MinIO containers diff --git a/package.json b/package.json index 6230aad..4eca091 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@git.zone/cli", "private": false, - "version": "1.17.0", + "version": "1.17.1", "description": "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.", "main": "dist_ts/index.ts", "typings": "dist_ts/index.d.ts", diff --git a/ts/mod_services/classes.dockercontainer.ts b/ts/mod_services/classes.dockercontainer.ts index 270594a..a9d7e5f 100644 --- a/ts/mod_services/classes.dockercontainer.ts +++ b/ts/mod_services/classes.dockercontainer.ts @@ -1,5 +1,6 @@ import * as plugins from './mod.plugins.js'; import * as helpers from './helpers.js'; +import { logger } from '../gitzone.logging.js'; export type ContainerStatus = 'running' | 'stopped' | 'not_exists'; @@ -147,7 +148,7 @@ export class DockerContainer { const result = await this.smartshell.exec(command); return result.exitCode === 0; } catch (error) { - helpers.printMessage(`Failed to run container: ${error.message}`, 'red'); + logger.log('error', `Failed to run container: ${error.message}`); return false; } } diff --git a/ts/mod_services/classes.serviceconfiguration.ts b/ts/mod_services/classes.serviceconfiguration.ts index 3e4e0e6..349db6d 100644 --- a/ts/mod_services/classes.serviceconfiguration.ts +++ b/ts/mod_services/classes.serviceconfiguration.ts @@ -1,5 +1,6 @@ import * as plugins from './mod.plugins.js'; import * as helpers from './helpers.js'; +import { logger } from '../gitzone.logging.js'; export interface IServiceConfig { PROJECT_NAME: string; @@ -111,10 +112,10 @@ export class ServiceConfiguration { await this.saveConfig(); - helpers.printMessage('✅ Created .nogit/env.json with project defaults', 'green'); - helpers.printMessage(`📍 MongoDB port: ${mongoPort}`, 'blue'); - helpers.printMessage(`📍 S3 API port: ${s3Port}`, 'blue'); - helpers.printMessage(`📍 S3 Console port: ${s3ConsolePort}`, 'blue'); + logger.log('ok', '✅ Created .nogit/env.json with project defaults'); + logger.log('info', `📍 MongoDB port: ${mongoPort}`); + logger.log('info', `📍 S3 API port: ${s3Port}`); + logger.log('info', `📍 S3 Console port: ${s3ConsolePort}`); } /** @@ -209,9 +210,9 @@ export class ServiceConfiguration { if (updated) { await this.saveConfig(); - helpers.printMessage(`✅ Added missing fields: ${fieldsAdded.join(', ')}`, 'green'); + logger.log('ok', `✅ Added missing fields: ${fieldsAdded.join(', ')}`); } else { - helpers.printMessage('✅ Configuration complete', 'green'); + logger.log('ok', '✅ Configuration complete'); } } diff --git a/ts/mod_services/classes.servicemanager.ts b/ts/mod_services/classes.servicemanager.ts index 5464cc7..61317ee 100644 --- a/ts/mod_services/classes.servicemanager.ts +++ b/ts/mod_services/classes.servicemanager.ts @@ -2,6 +2,7 @@ import * as plugins from './mod.plugins.js'; import * as helpers from './helpers.js'; import { ServiceConfiguration } from './classes.serviceconfiguration.js'; import { DockerContainer } from './classes.dockercontainer.js'; +import { logger } from '../gitzone.logging.js'; export class ServiceManager { private config: ServiceConfiguration; @@ -18,20 +19,20 @@ export class ServiceManager { public async init(): Promise { // Check Docker availability if (!(await this.docker.checkDocker())) { - helpers.printMessage('Error: Docker is not installed. Please install Docker first.', 'red'); + logger.log('error', 'Error: Docker is not installed. Please install Docker first.'); process.exit(1); } // Load or create configuration await this.config.loadOrCreate(); - helpers.printMessage(`📋 Project: ${this.config.getConfig().PROJECT_NAME}`, 'magenta'); + logger.log('info', `📋 Project: ${this.config.getConfig().PROJECT_NAME}`); } /** * Start MongoDB service */ public async startMongoDB(): Promise { - helpers.printMessage('📦 MongoDB:', 'yellow'); + logger.log('note', '📦 MongoDB:'); const config = this.config.getConfig(); const containers = this.config.getContainerNames(); @@ -44,19 +45,19 @@ export class ServiceManager { switch (status) { case 'running': - helpers.printMessage(' Already running ✓', 'green'); + logger.log('ok', ' Already running ✓'); break; case 'stopped': if (await this.docker.start(containers.mongo)) { - helpers.printMessage(' Started ✓', 'green'); + logger.log('ok', ' Started ✓'); } else { - helpers.printMessage(' Failed to start', 'red'); + logger.log('error', ' Failed to start'); } break; case 'not_exists': - helpers.printMessage(' Creating container...', 'yellow'); + logger.log('note', ' Creating container...'); const success = await this.docker.run({ name: containers.mongo, @@ -76,23 +77,28 @@ export class ServiceManager { }); if (success) { - helpers.printMessage(' Created and started ✓', 'green'); + logger.log('ok', ' Created and started ✓'); } else { - helpers.printMessage(' Failed to create container', 'red'); + logger.log('error', ' Failed to create container'); } break; } - helpers.printMessage(` Container: ${containers.mongo}`, 'cyan'); - helpers.printMessage(` Port: ${config.MONGODB_PORT}`, 'cyan'); - helpers.printMessage(` Connection: ${this.config.getMongoConnectionString()}`, 'blue'); + logger.log('info', ` Container: ${containers.mongo}`); + logger.log('info', ` Port: ${config.MONGODB_PORT}`); + logger.log('info', ` Connection: ${this.config.getMongoConnectionString()}`); + + // Show Compass connection string + const networkIp = await helpers.getLocalNetworkIp(); + const compassString = `mongodb://${config.MONGODB_USER}:${config.MONGODB_PASS}@${networkIp}:${config.MONGODB_PORT}/${config.MONGODB_NAME}?authSource=admin`; + logger.log('ok', ` Compass: ${compassString}`); } /** * Start MinIO service */ public async startMinIO(): Promise { - helpers.printMessage('📦 S3/MinIO:', 'yellow'); + logger.log('note', '📦 S3/MinIO:'); const config = this.config.getConfig(); const containers = this.config.getContainerNames(); @@ -105,19 +111,19 @@ export class ServiceManager { switch (status) { case 'running': - helpers.printMessage(' Already running ✓', 'green'); + logger.log('ok', ' Already running ✓'); break; case 'stopped': if (await this.docker.start(containers.minio)) { - helpers.printMessage(' Started ✓', 'green'); + logger.log('ok', ' Started ✓'); } else { - helpers.printMessage(' Failed to start', 'red'); + logger.log('error', ' Failed to start'); } break; case 'not_exists': - helpers.printMessage(' Creating container...', 'yellow'); + logger.log('note', ' Creating container...'); const success = await this.docker.run({ name: containers.minio, @@ -138,7 +144,7 @@ export class ServiceManager { }); if (success) { - helpers.printMessage(' Created and started ✓', 'green'); + logger.log('ok', ' Created and started ✓'); // Wait for MinIO to be ready await plugins.smartdelay.delayFor(3000); @@ -154,37 +160,37 @@ export class ServiceManager { `mc mb local/${config.S3_BUCKET}` ); - helpers.printMessage(` Bucket '${config.S3_BUCKET}' created ✓`, 'green'); + logger.log('ok', ` Bucket '${config.S3_BUCKET}' created ✓`); } else { - helpers.printMessage(' Failed to create container', 'red'); + logger.log('error', ' Failed to create container'); } break; } - helpers.printMessage(` Container: ${containers.minio}`, 'cyan'); - helpers.printMessage(` Port: ${config.S3_PORT}`, 'cyan'); - helpers.printMessage(` Bucket: ${config.S3_BUCKET}`, 'cyan'); - helpers.printMessage(` API: http://${config.S3_HOST}:${config.S3_PORT}`, 'blue'); - helpers.printMessage(` Console: http://${config.S3_HOST}:${config.S3_CONSOLE_PORT} (login: ${config.S3_USER}/***)`, 'blue'); + logger.log('info', ` Container: ${containers.minio}`); + logger.log('info', ` Port: ${config.S3_PORT}`); + logger.log('info', ` Bucket: ${config.S3_BUCKET}`); + logger.log('info', ` API: http://${config.S3_HOST}:${config.S3_PORT}`); + logger.log('info', ` Console: http://${config.S3_HOST}:${config.S3_CONSOLE_PORT} (login: ${config.S3_USER}/***)`); } /** * Stop MongoDB service */ public async stopMongoDB(): Promise { - helpers.printMessage('📦 MongoDB:', 'yellow'); + logger.log('note', '📦 MongoDB:'); const containers = this.config.getContainerNames(); const status = await this.docker.getStatus(containers.mongo); if (status === 'running') { if (await this.docker.stop(containers.mongo)) { - helpers.printMessage(' Stopped ✓', 'green'); + logger.log('ok', ' Stopped ✓'); } else { - helpers.printMessage(' Failed to stop', 'red'); + logger.log('error', ' Failed to stop'); } } else { - helpers.printMessage(' Not running', 'yellow'); + logger.log('note', ' Not running'); } } @@ -192,19 +198,19 @@ export class ServiceManager { * Stop MinIO service */ public async stopMinIO(): Promise { - helpers.printMessage('📦 S3/MinIO:', 'yellow'); + logger.log('note', '📦 S3/MinIO:'); const containers = this.config.getContainerNames(); const status = await this.docker.getStatus(containers.minio); if (status === 'running') { if (await this.docker.stop(containers.minio)) { - helpers.printMessage(' Stopped ✓', 'green'); + logger.log('ok', ' Stopped ✓'); } else { - helpers.printMessage(' Failed to stop', 'red'); + logger.log('error', ' Failed to stop'); } } else { - helpers.printMessage(' Not running', 'yellow'); + logger.log('note', ' Not running'); } } @@ -217,23 +223,28 @@ export class ServiceManager { const config = this.config.getConfig(); const containers = this.config.getContainerNames(); - helpers.printMessage(`Project: ${config.PROJECT_NAME}`, 'magenta'); + logger.log('info', `Project: ${config.PROJECT_NAME}`); console.log(); // MongoDB status const mongoStatus = await this.docker.getStatus(containers.mongo); switch (mongoStatus) { case 'running': - helpers.printMessage('📦 MongoDB: 🟢 Running', 'green'); - helpers.printMessage(` ├─ Container: ${containers.mongo}`, 'cyan'); - helpers.printMessage(` └─ ${this.config.getMongoConnectionString()}`, 'cyan'); + logger.log('ok', '📦 MongoDB: 🟢 Running'); + logger.log('info', ` ├─ Container: ${containers.mongo}`); + logger.log('info', ` ├─ Connection: ${this.config.getMongoConnectionString()}`); + + // Show Compass connection string + const networkIp = await helpers.getLocalNetworkIp(); + const compassString = `mongodb://${config.MONGODB_USER}:${config.MONGODB_PASS}@${networkIp}:${config.MONGODB_PORT}/${config.MONGODB_NAME}?authSource=admin`; + logger.log('ok', ` └─ Compass: ${compassString}`); break; case 'stopped': - helpers.printMessage('📦 MongoDB: 🟡 Stopped', 'yellow'); - helpers.printMessage(` └─ Container: ${containers.mongo}`, 'cyan'); + logger.log('note', '📦 MongoDB: 🟡 Stopped'); + logger.log('info', ` └─ Container: ${containers.mongo}`); break; case 'not_exists': - helpers.printMessage('📦 MongoDB: ⚪ Not installed', 'magenta'); + logger.log('info', '📦 MongoDB: ⚪ Not installed'); break; } @@ -241,18 +252,18 @@ export class ServiceManager { const minioStatus = await this.docker.getStatus(containers.minio); switch (minioStatus) { case 'running': - helpers.printMessage('📦 S3/MinIO: 🟢 Running', 'green'); - helpers.printMessage(` ├─ Container: ${containers.minio}`, 'cyan'); - helpers.printMessage(` ├─ API: http://${config.S3_HOST}:${config.S3_PORT}`, 'cyan'); - helpers.printMessage(` ├─ Console: http://${config.S3_HOST}:${config.S3_CONSOLE_PORT}`, 'cyan'); - helpers.printMessage(` └─ Bucket: ${config.S3_BUCKET}`, 'cyan'); + logger.log('ok', '📦 S3/MinIO: 🟢 Running'); + logger.log('info', ` ├─ Container: ${containers.minio}`); + logger.log('info', ` ├─ API: http://${config.S3_HOST}:${config.S3_PORT}`); + logger.log('info', ` ├─ Console: http://${config.S3_HOST}:${config.S3_CONSOLE_PORT}`); + logger.log('info', ` └─ Bucket: ${config.S3_BUCKET}`); break; case 'stopped': - helpers.printMessage('📦 S3/MinIO: 🟡 Stopped', 'yellow'); - helpers.printMessage(` └─ Container: ${containers.minio}`, 'cyan'); + logger.log('note', '📦 S3/MinIO: 🟡 Stopped'); + logger.log('info', ` └─ Container: ${containers.minio}`); break; case 'not_exists': - helpers.printMessage('📦 S3/MinIO: ⚪ Not installed', 'magenta'); + logger.log('info', '📦 S3/MinIO: ⚪ Not installed'); break; } } @@ -265,30 +276,30 @@ export class ServiceManager { const config = this.config.getConfig(); - helpers.printMessage(`Project: ${config.PROJECT_NAME}`, 'magenta'); + logger.log('info', `Project: ${config.PROJECT_NAME}`); console.log(); - helpers.printMessage('MongoDB:', 'yellow'); - helpers.printMessage(` Host: ${config.MONGODB_HOST}:${config.MONGODB_PORT}`, undefined); - helpers.printMessage(` Database: ${config.MONGODB_NAME}`, undefined); - helpers.printMessage(` User: ${config.MONGODB_USER}`, undefined); - helpers.printMessage(' Password: ***', undefined); - helpers.printMessage(` Container: ${this.config.getContainerNames().mongo}`, undefined); - helpers.printMessage(` Data: ${this.config.getDataDirectories().mongo}`, undefined); - helpers.printMessage(` Connection: ${this.config.getMongoConnectionString()}`, 'blue'); + logger.log('note', 'MongoDB:'); + logger.log('info', ` Host: ${config.MONGODB_HOST}:${config.MONGODB_PORT}`); + logger.log('info', ` Database: ${config.MONGODB_NAME}`); + logger.log('info', ` User: ${config.MONGODB_USER}`); + logger.log('info', ' Password: ***'); + logger.log('info', ` Container: ${this.config.getContainerNames().mongo}`); + logger.log('info', ` Data: ${this.config.getDataDirectories().mongo}`); + logger.log('info', ` Connection: ${this.config.getMongoConnectionString()}`); console.log(); - helpers.printMessage('S3/MinIO:', 'yellow'); - helpers.printMessage(` Host: ${config.S3_HOST}`, undefined); - helpers.printMessage(` API Port: ${config.S3_PORT}`, undefined); - helpers.printMessage(` Console Port: ${config.S3_CONSOLE_PORT}`, undefined); - helpers.printMessage(` User: ${config.S3_USER}`, undefined); - helpers.printMessage(' Password: ***', undefined); - helpers.printMessage(` Bucket: ${config.S3_BUCKET}`, undefined); - helpers.printMessage(` Container: ${this.config.getContainerNames().minio}`, undefined); - helpers.printMessage(` Data: ${this.config.getDataDirectories().minio}`, undefined); - helpers.printMessage(` API URL: http://${config.S3_HOST}:${config.S3_PORT}`, 'blue'); - helpers.printMessage(` Console URL: http://${config.S3_HOST}:${config.S3_CONSOLE_PORT}`, 'blue'); + logger.log('note', 'S3/MinIO:'); + logger.log('info', ` Host: ${config.S3_HOST}`); + logger.log('info', ` API Port: ${config.S3_PORT}`); + logger.log('info', ` Console Port: ${config.S3_CONSOLE_PORT}`); + logger.log('info', ` User: ${config.S3_USER}`); + logger.log('info', ' Password: ***'); + logger.log('info', ` Bucket: ${config.S3_BUCKET}`); + logger.log('info', ` Container: ${this.config.getContainerNames().minio}`); + logger.log('info', ` Data: ${this.config.getDataDirectories().minio}`); + logger.log('info', ` API URL: http://${config.S3_HOST}:${config.S3_PORT}`); + logger.log('info', ` Console URL: http://${config.S3_HOST}:${config.S3_CONSOLE_PORT}`); } /** @@ -302,20 +313,20 @@ export class ServiceManager { const connectionString = `mongodb://${config.MONGODB_USER}:${config.MONGODB_PASS}@${networkIp}:${config.MONGODB_PORT}/${config.MONGODB_NAME}?authSource=admin`; - helpers.printMessage('MongoDB Compass is a GUI tool for MongoDB. To connect:', 'cyan'); + logger.log('info', 'MongoDB Compass is a GUI tool for MongoDB. To connect:'); console.log(); - helpers.printMessage('1. Download MongoDB Compass from:', undefined); - helpers.printMessage(' https://www.mongodb.com/products/compass', 'blue'); + logger.log('info', '1. Download MongoDB Compass from:'); + logger.log('info', ' https://www.mongodb.com/products/compass'); console.log(); - helpers.printMessage('2. Open Compass and paste this connection string:', undefined); - helpers.printMessage(` ${connectionString}`, 'green'); + logger.log('info', '2. Open Compass and paste this connection string:'); + logger.log('ok', ` ${connectionString}`); console.log(); - helpers.printMessage('Connection Details:', 'yellow'); - helpers.printMessage(` Network IP: ${networkIp}`, undefined); - helpers.printMessage(` Port: ${config.MONGODB_PORT}`, undefined); - helpers.printMessage(` Database: ${config.MONGODB_NAME}`, undefined); - helpers.printMessage(` Username: ${config.MONGODB_USER}`, undefined); - helpers.printMessage(` Auth Source: admin`, undefined); + logger.log('note', 'Connection Details:'); + logger.log('info', ` Network IP: ${networkIp}`); + logger.log('info', ` Port: ${config.MONGODB_PORT}`); + logger.log('info', ` Database: ${config.MONGODB_NAME}`); + logger.log('info', ` Username: ${config.MONGODB_USER}`); + logger.log('info', ` Auth Source: admin`); } /** @@ -332,7 +343,7 @@ export class ServiceManager { const logs = await this.docker.logs(containers.mongo, lines); console.log(logs); } else { - helpers.printMessage('MongoDB container is not running', 'yellow'); + logger.log('note', 'MongoDB container is not running'); } break; @@ -343,7 +354,7 @@ export class ServiceManager { const logs = await this.docker.logs(containers.minio, lines); console.log(logs); } else { - helpers.printMessage('S3/MinIO container is not running', 'yellow'); + logger.log('note', 'S3/MinIO container is not running'); } break; @@ -355,7 +366,7 @@ export class ServiceManager { break; default: - helpers.printMessage('Usage: gitzone services logs [mongo|s3|all] [lines]', 'yellow'); + logger.log('note', 'Usage: gitzone services logs [mongo|s3|all] [lines]'); break; } } @@ -369,20 +380,20 @@ export class ServiceManager { if (await this.docker.exists(containers.mongo)) { if (await this.docker.remove(containers.mongo, true)) { - helpers.printMessage(' MongoDB container removed ✓', 'green'); + logger.log('ok', ' MongoDB container removed ✓'); removed = true; } } if (await this.docker.exists(containers.minio)) { if (await this.docker.remove(containers.minio, true)) { - helpers.printMessage(' S3/MinIO container removed ✓', 'green'); + logger.log('ok', ' S3/MinIO container removed ✓'); removed = true; } } if (!removed) { - helpers.printMessage(' No containers to remove', 'yellow'); + logger.log('note', ' No containers to remove'); } } @@ -395,18 +406,18 @@ export class ServiceManager { if (await plugins.smartfile.fs.fileExists(directories.mongo)) { await plugins.smartfile.fs.remove(directories.mongo); - helpers.printMessage(' MongoDB data removed ✓', 'green'); + logger.log('ok', ' MongoDB data removed ✓'); cleaned = true; } if (await plugins.smartfile.fs.fileExists(directories.minio)) { await plugins.smartfile.fs.remove(directories.minio); - helpers.printMessage(' S3/MinIO data removed ✓', 'green'); + logger.log('ok', ' S3/MinIO data removed ✓'); cleaned = true; } if (!cleaned) { - helpers.printMessage(' No data to clean', 'yellow'); + logger.log('note', ' No data to clean'); } } -} \ No newline at end of file +} diff --git a/ts/mod_services/helpers.ts b/ts/mod_services/helpers.ts index 921a95f..73efed5 100644 --- a/ts/mod_services/helpers.ts +++ b/ts/mod_services/helpers.ts @@ -1,5 +1,6 @@ import * as plugins from './mod.plugins.js'; import * as net from 'net'; +import { logger } from '../gitzone.logging.js'; /** * Check if a port is available @@ -58,40 +59,14 @@ export const getProjectName = (): string => { return plugins.path.basename(process.cwd()); }; -/** - * Print colored message to console - */ -export const printMessage = (message: string, color?: 'green' | 'yellow' | 'red' | 'blue' | 'magenta' | 'cyan') => { - const logger = new plugins.smartlog.ConsoleLog(); - - switch (color) { - case 'green': - logger.log('ok', message); - break; - case 'yellow': - logger.log('note', message); - break; - case 'red': - logger.log('error', message); - break; - case 'blue': - case 'magenta': - case 'cyan': - logger.log('info', message); - break; - default: - logger.log('info', message); - } -}; - /** * Print a header with decorative lines */ export const printHeader = (title: string) => { console.log(); - printMessage('═══════════════════════════════════════════════════════════════', 'cyan'); - printMessage(` ${title}`, 'cyan'); - printMessage('═══════════════════════════════════════════════════════════════', 'cyan'); + logger.log('info', '═══════════════════════════════════════════════════════════════'); + logger.log('info', ` ${title}`); + logger.log('info', '═══════════════════════════════════════════════════════════════'); console.log(); }; diff --git a/ts/mod_services/index.ts b/ts/mod_services/index.ts index b532fb0..209846b 100644 --- a/ts/mod_services/index.ts +++ b/ts/mod_services/index.ts @@ -1,6 +1,7 @@ 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: any) => { const serviceManager = new ServiceManager(); @@ -76,8 +77,8 @@ async function handleStart(serviceManager: ServiceManager, service: string) { break; default: - helpers.printMessage(`Unknown service: ${service}`, 'red'); - helpers.printMessage('Use: mongo, s3, or all', 'yellow'); + logger.log('error', `Unknown service: ${service}`); + logger.log('note', 'Use: mongo, s3, or all'); break; } } @@ -104,8 +105,8 @@ async function handleStop(serviceManager: ServiceManager, service: string) { break; default: - helpers.printMessage(`Unknown service: ${service}`, 'red'); - helpers.printMessage('Use: mongo, s3, or all', 'yellow'); + logger.log('error', `Unknown service: ${service}`); + logger.log('note', 'Use: mongo, s3, or all'); break; } } @@ -139,28 +140,28 @@ async function handleRestart(serviceManager: ServiceManager, service: string) { break; default: - helpers.printMessage(`Unknown service: ${service}`, 'red'); + logger.log('error', `Unknown service: ${service}`); break; } } async function handleRemove(serviceManager: ServiceManager) { helpers.printHeader('Removing Containers'); - helpers.printMessage('⚠️ This will remove containers but preserve data', 'yellow'); + 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 { - helpers.printMessage('Cancelled', 'yellow'); + logger.log('note', 'Cancelled'); } } async function handleClean(serviceManager: ServiceManager) { helpers.printHeader('Clean All'); - helpers.printMessage('⚠️ WARNING: This will remove all containers and data!', 'red'); - helpers.printMessage('This action cannot be undone!', 'red'); + 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({ @@ -174,45 +175,45 @@ async function handleClean(serviceManager: ServiceManager) { await serviceManager.removeContainers(); console.log(); await serviceManager.cleanData(); - helpers.printMessage('All cleaned ✓', 'green'); + logger.log('ok', 'All cleaned ✓'); } else { - helpers.printMessage('Cancelled', 'yellow'); + logger.log('note', 'Cancelled'); } } function showHelp() { helpers.printHeader('GitZone Services Manager'); - helpers.printMessage('Usage: gitzone services [command] [options]', 'green'); + logger.log('ok', 'Usage: gitzone services [command] [options]'); console.log(); - helpers.printMessage('Commands:', 'yellow'); - helpers.printMessage(' start [service] Start services (mongo|s3|all)', undefined); - helpers.printMessage(' stop [service] Stop services (mongo|s3|all)', undefined); - helpers.printMessage(' restart [service] Restart services (mongo|s3|all)', undefined); - helpers.printMessage(' status Show service status', undefined); - helpers.printMessage(' config Show current configuration', undefined); - helpers.printMessage(' compass Show MongoDB Compass connection string', undefined); - helpers.printMessage(' logs [service] Show logs (mongo|s3|all) [lines]', undefined); - helpers.printMessage(' remove Remove all containers', undefined); - helpers.printMessage(' clean Remove all containers and data ⚠️', undefined); - helpers.printMessage(' help Show this help message', undefined); + 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', ' remove Remove all containers'); + logger.log('info', ' clean Remove all containers and data ⚠️'); + logger.log('info', ' help Show this help message'); console.log(); - helpers.printMessage('Features:', 'yellow'); - helpers.printMessage(' • Auto-creates .nogit/env.json with smart defaults', undefined); - helpers.printMessage(' • Random ports (20000-30000) to avoid conflicts', undefined); - helpers.printMessage(' • Project-specific containers for multi-project support', undefined); - helpers.printMessage(' • Preserves custom configuration values', undefined); - helpers.printMessage(' • MongoDB Compass connection support', undefined); + 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(); - helpers.printMessage('Examples:', 'yellow'); - helpers.printMessage(' gitzone services start # Start all services', undefined); - helpers.printMessage(' gitzone services start mongo # Start only MongoDB', undefined); - helpers.printMessage(' gitzone services stop # Stop all services', undefined); - helpers.printMessage(' gitzone services status # Check service status', undefined); - helpers.printMessage(' gitzone services config # Show configuration', undefined); - helpers.printMessage(' gitzone services compass # Get MongoDB Compass connection', undefined); - helpers.printMessage(' gitzone services logs mongo 50 # Show last 50 lines of MongoDB logs', undefined); + 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'); } \ No newline at end of file