import chalk from 'chalk' import { execFileSync } from 'child_process' import { dirname, join } from 'path' import { fileURLToPath } from 'url' const __filename = fileURLToPath(import.meta.url) const __dirname = dirname(__filename) /** * 执行单个检查脚本 * @param {string} scriptPath - 脚本路径 * @param {string} description - 检查描述 */ async function runScript(scriptPath, description) { const startTime = performance.now() console.log(chalk.blue(`\n[HuLa ${new Date().toLocaleTimeString()}] 开始${description}...\n`)) try { execFileSync('node', [scriptPath], { stdio: 'inherit' }) const duration = ((performance.now() - startTime) / 1000).toFixed(2) console.log(chalk.green(`\n✅ ${description}完成 (${duration}s)\n`)) return true } catch (_error) { console.error(chalk.red(`\n❌ ${description}失败`)) return false } } async function main() { console.log(chalk.cyan('正在检查HuLa需要的环境配置...\n')) /** @type {CheckItem[]} */ const checks = [ { script: join(__dirname, 'check-local.js'), description: '配置文件检查' }, { script: join(__dirname, 'check-dependencies.js'), description: '环境检查' } ] const startTime = performance.now() for (const check of checks) { const success = await runScript(check.script, check.description) if (!success) { console.error(chalk.red(`\n${check.description}未通过,终止检查流程\n`)) process.exit(1) } } const totalDuration = ((performance.now() - startTime) / 1000).toFixed(2) console.log(chalk.green(`\n✨ 所有检查通过!总用时:${totalDuration}s\n`)) } main().catch((error) => { console.error(chalk.red('\n检查过程中发生错误:')) console.error(chalk.yellow(error.stack || error)) process.exit(1) })