summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorja <[email protected]>2025-12-26 12:31:51 -0500
committerGitHub <[email protected]>2025-12-26 11:31:51 -0600
commitb0e4408ecfd1f93bc95b7b46a8df861c13ee768a (patch)
treedd65b5102d51ddda2b1ca774ecc87a099ebb7bb0
parent8416db03ef34a1ecf187faa81fb5ce7fe8ee4ec7 (diff)
downloadopencode-b0e4408ecfd1f93bc95b7b46a8df861c13ee768a.tar.gz
opencode-b0e4408ecfd1f93bc95b7b46a8df861c13ee768a.zip
feat: add shfmt formatter for shell scripts (#6204)
-rw-r--r--packages/opencode/src/format/formatter.ts9
-rw-r--r--packages/web/src/content/docs/formatters.mdx1
2 files changed, 10 insertions, 0 deletions
diff --git a/packages/opencode/src/format/formatter.ts b/packages/opencode/src/format/formatter.ts
index 954940f8d..90c48b05c 100644
--- a/packages/opencode/src/format/formatter.ts
+++ b/packages/opencode/src/format/formatter.ts
@@ -313,3 +313,12 @@ export const gleam: Info = {
return Bun.which("gleam") !== null
},
}
+
+export const shfmt: Info = {
+ name: "shfmt",
+ command: ["shfmt", "-w", "$FILE"],
+ extensions: [".sh", ".bash"],
+ async enabled() {
+ return Bun.which("shfmt") !== null
+ },
+}
diff --git a/packages/web/src/content/docs/formatters.mdx b/packages/web/src/content/docs/formatters.mdx
index fa915f116..2c0687b8e 100644
--- a/packages/web/src/content/docs/formatters.mdx
+++ b/packages/web/src/content/docs/formatters.mdx
@@ -30,6 +30,7 @@ OpenCode comes with several built-in formatters for popular languages and framew
| ocamlformat | .ml, .mli | `ocamlformat` command available and `.ocamlformat` config file |
| terraform | .tf, .tfvars | `terraform` command available |
| gleam | .gleam | `gleam` command available |
+| shfmt | .sh, .bash | `shfmt` command available |
| 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.