unused-files-cleaner
Version:
A CLI tool to clean unused files in projects
67 lines (66 loc) • 2.67 kB
JavaScript
;
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');
});
});
}