replace-console-logs.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #!/usr/bin/env node
  2. /**
  3. * Script to replace console.* calls with logger.* calls
  4. * Intelligently maps console levels to logger levels
  5. */
  6. const fs = require('fs');
  7. const path = require('path');
  8. // Files to process
  9. const files = [
  10. 'src/main.js',
  11. 'src/download-manager.js',
  12. 'src/security-utils.js'
  13. ];
  14. function processFile(filePath) {
  15. console.log(`Processing ${filePath}...`);
  16. let content = fs.readFileSync(filePath, 'utf8');
  17. let changes = 0;
  18. // Count occurrences before
  19. const beforeCount = (content.match(/console\.(log|warn|error|info)/g) || []).length;
  20. // Replace patterns
  21. const replacements = [
  22. // console.error with Error objects - extract message
  23. { pattern: /console\.error\((.*?),\s*error\)/g, replacement: 'logger.error($1, error.message)' },
  24. // console.error with simple messages
  25. { pattern: /console\.error\((.*?)\)/g, replacement: 'logger.error($1)' },
  26. // console.warn - keep as warn
  27. { pattern: /console\.warn\((.*?)\)/g, replacement: 'logger.warn($1)' },
  28. // console.log with debug symbols (✓, ✗, 🚀, ❌, etc.) - these are debug logs
  29. { pattern: /console\.log\((['"`])(?:✓|✗|🚀|❌|Starting|Fetching|Adding|Updated|Extracted|Processing|Cleaned)/g, replacement: 'logger.debug($1' },
  30. // console.log with important operations - map to info
  31. { pattern: /console\.log\((.*?)\)/g, replacement: 'logger.debug($1)' },
  32. // console.info - keep as info
  33. { pattern: /console\.info\((.*?)\)/g, replacement: 'logger.info($1)' }
  34. ];
  35. replacements.forEach(({ pattern, replacement }) => {
  36. const matches = content.match(pattern);
  37. if (matches) {
  38. content = content.replace(pattern, replacement);
  39. changes += matches.length;
  40. }
  41. });
  42. // Count occurrences after
  43. const afterCount = (content.match(/console\.(log|warn|error|info)/g) || []).length;
  44. fs.writeFileSync(filePath, content, 'utf8');
  45. console.log(` ✓ ${filePath}: ${beforeCount - afterCount} console.* replaced (${afterCount} remaining)`);
  46. return { file: filePath, changes, remaining: afterCount };
  47. }
  48. // Process all files
  49. const results = files.map(processFile);
  50. // Summary
  51. console.log('\n=== Summary ===');
  52. results.forEach(({ file, changes, remaining }) => {
  53. console.log(`${path.basename(file)}: ${changes} changes, ${remaining} remaining`);
  54. });
  55. const totalRemaining = results.reduce((sum, r) => sum + r.remaining, 0);
  56. if (totalRemaining > 0) {
  57. console.log(`\n⚠️ ${totalRemaining} console.* statements still need manual review`);
  58. } else {
  59. console.log('\n✅ All console.* statements replaced!');
  60. }