diff --git a/package.json b/package.json index 0d3af43fc..df8bec590 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "build:watch": "pnpm -r --filter=!dev-playground --filter=!docs build:watch", "check:fix": "biome check --write .", "check": "biome check .", - "generate:types": "tsx tools/generate-schema-types.ts && tsx tools/generate-registry-types.ts && biome check --write packages/shared/src/schemas/plugin-manifest.generated.ts packages/appkit/src/registry/types.generated.ts", + "generate:types": "tsx tools/generate-schema-types.ts && tsx tools/generate-registry-types.ts", "generate:app-templates": "tsx tools/generate-app-templates.ts", "check:licenses": "tsx tools/check-licenses.ts", "build:notice": "tsx tools/build-notice.ts > NOTICE.md", diff --git a/tools/format-with-biome.ts b/tools/format-with-biome.ts new file mode 100644 index 000000000..336e69b84 --- /dev/null +++ b/tools/format-with-biome.ts @@ -0,0 +1,22 @@ +import { spawnSync } from "node:child_process"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const REPO_ROOT = path.join(__dirname, ".."); + +/** + * Run Biome on a generated file so its formatting matches the rest of the + * repo. Without this, every `pnpm build`/`pnpm dev` would leave generated + * files dirty until `pnpm format` is run. + */ +export function formatWithBiome(filePath: string): void { + const result = spawnSync( + "pnpm", + ["exec", "biome", "check", "--write", "--no-errors-on-unmatched", filePath], + { cwd: REPO_ROOT, stdio: "inherit" }, + ); + if (result.status !== 0) { + throw new Error(`biome check --write failed for ${filePath}`); + } +} diff --git a/tools/generate-registry-types.ts b/tools/generate-registry-types.ts index fa833d24d..531802260 100644 --- a/tools/generate-registry-types.ts +++ b/tools/generate-registry-types.ts @@ -7,6 +7,7 @@ import fs from "node:fs"; import path from "node:path"; import { fileURLToPath } from "node:url"; +import { formatWithBiome } from "./format-with-biome.ts"; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const REPO_ROOT = path.join(__dirname, ".."); @@ -149,6 +150,7 @@ function main(): void { const out = generate(schema); fs.mkdirSync(path.dirname(OUT_PATH), { recursive: true }); fs.writeFileSync(OUT_PATH, out, "utf-8"); + formatWithBiome(OUT_PATH); console.log("Wrote", OUT_PATH); } diff --git a/tools/generate-schema-types.ts b/tools/generate-schema-types.ts index 36f31e4ac..18360fb2f 100644 --- a/tools/generate-schema-types.ts +++ b/tools/generate-schema-types.ts @@ -9,6 +9,7 @@ import fs from "node:fs"; import path from "node:path"; import { fileURLToPath } from "node:url"; import { compileFromFile } from "json-schema-to-typescript"; +import { formatWithBiome } from "./format-with-biome.ts"; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const REPO_ROOT = path.join(__dirname, ".."); @@ -48,6 +49,7 @@ async function main(): Promise { fs.mkdirSync(path.dirname(OUT_PATH), { recursive: true }); fs.writeFileSync(OUT_PATH, result, "utf-8"); + formatWithBiome(OUT_PATH); console.log("Wrote", OUT_PATH); }