UNPKG

freshroute-server

Version:

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

206 lines (181 loc) โ€ข 9.31 kB
#!/usr/bin/env node import fs from 'fs'; import path from 'path'; import os from 'os'; import { fileURLToPath } from 'url'; import { dirname } from 'path'; import { cleanupFreshRoute } from './cleanup.js'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); function removeShortcuts() { console.log('๐Ÿงน Removing FreshRoute shortcuts and data...'); console.log(`๐Ÿ–ฅ๏ธ Platform: ${os.platform()}`); console.log(`๐Ÿ“ Home directory: ${os.homedir()}`); const platform = os.platform(); let removed = false; try { if (platform === 'darwin') { // Remove from Desktop 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; } // Remove from Applications 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') { // Remove from Desktop 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; } // Remove from Start Menu 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 { // Linux - Remove desktop file 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; } // Remove from applications directory 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; } } // Remove extension files and setup.html const freshRouteDir = path.join(os.homedir(), '.freshroute'); console.log(`๐Ÿ“‚ Checking FreshRoute directory: ${freshRouteDir}`); if (fs.existsSync(freshRouteDir)) { console.log('๐Ÿ“ FreshRoute directory found, cleaning up...'); // Remove extension directory const extensionDir = path.join(freshRouteDir, 'extension'); if (fs.existsSync(extensionDir)) { try { fs.rmSync(extensionDir, { recursive: true, force: true }); console.log('โœ“ Removed FreshRoute extension files'); removed = true; } catch (error) { console.log(`โš ๏ธ Could not remove extension directory: ${error.message}`); } } // Remove setup.html const setupFile = path.join(freshRouteDir, 'setup.html'); if (fs.existsSync(setupFile)) { try { fs.unlinkSync(setupFile); console.log('โœ“ Removed FreshRoute setup page'); removed = true; } catch (error) { console.log(`โš ๏ธ Could not remove setup.html: ${error.message}`); } } // Remove install-info.json const installInfoFile = path.join(freshRouteDir, 'install-info.json'); if (fs.existsSync(installInfoFile)) { try { fs.unlinkSync(installInfoFile); console.log('โœ“ Removed FreshRoute installation info'); removed = true; } catch (error) { console.log(`โš ๏ธ Could not remove install-info.json: ${error.message}`); } } // Remove PID directory if it exists const pidDir = path.join(freshRouteDir, 'pids'); if (fs.existsSync(pidDir)) { try { fs.rmSync(pidDir, { recursive: true, force: true }); console.log('โœ“ Cleaned up FreshRoute data directory'); removed = true; } catch (error) { console.log(`โš ๏ธ Could not remove pids directory: ${error.message}`); } } // Clean up any remaining system files and shortcuts in .freshroute const systemFiles = ['.DS_Store', 'Thumbs.db', '._.DS_Store']; systemFiles.forEach(systemFile => { const systemFilePath = path.join(freshRouteDir, systemFile); if (fs.existsSync(systemFilePath)) { try { fs.unlinkSync(systemFilePath); console.log(`โœ“ Removed system file: ${systemFile}`); removed = true; } catch (error) { console.log(`โš ๏ธ Could not remove system file ${systemFile}: ${error.message}`); } } }); // Remove any remaining FreshRoute shortcuts in the directory const shortcutFiles = ['FreshRoute.app', 'FreshRoute.bat', 'freshroute.desktop', 'freshroute-icon.png']; shortcutFiles.forEach(shortcutFile => { const shortcutPath = path.join(freshRouteDir, shortcutFile); if (fs.existsSync(shortcutPath)) { try { if (fs.statSync(shortcutPath).isDirectory()) { fs.rmSync(shortcutPath, { recursive: true, force: true }); } else { fs.unlinkSync(shortcutPath); } console.log(`โœ“ Removed shortcut: ${shortcutFile}`); removed = true; } catch (error) { console.log(`โš ๏ธ Could not remove shortcut ${shortcutFile}: ${error.message}`); } } }); // Remove main .freshroute directory if empty or only contains removable files try { const files = fs.readdirSync(freshRouteDir); console.log(`๐Ÿ“‹ Files remaining in .freshroute: ${files.join(', ')}`); const removableFiles = ['install-info.json', 'setup.html', 'FreshRoute.app', 'FreshRoute.bat', 'freshroute.desktop', 'freshroute-icon.png', '.DS_Store', 'Thumbs.db', '._.DS_Store']; const remainingFiles = files.filter(file => !removableFiles.includes(file) && file !== 'extension' && file !== 'pids'); if (remainingFiles.length === 0) { fs.rmSync(freshRouteDir, { recursive: true, force: true }); console.log('โœ“ Removed FreshRoute configuration directory'); removed = true; } else { console.log(`โ„น๏ธ Keeping .freshroute directory (contains user files: ${remainingFiles.join(', ')})`); } } catch (error) { console.log(`โš ๏ธ Could not check .freshroute directory: ${error.message}`); } } else { console.log('โ„น๏ธ No FreshRoute directory found'); } if (removed) { console.log('โœ… FreshRoute shortcuts and data have been removed'); } else { console.log('โ„น๏ธ No FreshRoute shortcuts found to remove'); } } catch (error) { console.error('โŒ Error removing shortcuts:', error.message); // Don't fail the uninstall process } } console.log('๐Ÿ” FreshRoute uninstall cleanup starting...'); console.log(`๐Ÿ“ Directory: ${__dirname}`); // Always run cleanup on any uninstall - FreshRoute creates files regardless of install type console.log('๐Ÿงน Running FreshRoute cleanup...'); cleanupFreshRoute();