/**
 * 清理 Vue 文件中的 console.log 调试语句
 * 保留 console.error 和 console.warn
 */

const fs = require('fs');
const path = require('path');

// 需要清理的目录
const targetDirs = [
    'src/views',
    'src/components'
];

// 统计信息
let totalFiles = 0;
let cleanedFiles = 0;
let totalLogsRemoved = 0;

/**
 * 递归遍历目录
 */
function walkDir(dir, callback) {
    const files = fs.readdirSync(dir);
    
    files.forEach(file => {
        const filePath = path.join(dir, file);
        const stat = fs.statSync(filePath);
        
        if (stat.isDirectory()) {
            walkDir(filePath, callback);
        } else if (file.endsWith('.vue') || file.endsWith('.js') || file.endsWith('.ts')) {
            callback(filePath);
        }
    });
}

/**
 * 清理文件中的 console.log
 */
function cleanFile(filePath) {
    totalFiles++;
    
    let content = fs.readFileSync(filePath, 'utf-8');
    const originalContent = content;
    
    // 计算原有的 console.log 数量
    const logCount = (content.match(/console\.log\(/g) || []).length;
    
    if (logCount === 0) {
        return;
    }
    
    // 移除 console.log 语句（保留 console.error 和 console.warn）
    // 匹配整行的 console.log
    content = content.replace(/^[ \t]*console\.log\([^)]*\);?\s*$/gm, '');
    
    // 移除行内的 console.log（可能在其他代码之后）
    content = content.replace(/console\.log\([^)]*\);?\s*/g, '');
    
    // 清理多余的空行（但保留最多2个连续空行）
    content = content.replace(/\n\n\n+/g, '\n\n');
    
    // 如果内容有变化，写回文件
    if (content !== originalContent) {
        fs.writeFileSync(filePath, content, 'utf-8');
        cleanedFiles++;
        totalLogsRemoved += logCount;
        console.log(`✓ 清理 ${path.relative(process.cwd(), filePath)} (移除 ${logCount} 个 console.log)`);
    }
}

// 主函数
console.log('='.repeat(60));
console.log('开始清理前端 console.log 调试语句');
console.log('='.repeat(60));
console.log();

targetDirs.forEach(dir => {
    const fullPath = path.join(__dirname, dir);
    if (fs.existsSync(fullPath)) {
        console.log(`正在扫描目录: ${dir}`);
        walkDir(fullPath, cleanFile);
    } else {
        console.log(`⚠ 目录不存在: ${dir}`);
    }
});

console.log();
console.log('='.repeat(60));
console.log('清理完成！');
console.log('='.repeat(60));
console.log(`总文件数: ${totalFiles}`);
console.log(`清理文件数: ${cleanedFiles}`);
console.log(`移除的 console.log 总数: ${totalLogsRemoved}`);
console.log();
console.log('注意：console.error 和 console.warn 已保留');
console.log('='.repeat(60));

