UNPKG

unused-files-cleaner

Version:
67 lines (66 loc) 2.67 kB
#!/usr/bin/env node "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const commander_1 = require("commander"); const scanner_1 = require("./scanner"); const cleaner_1 = require("./cleaner"); const chalk_1 = __importDefault(require("chalk")); const program = new commander_1.Command(); program .name('unused-files-cleaner') .description('CLI tool to clean unused files in projects') .version('1.0.0') .option('-d, --dir <path>', 'directory to scan', process.cwd()) .option('-p, --preview', 'preview mode - only show files to be deleted', false) .option('-i, --ignore <patterns>', 'patterns to ignore (comma separated)') .option('-v, --verbose', 'show detailed logs', false) .action(async (options) => { try { const ignorePatterns = options.ignore ? options.ignore.split(',') : []; console.log(chalk_1.default.blue('Starting scan...')); const emptyFiles = await (0, scanner_1.scanEmptyFiles)(options.dir, { ignore: ignorePatterns, verbose: options.verbose }); if (emptyFiles.length === 0) { console.log(chalk_1.default.green('No empty files found!')); return; } console.log(chalk_1.default.yellow('\nFound empty files:')); emptyFiles.forEach(file => { console.log(chalk_1.default.yellow(`- ${file}`)); }); if (options.preview) { console.log(chalk_1.default.blue('\nPreview mode - no files will be deleted')); return; } const shouldDelete = await askForConfirmation('Do you want to delete these files?'); if (shouldDelete) { await (0, cleaner_1.deleteFiles)(emptyFiles, options.verbose); console.log(chalk_1.default.green(`\nSuccessfully deleted ${emptyFiles.length} empty files!`)); } else { console.log(chalk_1.default.blue('\nOperation cancelled')); } } catch (error) { console.error(chalk_1.default.red('Error:'), error instanceof Error ? error.message : 'Unknown error'); process.exit(1); } }); program.parse(); async function askForConfirmation(message) { const readline = require('readline').createInterface({ input: process.stdin, output: process.stdout }); return new Promise((resolve) => { readline.question(`${message} (y/N) `, (answer) => { readline.close(); resolve(answer.toLowerCase() === 'y'); }); }); }