summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2025-06-29 21:19:10 -0400
committerDax Raad <[email protected]>2025-06-29 21:22:21 -0400
commit0f41e60bd61939a3cc35518d8493b2d1aad6e223 (patch)
treec2e36205d973a6bd6b0ea1aed4d20027e2e6c630
parent7df81f7b3e5cc911f4f565c468a4ce461d02fe15 (diff)
downloadopencode-0f41e60bd61939a3cc35518d8493b2d1aad6e223.tar.gz
opencode-0f41e60bd61939a3cc35518d8493b2d1aad6e223.zip
restructure formatters
-rw-r--r--packages/opencode/src/format/formatters.ts76
-rw-r--r--packages/opencode/src/format/formatters/gofmt.ts24
-rw-r--r--packages/opencode/src/format/formatters/mix.ts24
-rw-r--r--packages/opencode/src/format/formatters/prettier.ts58
-rw-r--r--packages/opencode/src/format/index.ts12
5 files changed, 78 insertions, 116 deletions
diff --git a/packages/opencode/src/format/formatters.ts b/packages/opencode/src/format/formatters.ts
new file mode 100644
index 000000000..ec4362b68
--- /dev/null
+++ b/packages/opencode/src/format/formatters.ts
@@ -0,0 +1,76 @@
+import { App } from "../app/app"
+import { BunProc } from "../bun"
+import type { Definition } from "./definition"
+
+export const gofmt: Definition = {
+ name: "gofmt",
+ command: ["gofmt", "-w", "$FILE"],
+ extensions: [".go"],
+ async enabled() {
+ return Bun.which("gofmt") !== null
+ },
+}
+
+export const mix: Definition = {
+ name: "mix",
+ command: ["mix", "format", "$FILE"],
+ extensions: [".ex", ".exs", ".eex", ".heex", ".leex", ".neex", ".sface"],
+ async enabled() {
+ return Bun.which("mix") !== null
+ },
+}
+
+export const prettier: Definition = {
+ name: "prettier",
+ command: [BunProc.which(), "run", "prettier", "--write", "$FILE"],
+ environment: {
+ BUN_BE_BUN: "1",
+ },
+ extensions: [
+ ".js",
+ ".jsx",
+ ".mjs",
+ ".cjs",
+ ".ts",
+ ".tsx",
+ ".mts",
+ ".cts",
+ ".html",
+ ".htm",
+ ".css",
+ ".scss",
+ ".sass",
+ ".less",
+ ".vue",
+ ".svelte",
+ ".json",
+ ".jsonc",
+ ".yaml",
+ ".yml",
+ ".toml",
+ ".xml",
+ ".md",
+ ".mdx",
+ ".graphql",
+ ".gql",
+ ],
+ async enabled() {
+ // this is more complicated because we only want to use prettier if it's
+ // being used with the current project
+ try {
+ const proc = Bun.spawn({
+ cmd: [BunProc.which(), "run", "prettier", "--version"],
+ cwd: App.info().path.cwd,
+ env: {
+ BUN_BE_BUN: "1",
+ },
+ stdout: "ignore",
+ stderr: "ignore",
+ })
+ const exit = await proc.exited
+ return exit === 0
+ } catch {
+ return false
+ }
+ },
+}
diff --git a/packages/opencode/src/format/formatters/gofmt.ts b/packages/opencode/src/format/formatters/gofmt.ts
deleted file mode 100644
index 61b3a0917..000000000
--- a/packages/opencode/src/format/formatters/gofmt.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import { App } from "../../app/app"
-import type { Definition } from "../definition"
-
-const gofmt: Definition = {
- name: "gofmt",
- command: ["gofmt", "-w", "$FILE"],
- extensions: [".go"],
- async enabled() {
- try {
- const proc = Bun.spawn({
- cmd: ["gofmt", "-h"],
- cwd: App.info().path.cwd,
- stdout: "ignore",
- stderr: "ignore",
- })
- const exit = await proc.exited
- return exit === 0
- } catch {
- return false
- }
- },
-}
-
-export default gofmt
diff --git a/packages/opencode/src/format/formatters/mix.ts b/packages/opencode/src/format/formatters/mix.ts
deleted file mode 100644
index c08f1bf1f..000000000
--- a/packages/opencode/src/format/formatters/mix.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import { App } from "../../app/app"
-import type {Definition} from "../definition"
-
-const mix: Definition = {
- name: "mix",
- command: ["mix", "format", "$FILE"],
- extensions: [".ex", ".exs", ".eex", ".heex", ".leex", ".neex", ".sface"],
- async enabled() {
- try {
- const proc = Bun.spawn({
- cmd: ["mix", "--version"],
- cwd: App.info().path.cwd,
- stdout: "ignore",
- stderr: "ignore",
- })
- const exit = await proc.exited
- return exit === 0
- } catch {
- return false
- }
- },
-}
-
-export default mix
diff --git a/packages/opencode/src/format/formatters/prettier.ts b/packages/opencode/src/format/formatters/prettier.ts
deleted file mode 100644
index 88d9c9bce..000000000
--- a/packages/opencode/src/format/formatters/prettier.ts
+++ /dev/null
@@ -1,58 +0,0 @@
-import { App } from "../../app/app"
-import { BunProc } from "../../bun"
-import type {Definition} from '../definition'
-
-const prettier: Definition = {
- name: "prettier",
- command: [BunProc.which(), "run", "prettier", "--write", "$FILE"],
- environment: {
- BUN_BE_BUN: "1",
- },
- extensions: [
- ".js",
- ".jsx",
- ".mjs",
- ".cjs",
- ".ts",
- ".tsx",
- ".mts",
- ".cts",
- ".html",
- ".htm",
- ".css",
- ".scss",
- ".sass",
- ".less",
- ".vue",
- ".svelte",
- ".json",
- ".jsonc",
- ".yaml",
- ".yml",
- ".toml",
- ".xml",
- ".md",
- ".mdx",
- ".graphql",
- ".gql",
- ],
- async enabled() {
- try {
- const proc = Bun.spawn({
- cmd: [BunProc.which(), "run", "prettier", "--version"],
- cwd: App.info().path.cwd,
- env: {
- BUN_BE_BUN: "1",
- },
- stdout: "ignore",
- stderr: "ignore",
- })
- const exit = await proc.exited
- return exit === 0
- } catch {
- return false
- }
- },
-}
-
-export default prettier
diff --git a/packages/opencode/src/format/index.ts b/packages/opencode/src/format/index.ts
index 5a4481356..957698988 100644
--- a/packages/opencode/src/format/index.ts
+++ b/packages/opencode/src/format/index.ts
@@ -6,9 +6,7 @@ import path from "path"
import type { Definition } from "./definition"
-import prettier from "./formatters/prettier"
-import mix from "./formatters/mix"
-import gofmt from "./formatters/gofmt"
+import * as Formatters from "./formatters"
export namespace Format {
const log = Log.create({ service: "format" })
@@ -33,7 +31,7 @@ export namespace Format {
async function getFormatter(ext: string) {
const result = []
- for (const item of FORMATTERS) {
+ for (const item of Object.values(Formatters)) {
if (!item.extensions.includes(ext)) continue
if (!isEnabled(item)) continue
result.push(item)
@@ -66,10 +64,4 @@ export namespace Format {
}
})
}
-
- const FORMATTERS: Definition[] = [
- prettier,
- mix,
- gofmt,
- ]
}