@fboes/aerofly-patterns
Version:
Landegerät - Create random custom missions for Aerofly FS 4.
43 lines (35 loc) • 1.69 kB
text/typescript
import * as fs from "node:fs/promises";
import * as path from "node:path";
import { fileURLToPath } from "node:url";
import { AeroflyHems } from "./AeroflyHems.js";
export class FileWriter {
static async writeFile(app: AeroflyHems, saveDirectory: string) {
if (app.configuration.directoryMode) {
saveDirectory = `${saveDirectory}/data/HEMS-${app.configuration.environmentId}-${app.configuration.aircraft}`;
}
await fs.mkdir(path.join(saveDirectory, "missions"), { recursive: true });
const promises = [fs.writeFile(`${saveDirectory}/missions/custom_missions_user.tmc`, app.buildCustomMissionTmc())];
if (app.configuration.directoryMode) {
promises.push(
fs.writeFile(`${saveDirectory}/README.md`, app.buildMarkdown()),
fs.cp(app.configuration.geoJsonFile, `${saveDirectory}/${app.configuration.environmentId}.geojson`),
);
}
const poi_id = app.configuration.environmentId + "_emergency_sites";
const poiDirectory = path.join(saveDirectory, "scenery/poi", app.getEmergencySitesFolderSuffix() + poi_id);
const poiFallbackDirectory = path.join(poiDirectory, "fallback");
if (!app.configuration.doNotGeneratePois) {
await fs.mkdir(poiDirectory, { recursive: true });
promises.push(
fs.writeFile(`${poiDirectory}/${poi_id}.toc`, app.buildEmergencySitesToc()),
fs.writeFile(`${poiDirectory}/${poi_id}.tsl`, app.buildEmergencySitesTsl()),
fs.cp(
path.join(path.dirname(fileURLToPath(import.meta.url)), "../../../src/data/hems/fallback"),
poiFallbackDirectory,
{ recursive: true },
),
);
}
await Promise.all(promises);
}
}