// Other platforms named in the local listing files of both stores (pitfall 77): the blockers `check` and `validate` // report. Reads store/appstore.md and store/listing.md (or the config's listing paths). import { existsSync, readFileSync } from 'node:fs'; import { relative } from 'node:path'; import { listingPathFor, type Loaded } from './config'; import { fileMentions, type PlatformHit } from './cross-store'; export function listingFileMentions(loaded: Pick, stores: { apple: boolean; play: boolean } = { apple: true, play: true }): PlatformHit[] { const { config, resolve, root } = loaded; const allow = config.listing?.allowPlatformMentions; const out: PlatformHit[] = []; const files: ['apple' | 'play', string | null][] = [ ['apple', stores.apple && config.apple ? resolve(config.apple.listing ?? 'store/appstore.md') : null], ['apple', stores.apple && config.apple?.macos?.listing ? resolve(listingPathFor(config, 'macos')) : null], ['play', stores.play && config.play ? resolve(config.play.listing ?? 'store/listing.md') : null], ]; for (const [store, f] of files) if (f && existsSync(f)) out.push(...fileMentions(store, relative(root, f) || f, readFileSync(f, 'utf8'), allow)); return out; }