mirror of
https://github.com/hydralauncher/hydra.git
synced 2025-03-09 15:40:26 +00:00
feat: logs
This commit is contained in:
parent
a031049b73
commit
f6ce6eddb8
2 changed files with 25 additions and 9 deletions
|
@ -23,6 +23,14 @@ const addGame = (
|
||||||
: achievementFiles.set(objectId, [achivementFile]);
|
: achievementFiles.set(objectId, [achivementFile]);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const getObjectIdsInFolder = (path: string) => {
|
||||||
|
if (fs.existsSync(path)) {
|
||||||
|
return fs.readdirSync(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
return [];
|
||||||
|
};
|
||||||
|
|
||||||
export const findSteamGameAchievementFiles = (objectId?: string) => {
|
export const findSteamGameAchievementFiles = (objectId?: string) => {
|
||||||
//TODO: change to a automatized method
|
//TODO: change to a automatized method
|
||||||
const publicDir = path.join("C:", "Users", "Public", "Documents");
|
const publicDir = path.join("C:", "Users", "Public", "Documents");
|
||||||
|
@ -52,7 +60,9 @@ export const findSteamGameAchievementFiles = (objectId?: string) => {
|
||||||
fileLocation = ["achievements.ini"];
|
fileLocation = ["achievements.ini"];
|
||||||
}
|
}
|
||||||
|
|
||||||
const objectIds = objectId ? [objectId] : fs.readdirSync(achievementPath);
|
const objectIds = objectId
|
||||||
|
? [objectId]
|
||||||
|
: getObjectIdsInFolder(achievementPath);
|
||||||
|
|
||||||
for (const objectId of objectIds) {
|
for (const objectId of objectIds) {
|
||||||
addGame(
|
addGame(
|
||||||
|
|
|
@ -6,6 +6,7 @@ import { mergeAchievements } from "./merge-achievements";
|
||||||
import fs from "node:fs";
|
import fs from "node:fs";
|
||||||
import { findSteamGameAchievementFiles } from "./find-steam-game-achivement-files";
|
import { findSteamGameAchievementFiles } from "./find-steam-game-achivement-files";
|
||||||
import type { AchievementFile } from "@types";
|
import type { AchievementFile } from "@types";
|
||||||
|
import { logger } from "../logger";
|
||||||
|
|
||||||
type GameAchievementObserver = {
|
type GameAchievementObserver = {
|
||||||
[id: number]: AbortController;
|
[id: number]: AbortController;
|
||||||
|
@ -15,17 +16,22 @@ const gameAchievementObserver: GameAchievementObserver = {};
|
||||||
|
|
||||||
const processAchievementFile = async (game: Game, file: AchievementFile) => {
|
const processAchievementFile = async (game: Game, file: AchievementFile) => {
|
||||||
const localAchievementFile = await parseAchievementFile(file.filePath);
|
const localAchievementFile = await parseAchievementFile(file.filePath);
|
||||||
console.log(localAchievementFile);
|
|
||||||
|
|
||||||
|
logger.log("Parsed achievements file", file.filePath, localAchievementFile);
|
||||||
if (localAchievementFile) {
|
if (localAchievementFile) {
|
||||||
const unlockedAchievements = checkUnlockedAchievements(
|
const unlockedAchievements = checkUnlockedAchievements(
|
||||||
file.type,
|
file.type,
|
||||||
localAchievementFile
|
localAchievementFile
|
||||||
);
|
);
|
||||||
console.log(unlockedAchievements);
|
logger.log("Achievements from file", file.filePath, unlockedAchievements);
|
||||||
|
|
||||||
if (unlockedAchievements.length) {
|
if (unlockedAchievements.length) {
|
||||||
mergeAchievements(game.objectID, game.shop, unlockedAchievements, true);
|
return mergeAchievements(
|
||||||
|
game.objectID,
|
||||||
|
game.shop,
|
||||||
|
unlockedAchievements,
|
||||||
|
true
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -34,7 +40,7 @@ const startFileWatch = async (game: Game, file: AchievementFile) => {
|
||||||
const signal = gameAchievementObserver[game.id]?.signal;
|
const signal = gameAchievementObserver[game.id]?.signal;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
processAchievementFile(game, file);
|
await processAchievementFile(game, file);
|
||||||
|
|
||||||
const watcher = watch(file.filePath, {
|
const watcher = watch(file.filePath, {
|
||||||
signal,
|
signal,
|
||||||
|
@ -42,13 +48,13 @@ const startFileWatch = async (game: Game, file: AchievementFile) => {
|
||||||
|
|
||||||
for await (const event of watcher) {
|
for await (const event of watcher) {
|
||||||
if (event.eventType === "change") {
|
if (event.eventType === "change") {
|
||||||
processAchievementFile(game, file);
|
logger.log("Detected change in file", file.filePath);
|
||||||
|
await processAchievementFile(game, file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
if (err?.name === "AbortError") return;
|
if (err?.name === "AbortError") return;
|
||||||
console.log(`cracker: ${file.type}, steamId ${game.objectID}`);
|
logger.error("Failed to watch file", file.filePath, err);
|
||||||
throw err;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -59,7 +65,7 @@ export const startGameAchievementObserver = async (game: Game) => {
|
||||||
const achievementFiles =
|
const achievementFiles =
|
||||||
findSteamGameAchievementFiles(game.objectID).get(game.objectID) || [];
|
findSteamGameAchievementFiles(game.objectID).get(game.objectID) || [];
|
||||||
|
|
||||||
console.log(
|
logger.log(
|
||||||
"Achievements files to observe for:",
|
"Achievements files to observe for:",
|
||||||
game.title,
|
game.title,
|
||||||
achievementFiles
|
achievementFiles
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue