159 lines
4.6 KiB
JavaScript
159 lines
4.6 KiB
JavaScript
/**
|
|
* Script to help clean up deprecated files in the codebase
|
|
* Run with: node scripts/cleanup-deprecated-files.js
|
|
*/
|
|
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
// List of files that are now deprecated and can be removed/archived
|
|
const DEPRECATED_FILES = [
|
|
// API Client files that are now merged into api-client.ts
|
|
'lib/client-utils.ts',
|
|
'lib/client-service.ts',
|
|
'lib/data-service.ts',
|
|
|
|
// Service files that are now in the services directory
|
|
'lib/productData.ts',
|
|
'lib/shippingHelper.ts',
|
|
'lib/stats-service.ts',
|
|
'lib/storeHelper.ts',
|
|
|
|
// Server API files now in server-api.ts
|
|
'lib/server-service.ts',
|
|
|
|
// Files that may contain functionality already migrated
|
|
'lib/api-utils.ts',
|
|
];
|
|
|
|
// Create backup directory if it doesn't exist
|
|
const BACKUP_DIR = path.join(__dirname, '../lib/deprecated-backup');
|
|
if (!fs.existsSync(BACKUP_DIR)) {
|
|
fs.mkdirSync(BACKUP_DIR, { recursive: true });
|
|
console.log(`Created backup directory: ${BACKUP_DIR}`);
|
|
}
|
|
|
|
// Process each deprecated file
|
|
function processDeprecatedFiles() {
|
|
console.log('Analyzing deprecated files...\n');
|
|
|
|
const results = {
|
|
safe: [],
|
|
notFound: [],
|
|
mayNeedMigration: []
|
|
};
|
|
|
|
DEPRECATED_FILES.forEach(filePath => {
|
|
const fullPath = path.join(__dirname, '..', filePath);
|
|
|
|
if (!fs.existsSync(fullPath)) {
|
|
results.notFound.push(filePath);
|
|
return;
|
|
}
|
|
|
|
// Check if this file is safe to remove (has been migrated)
|
|
const isSafeToRemove = checkIfSafeToRemove(filePath);
|
|
|
|
if (isSafeToRemove) {
|
|
results.safe.push(filePath);
|
|
} else {
|
|
results.mayNeedMigration.push(filePath);
|
|
}
|
|
});
|
|
|
|
return results;
|
|
}
|
|
|
|
// Check if a file's functionality has been migrated
|
|
function checkIfSafeToRemove(filePath) {
|
|
// Simple heuristic - files that we're confident have been fully migrated
|
|
const definitelyMigrated = [
|
|
'lib/client-utils.ts',
|
|
'lib/client-service.ts',
|
|
'lib/data-service.ts',
|
|
'lib/productData.ts',
|
|
'lib/shippingHelper.ts',
|
|
'lib/stats-service.ts',
|
|
'lib/server-service.ts',
|
|
];
|
|
|
|
return definitelyMigrated.includes(filePath);
|
|
}
|
|
|
|
// Create a backup of a file before removing it
|
|
function backupFile(filePath) {
|
|
const fullPath = path.join(__dirname, '..', filePath);
|
|
const backupPath = path.join(BACKUP_DIR, path.basename(filePath));
|
|
|
|
try {
|
|
const content = fs.readFileSync(fullPath, 'utf8');
|
|
fs.writeFileSync(backupPath, content);
|
|
console.log(`✅ Backed up: ${filePath} to ${path.basename(backupPath)}`);
|
|
return true;
|
|
} catch (error) {
|
|
console.error(`❌ Failed to backup ${filePath}:`, error.message);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// Remove a file from the codebase
|
|
function removeFile(filePath) {
|
|
const fullPath = path.join(__dirname, '..', filePath);
|
|
|
|
try {
|
|
fs.unlinkSync(fullPath);
|
|
console.log(`🗑️ Removed: ${filePath}`);
|
|
return true;
|
|
} catch (error) {
|
|
console.error(`❌ Failed to remove ${filePath}:`, error.message);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// Main execution function
|
|
function main() {
|
|
const results = processDeprecatedFiles();
|
|
|
|
console.log('\n=== ANALYSIS RESULTS ===\n');
|
|
|
|
if (results.notFound.length > 0) {
|
|
console.log('📂 Files not found:');
|
|
results.notFound.forEach(f => console.log(` - ${f}`));
|
|
console.log('');
|
|
}
|
|
|
|
if (results.mayNeedMigration.length > 0) {
|
|
console.log('⚠️ Files that may need migration:');
|
|
results.mayNeedMigration.forEach(f => console.log(` - ${f}`));
|
|
console.log('\nCheck these files manually to ensure all functionality has been migrated.\n');
|
|
}
|
|
|
|
if (results.safe.length > 0) {
|
|
console.log('✅ Files safe to remove (already migrated):');
|
|
results.safe.forEach(f => console.log(` - ${f}`));
|
|
|
|
console.log('\nWhat would you like to do with these files?');
|
|
console.log('1. Back up and remove now');
|
|
console.log('2. Just back up');
|
|
console.log('3. Do nothing for now');
|
|
|
|
// In a real script, you'd get user input here
|
|
// For now, just demonstrate with a backup
|
|
console.log('\nDemo mode: backing up files...\n');
|
|
|
|
results.safe.forEach(filePath => {
|
|
if (backupFile(filePath)) {
|
|
console.log(`To remove ${filePath}, run: rm "${path.join(__dirname, '..', filePath)}"`);
|
|
}
|
|
});
|
|
}
|
|
|
|
console.log('\n=== MANUAL CLEANUP INSTRUCTIONS ===\n');
|
|
console.log('After verifying imports have been updated with find-deprecated-imports.js:');
|
|
console.log('1. Remove the backed up files using the commands above');
|
|
console.log('2. Check any remaining files in the lib/ directory to see if they should be organized');
|
|
console.log('3. Update imports in files using the main API module');
|
|
}
|
|
|
|
// Run the script
|
|
main();
|