47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
// lib/serverConfig.ts
|
|
// Parse AC server config to get available cars
|
|
|
|
import { promises as fs } from 'fs';
|
|
|
|
const SERVER_CONFIG_PATH = '/mnt/combined/servers/acserver_EVENTS/utils/cfg/server_cfg.ini';
|
|
|
|
export async function getAvailableCars(): Promise<string[]> {
|
|
try {
|
|
const content = await fs.readFile(SERVER_CONFIG_PATH, 'utf-8');
|
|
|
|
// Find the CARS= line
|
|
const carsLine = content
|
|
.split('\n')
|
|
.find(line => line.trim().startsWith('CARS='));
|
|
|
|
if (!carsLine) {
|
|
console.error('CARS line not found in server config');
|
|
return [];
|
|
}
|
|
|
|
// Extract cars list after "CARS="
|
|
const carsString = carsLine.split('CARS=')[1].trim();
|
|
|
|
// Split by semicolon and remove duplicates
|
|
const cars = carsString
|
|
.split(';')
|
|
.map(car => car.trim())
|
|
.filter(car => car.length > 0);
|
|
|
|
// Remove duplicates using Set
|
|
const uniqueCars = Array.from(new Set(cars));
|
|
|
|
return uniqueCars.sort();
|
|
} catch (error) {
|
|
console.error('Error reading server config:', error);
|
|
return [];
|
|
}
|
|
}
|
|
|
|
// Format car name for display (optional - makes it prettier)
|
|
export function formatCarName(carId: string): string {
|
|
return carId
|
|
.replace(/_/g, ' ')
|
|
.replace(/\b\w/g, char => char.toUpperCase());
|
|
}
|