Skip to content

Commit

Permalink
feat: backup ENB files before launching MO2/game
Browse files Browse the repository at this point in the history
  • Loading branch information
MattLish committed Dec 16, 2021
1 parent 13e32df commit 3ff5525
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 3 deletions.
22 changes: 20 additions & 2 deletions src/main/ENB.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
import fs from "fs";
import { logger } from "@/main/logger";
import {
backupDirectory,
skyrimDirectory,
USER_PREFERENCE_KEYS,
userPreferences,
} from "@/main/config";
import { copy } from "fs-extra";
import { copy, existsSync } from "fs-extra";
import { not as isNotJunk } from "junk";
import { FriendlyDirectoryMap } from "@/modpack-metadata";

const ENBNameMappingFile = "namesENB.json";

const ENBDirectory = () =>
`${userPreferences.get(USER_PREFERENCE_KEYS.MOD_DIRECTORY)}/ENB Presets`;

Expand All @@ -17,7 +20,7 @@ export const getENBPresets = async (): Promise<FriendlyDirectoryMap[]> => {
await fs.promises.readFile(
`${userPreferences.get(
USER_PREFERENCE_KEYS.MOD_DIRECTORY
)}/ENB Presets/namesENB.json`,
)}/ENB Presets/${ENBNameMappingFile}`,
"utf-8"
)
) as FriendlyDirectoryMap[];
Expand All @@ -41,6 +44,21 @@ export const getENBPresets = async (): Promise<FriendlyDirectoryMap[]> => {
return [...mappedENBs, ...unmappedENBs];
};

export const backupOriginalENBs = async () => {
const ENBBackupDirectory = `${backupDirectory()}/ENB Presets`;
const backupExists = existsSync(ENBBackupDirectory);
logger.debug(`Backup for ENBs exists: ${backupExists}`);

if (!backupExists) {
logger.info("No ENB backup exists. Backing up...");
await fs.promises.mkdir(backupDirectory(), {
recursive: true,
});

await copy(ENBDirectory(), ENBBackupDirectory);
}
};

/**
* Get all ENB files from all presets.
* Different presets can have different files,
Expand Down
2 changes: 2 additions & 0 deletions src/main/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,5 @@ export const skyrimDirectory = () =>

export const modDirectory = () =>
userPreferences.get(USER_PREFERENCE_KEYS.MOD_DIRECTORY);

export const backupDirectory = () => `${modDirectory()}/.launcher_backups`;
9 changes: 8 additions & 1 deletion src/main/modOrganizer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,12 @@ import {
userPreferences,
} from "@/main/config";
import { logger } from "@/main/logger";
import { checkENBFilesExist, copyENBFiles, getENBPresets } from "@/main/ENB";
import {
backupOriginalENBs,
checkENBFilesExist,
copyENBFiles,
getENBPresets,
} from "@/main/ENB";
import { handleError } from "@/main/errorHandler";
import find from "find-process";
import { dialog } from "electron";
Expand Down Expand Up @@ -151,6 +156,8 @@ const prepareForLaunch = async (): Promise<boolean> => {
}
}

await backupOriginalENBs();

await copyENBFilesIfNotExist();

await setResolution();
Expand Down

0 comments on commit 3ff5525

Please sign in to comment.