Untitled
unknown
javascript
12 days ago
2.8 kB
3
Indexable
// generate-api.js const { exec } = require('child_process'); const { promisify } = require('util'); const fs = require('fs').promises; const path = require('path'); const execAsync = promisify(exec); // Цвета для консоли const colors = { reset: '\x1b[0m', green: '\x1b[32m', blue: '\x1b[34m', red: '\x1b[31m', }; async function generateApi(filePath) { const command = `export NODE_TLS_REJECT_UNAUTHORIZED=0 && npx @rtk-query/codegen-openapi ${filePath}`; try { console.log(`${colors.blue}Запуск генерации для:${colors.reset} ${filePath}`); const { stdout, stderr } = await execAsync(command); if (stdout) { console.log(`${colors.green}✓ Успешно выполнен:${colors.reset} ${filePath}`); console.log(stdout); } if (stderr) { console.error(`${colors.red}Предупреждения:${colors.reset}\n${stderr}`); } return true; } catch (error) { console.error(`${colors.red}✗ Ошибка при выполнении:${colors.reset} ${filePath}`); console.error(error.message); return false; } } // Функция для поиска всех файлов config async function findGenerateFiles(dir) { const files = []; async function scan(directory) { const entries = await fs.readdir(directory, { withFileTypes: true }); for (const entry of entries) { const fullPath = path.join(directory, entry.name); if (entry.isDirectory()) { await scan(fullPath); } else if (entry.name === 'generate.ts') { files.push(fullPath); } } } await scan(dir); return files; } // Главная функция async function main() { try { // Проверяем существование папки src try { await fs.access('src'); } catch { console.error('Папка src не найдена!'); process.exit(1); } console.log('Начинаем генерацию API...'); console.log('----------------------------------------'); const files = await findGenerateFiles('src'); if (files.length === 0) { return; } const results = await Promise.all(files.map((file) => generateApi(file))); // Подсчитываем результаты const successful = results.filter(Boolean).length; const failed = results.length - successful; console.log(`${colors.green}Генерация завершена!${colors.reset}`); console.log(`Успешно: ${successful}`); if (failed > 0) { console.log(`${colors.red}С ошибками: ${failed}${colors.reset}`); } } catch (error) { console.error(`${colors.red}Критическая ошибка:${colors.reset}`, error); process.exit(1); } } // Запускаем скрипт main();
Editor is loading...
Leave a Comment