@ry-krystal/kicad-converter
Version:
专业的KiCad符号文件与JSON互转工具
66 lines (65 loc) • 2.21 kB
JavaScript
/**
* 验证命令实现
* 处理文件验证逻辑
*/
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;
}
}