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