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

// 配置参数
const config = {
  inputDir: './pages',       // 要扫描的目录
  outputFile: './zh-CN.js', // 输出文件路径
  extensions: ['.js', '.vue'], // 要处理的文件扩展名
  chineseRegex: /[\u4e00-\u9fa5\u3000-\u303f\uff01-\uff5e\u201c-\u201d\u3008-\u3011]+/g
}

// 存储中文内容的 Set（自动去重）
const chineseSet = new Set()

/**
 * 递归遍历目录
 */
function scanDirectory(dir) {
  const files = fs.readdirSync(dir)

  files.forEach(file => {
    const filePath = path.join(dir, file)
    const stat = fs.statSync(filePath)

    if (stat.isDirectory()) {
      scanDirectory(filePath)
    } else if (stat.isFile() &&config.extensions.includes(path.extname(filePath).toLowerCase()))
    {
      processFile(filePath)
    }
  })
}

/**
 * 处理单个文件
 */
function processFile(filePath) {
  try {
    const content = fs.readFileSync(filePath, 'utf-8')
    const matches = content.match(config.chineseRegex)

    if (matches) {
      matches.forEach(text => chineseSet.add(text))
    }
  } catch (err) {
    console.error(`Error processing file ${filePath}:`, err)
  }
}

/**
 * 生成输出文件
 */
function generateOutput() {
  const output = `// 自动生成的中文字符列表
module.exports = ${JSON.stringify([...chineseSet], null, 2)}`

  fs.writeFileSync(config.outputFile, output, 'utf-8')
  console.log(`找到 ${chineseSet.size} 个中文字符，已保存到 ${config.outputFile}`)
}

// 执行主流程
scanDirectory(config.inputDir)
generateOutput()