feat: logs

This commit is contained in:
Zamitto 2024-10-01 10:50:30 -03:00
parent a031049b73
commit f6ce6eddb8
2 changed files with 25 additions and 9 deletions

View file

@ -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(

View file

@ -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