From bfbcbc88632869f1a6b86b05a3fff0c7a46e5863 Mon Sep 17 00:00:00 2001 From: nuno maduro Date: Wed, 21 Jan 2026 16:31:39 +0000 Subject: [PATCH] feat(formatters): add laravel pint as a `.php` formatter (#7312) --- packages/opencode/src/format/formatter.ts | 15 +++++++++++++++ packages/web/src/content/docs/formatters.mdx | 1 + 2 files changed, 16 insertions(+) diff --git a/packages/opencode/src/format/formatter.ts b/packages/opencode/src/format/formatter.ts index 1a3aa1bb1..5f0624d6c 100644 --- a/packages/opencode/src/format/formatter.ts +++ b/packages/opencode/src/format/formatter.ts @@ -340,3 +340,18 @@ export const rustfmt: Info = { return Bun.which("rustfmt") !== null }, } + +export const pint: Info = { + name: "pint", + command: ["./vendor/bin/pint", "$FILE"], + extensions: [".php"], + async enabled() { + const items = await Filesystem.findUp("composer.json", Instance.directory, Instance.worktree) + for (const item of items) { + const json = await Bun.file(item).json() + if (json.require?.["laravel/pint"]) return true + if (json["require-dev"]?.["laravel/pint"]) return true + } + return false + }, +} diff --git a/packages/web/src/content/docs/formatters.mdx b/packages/web/src/content/docs/formatters.mdx index e4faa5eb8..225875f62 100644 --- a/packages/web/src/content/docs/formatters.mdx +++ b/packages/web/src/content/docs/formatters.mdx @@ -34,6 +34,7 @@ OpenCode comes with several built-in formatters for popular languages and framew | gleam | .gleam | `gleam` command available | | nixfmt | .nix | `nixfmt` command available | | shfmt | .sh, .bash | `shfmt` command available | +| pint | .php | `laravel/pint` dependency in `composer.json` | | oxfmt (Experimental) | .js, .jsx, .ts, .tsx | `oxfmt` dependency in `package.json` and an [experimental env variable flag](/docs/cli/#experimental) | So if your project has `prettier` in your `package.json`, OpenCode will automatically use it.