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

/**
 * 递归删除空目录
 * @param {string} dirPath - 要检查的目录路径
 * @param {boolean} dryRun - 是否只打印不删除
 */
function removeEmptyDirectories(dirPath, dryRun = false) {
  try {
    // 读取目录内容
    const files = fs.readdirSync(dirPath);
    
    // 递归检查子目录
    for (const file of files) {
      const fullPath = path.join(dirPath, file);
      const stat = fs.statSync(fullPath);
      
      if (stat.isDirectory()) {
        removeEmptyDirectories(fullPath, dryRun);
      }
    }
    
    // 再次读取目录内容，因为子目录可能已经被删除
    const updatedFiles = fs.readdirSync(dirPath);
    
    // 如果目录为空
    if (updatedFiles.length === 0) {
      console.log(`${dryRun ? 'Would remove' : 'Removing'} empty directory: ${dirPath}`);
      if (!dryRun) {
        fs.rmdirSync(dirPath);
      }
    }
  } catch (error) {
    console.error(`Error processing directory ${dirPath}:`, error.message);
  }
}

/**
 * 主函数
 */
function main() {
  // 获取项目根目录
  const projectRoot = path.resolve(__dirname, '..');
  
  console.log('Starting to remove empty directories...');
  console.log(`Project root: ${projectRoot}`);
  console.log('====================================');
  
  // 执行删除操作
  removeEmptyDirectories(projectRoot);
  
  console.log('====================================');
  console.log('Empty directory cleanup completed!');
}

// 运行主函数
if (require.main === module) {
  main();
}

module.exports = removeEmptyDirectories;