19 lines
1.2 KiB
TypeScript
19 lines
1.2 KiB
TypeScript
// 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<Loaded, 'config' | 'resolve' | 'root'>, 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;
|
|
}
|