UNPKG

remove-logs-cli

Version:

CLI tool to remove console.log statements from JavaScript files

115 lines (92 loc) 3.39 kB
const fs = require('fs'); const path = require('path'); const { ProcessingStats } = require('../utils/stats'); const { createProgressBar } = require('../utils/progress'); const { checkGitStatus } = require('../utils/git'); const { generateReport } = require('../reports/console'); const { loadConfig } = require('../config'); const chalk = require('chalk'); async function restoreCommand(options) { const stats = new ProcessingStats(); const config = loadConfig(); const targetDir = options.path || process.cwd(); const backupDir = path.join(targetDir, config.backupDir); if (!fs.existsSync(backupDir)) { console.log(chalk.yellow('No backup directory found at:', backupDir)); return; } if (!options.dryRun && !checkGitStatus()) { console.log(chalk.yellow('Warning: Git working directory is not clean')); } console.log(chalk.blue('Scanning backup directory:'), backupDir); function findBackupFiles(dir) { let results = []; const items = fs.readdirSync(dir); for (const item of items) { const fullPath = path.join(dir, item); const stat = fs.statSync(fullPath); if (stat.isDirectory()) { results = results.concat(findBackupFiles(fullPath)); } else { results.push(fullPath); } } return results; } const backupFiles = findBackupFiles(backupDir); if (backupFiles.length === 0) { console.log(chalk.yellow('No backup files found.')); return; } console.log(chalk.green(`\nFound ${backupFiles.length} backup files`)); const progress = createProgressBar(); progress.start(backupFiles.length, 0); for (const backupFile of backupFiles) { try { const relativePath = path.relative(backupDir, backupFile); const targetFile = path.join(targetDir, relativePath); if (options.dryRun) { console.log(chalk.cyan(`\nWould restore: ${relativePath}`)); if (options.verbose) { const content = fs.readFileSync(backupFile, 'utf8'); console.log(chalk.gray(content)); } } else { fs.mkdirSync(path.dirname(targetFile), { recursive: true }); fs.copyFileSync(backupFile, targetFile); if (options.cleanup) { fs.unlinkSync(backupFile); let dir = path.dirname(backupFile); while (dir !== backupDir) { if (fs.readdirSync(dir).length === 0) { fs.rmdirSync(dir); dir = path.dirname(dir); } else { break; } } } stats.modified++; } stats.processed++; } catch (error) { stats.addError(backupFile, error); } progress.increment(); } progress.stop(); const report = generateReport(stats.generateReport()); console.log('\n' + report); if (options.dryRun) { console.log(chalk.cyan('\nDry run completed. No files were restored.')); } else { console.log(chalk.green('\nRestore completed successfully.')); if (stats.errors.length > 0) { console.log(chalk.yellow('\nSome files had errors. Check the report for details.')); } if (options.cleanup) { console.log(chalk.green('Backup files have been cleaned up.')); } } } module.exports = { restoreCommand };