82 lines
No EOL
2.3 KiB
TypeScript
Executable file
82 lines
No EOL
2.3 KiB
TypeScript
Executable file
#!/usr/bin/env node
|
|
|
|
import { promises as fs } from 'fs';
|
|
import path from 'path';
|
|
import { rimraf } from 'rimraf';
|
|
|
|
// Parse command line arguments
|
|
const args = process.argv.slice(2);
|
|
const DRY_RUN = args.includes('--dry-run');
|
|
const VERBOSE = args.includes('--verbose');
|
|
|
|
// Configuration - use the same paths as in fetch-content.mts
|
|
const CONTENT_DIR = path.join(process.cwd(), 'content');
|
|
const PUBLIC_DIR = path.join(process.cwd(), 'public');
|
|
const LOCAL_BLOG_DIR = path.join(CONTENT_DIR, 'blogs');
|
|
const LOCAL_BLOG_IMAGES_DIR = path.join(PUBLIC_DIR, 'blog');
|
|
|
|
/**
|
|
* Checks if a directory exists
|
|
*/
|
|
async function directoryExists(directory: string): Promise<boolean> {
|
|
try {
|
|
const stats = await fs.stat(directory);
|
|
return stats.isDirectory();
|
|
} catch (error) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Removes a directory and all its contents
|
|
*/
|
|
async function removeDirectory(directory: string): Promise<void> {
|
|
if (DRY_RUN) {
|
|
console.log(`[DRY RUN] Would remove directory: ${directory}`);
|
|
return;
|
|
}
|
|
|
|
try {
|
|
await rimraf(directory);
|
|
console.log(`Removed directory: ${directory}`);
|
|
} catch (error) {
|
|
console.error(`Error removing directory ${directory}:`, error);
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Cleans up the blog content and images
|
|
*/
|
|
async function cleanupContent(): Promise<void> {
|
|
console.log('Starting content cleanup...');
|
|
if (DRY_RUN) {
|
|
console.log('*** DRY RUN MODE - No files will be deleted ***');
|
|
}
|
|
|
|
try {
|
|
// Check and clean up blog directory
|
|
if (await directoryExists(LOCAL_BLOG_DIR)) {
|
|
console.log(`Found blog directory: ${LOCAL_BLOG_DIR}`);
|
|
await removeDirectory(LOCAL_BLOG_DIR);
|
|
} else if (VERBOSE) {
|
|
console.log(`Blog directory does not exist: ${LOCAL_BLOG_DIR}`);
|
|
}
|
|
|
|
// Check and clean up blog images directory
|
|
if (await directoryExists(LOCAL_BLOG_IMAGES_DIR)) {
|
|
console.log(`Found blog images directory: ${LOCAL_BLOG_IMAGES_DIR}`);
|
|
await removeDirectory(LOCAL_BLOG_IMAGES_DIR);
|
|
} else if (VERBOSE) {
|
|
console.log(`Blog images directory does not exist: ${LOCAL_BLOG_IMAGES_DIR}`);
|
|
}
|
|
|
|
console.log('Content cleanup completed successfully!');
|
|
} catch (error) {
|
|
console.error('Error during cleanup:', error);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
// Run the script
|
|
cleanupContent(); |