Files
TREK/server/scripts/format-lint.mjs
T
Maurice f4e518b2df build(server): Prettier leaves the generated entity files to their generator
src/db/entities/ is written by scripts/generate-entities.ts, and
check:entities holds every file byte for byte to its output, which puts the
MikroORM import first where Prettier's import sorting puts it last.
Formatting them would fail that gate, and npm run format would do it on any
run. lint:format no longer scans the directory (its 133 entries leave the
format baseline) and a .prettierignore keeps the format script off it.
2026-10-10 21:21:16 +02:00

45 lines
1.9 KiB
JavaScript

#!/usr/bin/env node
/*
* lint:format: new server code is formatted with Prettier.
*
* `npm run format:check` was never part of CI, and most files differ from what
* .prettierrc asks for. Formatting all of them belongs in one mechanical
* commit of its own; until it lands, the files that were unformatted when
* this check came in are listed in scripts/format-baseline.json and the list
* only shrinks: every file outside it, a new one in particular, must be
* formatted, and a listed file leaves the list once it has been. After the
* mass reformat, --update empties the list and the check is a plain
* prettier --check over src/ and tests/.
*
* npm run lint:format check against the baseline (CI)
* npm run lint:format -- --list print every unformatted file
* npm run lint:format -- --update take formatted and deleted files off the list;
* it never adds one
*
* src/db/entities/ is generated and checked by check:entities instead.
*
* To format a file: npx prettier --write <file>. The comparison lives in
* scripts/lib/format.mjs at the repository root; Prettier and its config come
* from this workspace.
*/
import { fileURLToPath } from 'node:url';
import * as prettier from 'prettier';
import { check } from '../../scripts/lib/format.mjs';
import { runCli } from '../../scripts/lib/ratchet.mjs';
const root = fileURLToPath(new URL('..', import.meta.url));
// The entity files are written by scripts/generate-entities.ts and held byte for
// byte to its output by check:entities, so their layout is the generator's, not
// Prettier's. .prettierignore keeps `npm run format` off them for the same reason.
const GENERATED = 'src/db/entities/';
await runCli('lint:format', (args) =>
check({
prettier,
root,
dirs: ['src', 'tests'],
accepts: (key) => key.endsWith('.ts') && !key.startsWith(GENERATED),
update: args.includes('--update'),
list: args.includes('--list'),
}),
);