freshroute-server
Version:
Local development server for FreshRoute extension with API mocking and extended functionality
126 lines (110 loc) โข 5.34 kB
JavaScript
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 };