/** * Service config get command */ import { getContainerServiceByServiceId } from '../../services/container-service'; import { getArg, validateRequiredArgs } from '../parser'; import type { CommandResult } from '../types'; /** * Handle service config get command * * Usage: celilo service config get [key] * * @param args - Command arguments * @returns Command result */ export async function handleServiceConfigGet(args: string[]): Promise { const error = validateRequiredArgs(args, 1); if (error) { return { success: false, error: `${error}\n\nUsage: celilo service config get [key]`, }; } const serviceId = getArg(args, 0); const key = getArg(args, 1); if (!serviceId) { return { success: false, error: 'Service ID is required', }; } const service = await getContainerServiceByServiceId(serviceId); if (!service) { return { success: false, error: `Service not found: ${serviceId}`, }; } // Configurable fields const configurableFields: Record = { name: service.name, zones: service.zones, providerConfig: service.providerConfig, }; if (key) { // Get specific config value if (!(key in configurableFields)) { const validKeys = Object.keys(configurableFields).join(', '); return { success: false, error: `Invalid config key '${key}' for service.\n\nValid keys: ${validKeys}`, }; } const value = configurableFields[key]; const formatted = typeof value === 'object' ? JSON.stringify(value, null, 2) : String(value); return { success: true, message: `${key} = ${formatted}`, data: { key, value }, }; } // Get all config for service const lines = [`Configuration for ${serviceId}:`, '']; for (const [configKey, value] of Object.entries(configurableFields)) { const formatted = typeof value === 'object' ? JSON.stringify(value) : String(value); lines.push(`${configKey} = ${formatted}`); } return { success: true, message: lines.join('\n'), data: configurableFields, }; }