UNPKG

@ry-krystal/kicad-converter

Version:

专业的KiCad符号文件与JSON互转工具

66 lines (65 loc) 2.21 kB
/** * 验证命令实现 * 处理文件验证逻辑 */ import { readFileSync, existsSync } from 'fs'; import { extname } from 'path'; // 导入验证器 import { validateKiCad, validateJson } from '../../core/index.js'; import { createLogger } from '../utils/index.js'; /** * 执行验证命令 */ export async function validateCommand(options) { const logger = createLogger(options.verbose, options.quiet); try { if (!options.input) { logger.error('请指定要验证的文件'); return false; } if (!existsSync(options.input)) { logger.error(`文件不存在: ${options.input}`); return false; } // 读取文件内容 const content = readFileSync(options.input, 'utf8'); const ext = extname(options.input).toLowerCase(); logger.info(`开始验证文件: ${options.input}`); // 根据文件扩展名选择验证器 let validationResult; if (ext === '.kicad_sym') { logger.debug('使用KiCad验证器'); validationResult = await validateKiCad(content); } else if (ext === '.json') { logger.debug('使用JSON验证器'); validationResult = await validateJson(content); } else { logger.error(`不支持的文件类型: ${ext}`); return false; } // 显示验证结果 if (validationResult.isValid) { logger.success('验证通过'); } else { logger.error('验证失败'); validationResult.errors.forEach((error, index) => { console.log(` ${index + 1}. ${error}`); }); } // 显示警告 if (validationResult.warnings.length > 0) { logger.warn('警告:'); validationResult.warnings.forEach((warning, index) => { console.log(` ${index + 1}. ${warning}`); }); } return validationResult.isValid; } catch (error) { logger.error(`验证过程中发生错误: ${error instanceof Error ? error.message : String(error)}`); return false; } }