UNPKG

freshroute-server

Version:

Local development server for FreshRoute extension with API mocking and extended functionality

126 lines (110 loc) โ€ข 5.34 kB
#!/usr/bin/env node import fs from 'fs'; import path from 'path'; import os from 'os'; function cleanupFreshRoute() { console.log('๐Ÿงน FreshRoute Complete Cleanup'); console.log(`๐Ÿ–ฅ๏ธ Platform: ${os.platform()}`); console.log(`๐Ÿ“ Home directory: ${os.homedir()}`); const platform = os.platform(); let removed = false; try { // Remove Desktop shortcuts if (platform === 'darwin') { const desktopApp = path.join(os.homedir(), 'Desktop', 'FreshRoute.app'); if (fs.existsSync(desktopApp)) { fs.rmSync(desktopApp, { recursive: true, force: true }); console.log('โœ“ Removed FreshRoute.app from Desktop'); removed = true; } const applicationsApp = path.join('/Applications', 'FreshRoute.app'); if (fs.existsSync(applicationsApp)) { try { fs.rmSync(applicationsApp, { recursive: true, force: true }); console.log('โœ“ Removed FreshRoute.app from Applications'); removed = true; } catch (error) { console.log('โš ๏ธ Could not remove from Applications (may require admin permissions)'); } } } else if (platform === 'win32') { const desktopShortcut = path.join(os.homedir(), 'Desktop', 'FreshRoute.lnk'); if (fs.existsSync(desktopShortcut)) { fs.unlinkSync(desktopShortcut); console.log('โœ“ Removed FreshRoute shortcut from Desktop'); removed = true; } const startMenuPath = path.join(os.homedir(), 'AppData', 'Roaming', 'Microsoft', 'Windows', 'Start Menu', 'Programs', 'FreshRoute.lnk'); if (fs.existsSync(startMenuPath)) { fs.unlinkSync(startMenuPath); console.log('โœ“ Removed FreshRoute shortcut from Start Menu'); removed = true; } } else { const desktopFile = path.join(os.homedir(), 'Desktop', 'FreshRoute.desktop'); if (fs.existsSync(desktopFile)) { fs.unlinkSync(desktopFile); console.log('โœ“ Removed FreshRoute.desktop from Desktop'); removed = true; } const applicationsFile = path.join(os.homedir(), '.local', 'share', 'applications', 'FreshRoute.desktop'); if (fs.existsSync(applicationsFile)) { fs.unlinkSync(applicationsFile); console.log('โœ“ Removed FreshRoute.desktop from Applications'); removed = true; } } // Clean up ~/.freshroute directory completely const freshRouteDir = path.join(os.homedir(), '.freshroute'); console.log(`๐Ÿ“‚ Checking FreshRoute directory: ${freshRouteDir}`); if (fs.existsSync(freshRouteDir)) { console.log('๐Ÿ“ FreshRoute directory found, performing complete cleanup...'); try { // Force remove entire directory fs.rmSync(freshRouteDir, { recursive: true, force: true }); console.log('โœ“ Completely removed FreshRoute configuration directory'); removed = true; } catch (error) { console.log(`โš ๏ธ Could not remove .freshroute directory: ${error.message}`); // Fallback: try to remove individual items try { const items = fs.readdirSync(freshRouteDir); for (const item of items) { const itemPath = path.join(freshRouteDir, item); try { if (fs.statSync(itemPath).isDirectory()) { fs.rmSync(itemPath, { recursive: true, force: true }); } else { fs.unlinkSync(itemPath); } console.log(`โœ“ Removed: ${item}`); removed = true; } catch (itemError) { console.log(`โš ๏ธ Could not remove ${item}: ${itemError.message}`); } } // Try to remove the directory itself fs.rmdirSync(freshRouteDir); console.log('โœ“ Removed empty FreshRoute directory'); } catch (fallbackError) { console.log(`โš ๏ธ Fallback cleanup failed: ${fallbackError.message}`); } } } else { console.log('โ„น๏ธ No FreshRoute directory found'); } if (removed) { console.log('โœ… FreshRoute cleanup completed successfully'); } else { console.log('โ„น๏ธ No FreshRoute files found to clean up'); } } catch (error) { console.error('โŒ Error during cleanup:', error.message); process.exit(1); } } // Run cleanup if called directly if (import.meta.url === `file://${process.argv[1]}`) { cleanupFreshRoute(); } export { cleanupFreshRoute };