UNPKG

crapifyme

Version:

Ultra-fast developer productivity CLI tools - remove comments, logs, and more

122 lines 5.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.logsCommand = void 0; const commander_1 = require("commander"); const shared_1 = require("../../shared"); const logic_1 = require("./logic"); exports.logsCommand = new commander_1.Command('logs') .description('Remove console.log statements while preserving important ones') .argument('[paths...]', 'Files or directories to process', ['.']) .option('-k, --keep <patterns>', 'Comma-separated patterns to preserve') .option('-e, --extensions <ext>', 'File extensions to process', 'js,ts,jsx,tsx,vue,svelte,astro') .option('-x, --exclude <patterns>', 'Glob patterns to exclude') .option('--no-preserve-debug', 'Remove console.debug statements') .option('--no-preserve-error', 'Remove console.error statements') .option('--no-preserve-warn', 'Remove console.warn statements') .action(async (paths, options, command) => { const globalOptions = command.parent?.opts() || {}; const logger = new shared_1.Logger(globalOptions.verbose, globalOptions.quiet, globalOptions.json); if (!globalOptions.force) { const vcsResult = (0, shared_1.detectVersionControl)(); if (!vcsResult.detected) { logger.error('No version control system detected in this project or its parent directories.'); logger.error('This tool removes console.log statements from your code, which is a potentially destructive operation.'); logger.error('Use --force to proceed without version control.'); process.exit(shared_1.ExitCode.Error); } if (globalOptions.verbose) { logger.info(`Version control detected: ${vcsResult.type} at ${vcsResult.path}`); } } try { const extensions = options.extensions.split(',').map((e) => e.trim()); const patterns = (0, shared_1.createFilePatterns)(paths, extensions); const excludePatterns = options.exclude ?.split(',') .map((p) => p.trim()) .filter(Boolean) || []; logger.info(`Search patterns: ${patterns.join(', ')}`); if (excludePatterns.length > 0) { logger.info(`Exclude patterns: ${excludePatterns.join(', ')}`); } const files = await (0, shared_1.findFiles)(patterns, excludePatterns); if (files.length === 0) { logger.warn('No files found to process'); logger.info(`Searched in: ${paths.join(', ')}`); logger.info(`Extensions: ${extensions.join(', ')}`); process.exit(shared_1.ExitCode.Success); } logger.info(`Found ${files.length} file${files.length === 1 ? '' : 's'} to process`); if (globalOptions.dryRun) { logger.info('DRY RUN - No files will be modified'); } const processor = new logic_1.LogsProcessor({ keep: options.keep?.split(',').map((p) => p.trim()) || [], preserveDebug: options.preserveDebug, preserveError: options.preserveError, preserveWarn: options.preserveWarn }); const stats = { filesProcessed: 0, itemsRemoved: 0, itemsPreserved: 0, errors: [] }; for (const file of files) { try { const content = await (0, shared_1.readFile)(file); const result = processor.processFile(content); if (result.modified && !globalOptions.dryRun) { await (0, shared_1.writeFile)(file, result.content); } stats.filesProcessed++; stats.itemsRemoved += result.removed; stats.itemsPreserved += result.preserved; if (result.modified) { logger.success(`${file}`); console.log(` ┣ Console logs removed: ${result.removed}`); console.log(` ┣ Console logs preserved: ${result.preserved}`); console.log(` ┗ Status: ${globalOptions.dryRun ? 'DRY RUN - would be modified' : 'Modified'}`); } else if (globalOptions.verbose) { logger.info(`${file} - No console.log statements found`); } } catch (error) { stats.errors.push({ file, error: error.message }); logger.error(`Failed to process ${file}`, error); } } if (globalOptions.json) { logger.json(stats); } else { (0, shared_1.showComplete)(); if (stats.errors.length > 0) { logger.error(`Processing completed with ${stats.errors.length} error${stats.errors.length === 1 ? '' : 's'}`); } else { logger.success('Processing completed successfully'); } const filesModified = stats.itemsRemoved > 0 ? 'with changes' : 'no changes needed'; logger.info(`Files processed: ${stats.filesProcessed} (${filesModified})`); logger.info(`Console logs removed: ${stats.itemsRemoved}`); logger.info(`Console logs preserved: ${stats.itemsPreserved}`); if (globalOptions.dryRun && stats.itemsRemoved > 0) { logger.warn('DRY RUN MODE - No files were actually modified'); logger.info('Remove --dry-run to apply changes'); } } const exitCode = stats.errors.length > 0 ? shared_1.ExitCode.Error : stats.itemsRemoved > 0 ? shared_1.ExitCode.IssuesFound : shared_1.ExitCode.Success; process.exit(exitCode); } catch (error) { logger.error('Fatal error', error); process.exit(shared_1.ExitCode.Error); } }); //# sourceMappingURL=index.js.map