diff --git a/data/manifest-override.yaml b/data/manifest-override.yaml new file mode 100644 index 00000000..dfa92b52 --- /dev/null +++ b/data/manifest-override.yaml @@ -0,0 +1,5 @@ +Overwatch: + # The game is no longer playable at all, + # and its save locations are identical to Overwatch 2, + # leading to duplicate backups. + omit: true diff --git a/data/manifest.yaml b/data/manifest.yaml index b4c497a3..5d6dba34 100644 --- a/data/manifest.yaml +++ b/data/manifest.yaml @@ -352911,13 +352911,6 @@ Overview: OVERVIEW: {} steam: id: 751110 -Overwatch: - files: - /Overwatch/Settings/Settings_v0.ini: - tags: - - config - when: - - os: windows Overwatch 2: files: /Overwatch/Settings/Settings_v0.ini: diff --git a/src/bin.ts b/src/bin.ts index 55bf3391..7e57e881 100644 --- a/src/bin.ts +++ b/src/bin.ts @@ -1,7 +1,7 @@ import minimist from "minimist"; import { DEFAULT_GAME_LIMIT } from "."; -import { ManifestFile } from "./manifest"; +import { ManifestFile, ManifestOverrideFile } from "./manifest"; import { SteamGameCacheFile, getSteamClient } from "./steam"; import { WikiGameCacheFile, WikiMetaCacheFile } from "./wiki"; import { saveMissingGames } from "./missing"; @@ -44,6 +44,8 @@ async function main() { steamCache.load(); const manifest = new ManifestFile(); manifest.load(); + const manifestOverride = new ManifestOverrideFile(); + manifestOverride.load(); if (args.stats) { console.log(`Total games in manifest: ${Object.keys(manifest.data).length}`); @@ -109,6 +111,7 @@ async function main() { wikiCache.data, args._ ?? [], steamCache, + manifestOverride, ); } @@ -116,7 +119,7 @@ async function main() { wikiMetaCache.save(); steamCache.save(); manifest.save(); - saveMissingGames(wikiCache.data, manifest.data); + saveMissingGames(wikiCache.data, manifest.data, manifestOverride.data); if (steamCache.steamClient) { steamCache.steamClient.logOff(); } @@ -126,7 +129,7 @@ async function main() { wikiMetaCache.save(); steamCache.save(); manifest.save(); - saveMissingGames(wikiCache.data, manifest.data); + saveMissingGames(wikiCache.data, manifest.data, manifestOverride.data); if (steamCache.steamClient) { steamCache.steamClient.logOff(); } diff --git a/src/manifest.ts b/src/manifest.ts index 962e6c80..87e78d9e 100644 --- a/src/manifest.ts +++ b/src/manifest.ts @@ -175,10 +175,16 @@ export class ManifestFile extends YamlFile { wikiCache: WikiGameCache, games: Array, steamCache: SteamGameCacheFile, + override: ManifestOverrideFile, ): Promise { this.data = {}; for (const [title, info] of Object.entries(wikiCache).sort()) { + const overridden = override.data[title]; + if (overridden?.omit) { + continue; + } + if (games?.length > 0 && !games.includes(title)) { continue; } @@ -197,3 +203,14 @@ export class ManifestFile extends YamlFile { } } } + +export interface ManifestOverride { + [game: string]: { + omit?: boolean; + } +} + +export class ManifestOverrideFile extends YamlFile { + path = `${REPO}/data/manifest-override.yaml`; + defaultData = {}; +} diff --git a/src/missing.ts b/src/missing.ts index 2358cbe9..d4cf6430 100644 --- a/src/missing.ts +++ b/src/missing.ts @@ -1,14 +1,15 @@ import * as fs from "fs"; import { REPO } from "."; -import { Manifest } from "./manifest"; +import { Manifest, ManifestOverride } from "./manifest"; import { WikiGameCache } from "./wiki"; -export function saveMissingGames(cache: WikiGameCache, manifest: Manifest): void { +export function saveMissingGames(cache: WikiGameCache, manifest: Manifest, override: ManifestOverride): void { fs.writeFileSync( `${REPO}/data/missing.md`, Object.entries(cache) .sort((x, y) => x[0].localeCompare(y[0])) .filter(([k, _]) => (manifest[k]?.files ?? []).length === 0 && (manifest[k]?.registry ?? []).length === 0) + .filter(([k, _]) => override[k]?.omit !== true) .map(([k, v]) => `* [${k}](https://www.pcgamingwiki.com/wiki/?curid=${v.pageId})`) .join("\n") + "\n", );