weewoo
This commit is contained in:
268
scripts/organize-lib-folder.js
Normal file
268
scripts/organize-lib-folder.js
Normal file
@@ -0,0 +1,268 @@
|
||||
/**
|
||||
* Script to organize the lib folder by moving files into appropriate directories
|
||||
* Run with: node scripts/organize-lib-folder.js
|
||||
*/
|
||||
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
// File organization plan
|
||||
const ORGANIZATION_PLAN = {
|
||||
// Files to move to utils folder
|
||||
'utils': [
|
||||
{ source: 'lib/utils.ts', destination: 'lib/utils/general.ts' },
|
||||
{ source: 'lib/auth-utils.ts', destination: 'lib/utils/auth.ts' },
|
||||
{ source: 'lib/git-utils.ts', destination: 'lib/utils/git.ts' },
|
||||
{ source: 'lib/styles.ts', destination: 'lib/utils/styles.ts' }
|
||||
],
|
||||
|
||||
// Files to move to types folder
|
||||
'types': [
|
||||
{ source: 'lib/types.ts', destination: 'lib/types/index.ts' }
|
||||
],
|
||||
|
||||
// Files to keep in lib root (core API files)
|
||||
'keep': [
|
||||
'lib/api.ts',
|
||||
'lib/api-client.ts',
|
||||
'lib/server-api.ts',
|
||||
'lib/README.md'
|
||||
],
|
||||
|
||||
// Files to remove (already migrated to services or consolidated)
|
||||
'remove': [
|
||||
'lib/client-utils.ts',
|
||||
'lib/client-service.ts',
|
||||
'lib/data-service.ts',
|
||||
'lib/productData.ts',
|
||||
'lib/shippingHelper.ts',
|
||||
'lib/stats-service.ts',
|
||||
'lib/storeHelper.ts',
|
||||
'lib/server-service.ts',
|
||||
'lib/api-utils.ts'
|
||||
]
|
||||
};
|
||||
|
||||
// Create backup directory
|
||||
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}`);
|
||||
}
|
||||
|
||||
// Make sure target directories exist
|
||||
function createDirectories() {
|
||||
const directories = ['lib/utils', 'lib/types', 'lib/services'];
|
||||
|
||||
directories.forEach(dir => {
|
||||
const fullPath = path.join(__dirname, '..', dir);
|
||||
if (!fs.existsSync(fullPath)) {
|
||||
fs.mkdirSync(fullPath, { recursive: true });
|
||||
console.log(`Created directory: ${dir}`);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Backup a file before moving or removing it
|
||||
function backupFile(filePath) {
|
||||
const fullPath = path.join(__dirname, '..', filePath);
|
||||
|
||||
if (!fs.existsSync(fullPath)) {
|
||||
console.log(`⚠️ ${filePath} doesn't exist, skipping backup`);
|
||||
return false;
|
||||
}
|
||||
|
||||
try {
|
||||
const backupPath = path.join(BACKUP_DIR, path.basename(filePath));
|
||||
fs.copyFileSync(fullPath, backupPath);
|
||||
console.log(`✅ Backed up: ${filePath} to backup folder`);
|
||||
return true;
|
||||
} catch (error) {
|
||||
console.error(`❌ Failed to backup ${filePath}:`, error.message);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Move a file to its new location
|
||||
function moveFile(source, destination) {
|
||||
const sourcePath = path.join(__dirname, '..', source);
|
||||
const destPath = path.join(__dirname, '..', destination);
|
||||
|
||||
if (!fs.existsSync(sourcePath)) {
|
||||
console.log(`⚠️ Source file ${source} doesn't exist, skipping`);
|
||||
return false;
|
||||
}
|
||||
|
||||
try {
|
||||
// Ensure the destination directory exists
|
||||
const destDir = path.dirname(destPath);
|
||||
if (!fs.existsSync(destDir)) {
|
||||
fs.mkdirSync(destDir, { recursive: true });
|
||||
}
|
||||
|
||||
// Read content from source
|
||||
const content = fs.readFileSync(sourcePath, 'utf8');
|
||||
|
||||
// Write to destination
|
||||
fs.writeFileSync(destPath, content);
|
||||
console.log(`✅ Moved: ${source} → ${destination}`);
|
||||
|
||||
// Remove the source file
|
||||
fs.unlinkSync(sourcePath);
|
||||
return true;
|
||||
} catch (error) {
|
||||
console.error(`❌ Error moving ${source} to ${destination}:`, error.message);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Remove a file
|
||||
function removeFile(filePath) {
|
||||
const fullPath = path.join(__dirname, '..', filePath);
|
||||
|
||||
if (!fs.existsSync(fullPath)) {
|
||||
console.log(`⚠️ ${filePath} doesn't exist, skipping removal`);
|
||||
return false;
|
||||
}
|
||||
|
||||
try {
|
||||
fs.unlinkSync(fullPath);
|
||||
console.log(`🗑️ Removed: ${filePath}`);
|
||||
return true;
|
||||
} catch (error) {
|
||||
console.error(`❌ Failed to remove ${filePath}:`, error.message);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Update imports in the utils/index.ts file
|
||||
function updateUtilsIndex() {
|
||||
const indexPath = path.join(__dirname, '..', 'lib/utils/index.ts');
|
||||
|
||||
try {
|
||||
const content = `/**
|
||||
* Main utilities index file
|
||||
* Re-exports all utility functions from their respective modules
|
||||
*/
|
||||
|
||||
// Re-export general utils
|
||||
export * from './general';
|
||||
|
||||
// Re-export auth utils
|
||||
export * from './auth';
|
||||
|
||||
// Re-export git utils
|
||||
export * from './git';
|
||||
|
||||
// Re-export style utils
|
||||
export * from './styles';
|
||||
`;
|
||||
|
||||
fs.writeFileSync(indexPath, content);
|
||||
console.log(`✅ Updated lib/utils/index.ts with proper exports`);
|
||||
return true;
|
||||
} catch (error) {
|
||||
console.error(`❌ Failed to update utils index:`, error.message);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Main function to organize files
|
||||
function organizeLibFolder() {
|
||||
console.log('Starting lib folder organization...\n');
|
||||
|
||||
// Create necessary directories
|
||||
createDirectories();
|
||||
|
||||
// Stats to track progress
|
||||
const stats = {
|
||||
backed_up: 0,
|
||||
moved: 0,
|
||||
removed: 0,
|
||||
errors: 0
|
||||
};
|
||||
|
||||
// First, back up all files we'll be modifying
|
||||
const allFiles = [
|
||||
...ORGANIZATION_PLAN.utils.map(item => item.source),
|
||||
...ORGANIZATION_PLAN.types.map(item => item.source),
|
||||
...ORGANIZATION_PLAN.remove
|
||||
];
|
||||
|
||||
allFiles.forEach(file => {
|
||||
if (backupFile(file)) {
|
||||
stats.backed_up++;
|
||||
} else {
|
||||
stats.errors++;
|
||||
}
|
||||
});
|
||||
|
||||
// Move files to utils folder
|
||||
ORGANIZATION_PLAN.utils.forEach(item => {
|
||||
if (moveFile(item.source, item.destination)) {
|
||||
stats.moved++;
|
||||
} else {
|
||||
stats.errors++;
|
||||
}
|
||||
});
|
||||
|
||||
// Move files to types folder
|
||||
ORGANIZATION_PLAN.types.forEach(item => {
|
||||
if (moveFile(item.source, item.destination)) {
|
||||
stats.moved++;
|
||||
} else {
|
||||
stats.errors++;
|
||||
}
|
||||
});
|
||||
|
||||
// Remove deprecated files
|
||||
ORGANIZATION_PLAN.remove.forEach(file => {
|
||||
if (removeFile(file)) {
|
||||
stats.removed++;
|
||||
} else {
|
||||
stats.errors++;
|
||||
}
|
||||
});
|
||||
|
||||
// Update the utils index file
|
||||
updateUtilsIndex();
|
||||
|
||||
// Summary
|
||||
console.log(`\nOrganization complete!`);
|
||||
console.log(`✅ ${stats.backed_up} files backed up`);
|
||||
console.log(`✅ ${stats.moved} files moved to appropriate folders`);
|
||||
console.log(`✅ ${stats.removed} deprecated files removed`);
|
||||
|
||||
if (stats.errors > 0) {
|
||||
console.log(`❌ ${stats.errors} errors encountered (see above)`);
|
||||
}
|
||||
|
||||
console.log(`\nBackups are located in: lib/deprecated-backup`);
|
||||
console.log(`You can delete this directory when you are confident the migration is complete.`);
|
||||
}
|
||||
|
||||
// Show confirmation before proceeding
|
||||
console.log(`
|
||||
✨ Lib Folder Organization Tool ✨
|
||||
|
||||
This script will organize your lib folder as follows:
|
||||
|
||||
1. Move utility files to lib/utils/
|
||||
${ORGANIZATION_PLAN.utils.map(f => `\n - ${f.source} → ${f.destination}`).join('')}
|
||||
|
||||
2. Move type files to lib/types/
|
||||
${ORGANIZATION_PLAN.types.map(f => `\n - ${f.source} → ${f.destination}`).join('')}
|
||||
|
||||
3. Keep core API files in the lib root
|
||||
${ORGANIZATION_PLAN.keep.map(f => `\n - ${f}`).join('')}
|
||||
|
||||
4. Remove deprecated files
|
||||
${ORGANIZATION_PLAN.remove.map(f => `\n - ${f}`).join('')}
|
||||
|
||||
All files will be backed up to lib/deprecated-backup before any changes.
|
||||
|
||||
To proceed, edit this script and uncomment the organizeLibFolder() call at the bottom.
|
||||
`);
|
||||
|
||||
// Uncomment this line to actually organize the folder
|
||||
organizeLibFolder();
|
||||
Reference in New Issue
Block a user