#!/usr/bin/env node const fs = require('fs'); const path = require('path'); const repoRoot = path.resolve(__dirname, '..'); const commonRoot = path.join(repoRoot, 'wwjcloud', 'src', 'common'); function listDirs(dir) { if (!fs.existsSync(dir)) return []; return fs .readdirSync(dir, { withFileTypes: true }) .filter(d => d.isDirectory()) .map(d => d.name); } function hasAnyTsFiles(dir) { if (!fs.existsSync(dir)) return false; const entries = fs.readdirSync(dir, { withFileTypes: true }); for (const e of entries) { const full = path.join(dir, e.name); if (e.isFile() && e.name.endsWith('.ts') && !e.name.endsWith('.d.ts')) return true; if (e.isDirectory() && hasAnyTsFiles(full)) return true; } return false; } function scanModule(moduleName) { const base = path.join(commonRoot, moduleName); const result = { module: moduleName }; // controllers result.controller_admin = hasAnyTsFiles(path.join(base, 'controllers', 'adminapi')); result.controller_api = hasAnyTsFiles(path.join(base, 'controllers', 'api')); // services result.service_admin = hasAnyTsFiles(path.join(base, 'services', 'admin')); result.service_api = hasAnyTsFiles(path.join(base, 'services', 'api')); result.service_core = hasAnyTsFiles(path.join(base, 'services', 'core')); // entities result.entities = hasAnyTsFiles(path.join(base, 'entities')); return result; } function main() { if (!fs.existsSync(commonRoot)) { console.error('common root not found:', commonRoot); process.exit(1); } const modules = listDirs(commonRoot); const rows = modules.map(scanModule); console.log('module,controller_admin,controller_api,service_admin,service_api,service_core,entities'); for (const r of rows) { console.log([ r.module, r.controller_admin ? 'Y' : 'N', r.controller_api ? 'Y' : 'N', r.service_admin ? 'Y' : 'N', r.service_api ? 'Y' : 'N', r.service_core ? 'Y' : 'N', r.entities ? 'Y' : 'N', ].join(',')); } const problems = rows.filter(r => !r.service_admin || !r.controller_admin || !r.entities); if (problems.length) { console.error('\nMissing layers summary:'); for (const p of problems) { const miss = []; if (!p.controller_admin) miss.push('controller_admin'); if (!p.service_admin) miss.push('service_admin'); if (!p.entities) miss.push('entities'); console.error(`- ${p.module}: ${miss.join(' | ')}`); } } } if (require.main === module) { try { main(); } catch (e) { console.error(e); process.exit(1); } }