#!/usr/bin/env node /** * Configuration validation script * Validates .env file has required values */ const fs = require('fs'); const path = require('path'); const envPath = path.join(__dirname, '..', '.env'); if (!fs.existsSync(envPath)) { console.error('āŒ .env file not found'); console.log('šŸ’” Copy env.template to .env and configure:'); console.log(' cp env.template .env'); process.exit(1); } const envContent = fs.readFileSync(envPath, 'utf8'); const envVars = {}; envContent.split('\n').forEach((line) => { const trimmed = line.trim(); if (trimmed && !trimmed.startsWith('#')) { const [key, ...valueParts] = trimmed.split('='); if (key) { envVars[key.trim()] = valueParts.join('=').trim(); } } }); const requiredVars = [ 'HTTP_PORT', 'WS_PORT', 'BESU_HTTP_URLS', 'BESU_WS_URLS', 'CHAIN_ID', 'WEB3SIGNER_URL', 'REDIS_HOST', 'REDIS_PORT', ]; const missingVars = requiredVars.filter((varName) => { const value = envVars[varName]; return !value || value === '' || value.includes('XXX'); }); if (missingVars.length > 0) { console.error('āŒ Missing or incomplete configuration:'); missingVars.forEach((varName) => { console.error(` - ${varName}`); }); console.log('\nšŸ’” Please edit .env and set all required values'); process.exit(1); } console.log('āœ… Configuration validation passed'); console.log(` HTTP Port: ${envVars.HTTP_PORT}`); console.log(` WS Port: ${envVars.WS_PORT}`); console.log(` Chain ID: ${envVars.CHAIN_ID}`); console.log(` Besu HTTP: ${envVars.BESU_HTTP_URLS}`); console.log(` Redis: ${envVars.REDIS_HOST}:${envVars.REDIS_PORT}`);