From 705606facef4b9eb6af7e6b55a2f660d810d4a14 Mon Sep 17 00:00:00 2001 From: Kit Langton Date: Thu, 27 Aug 2026 14:47:10 -0400 Subject: [PATCH] refactor(core): reuse formatter executable helper (#45615) Reuse the existing executable formatter helper for gofmt, mix, zig, and ktlint while preserving arguments, extensions, ordering, and lazy lookup. --- packages/core/src/formatter/builtins.ts | 41 ++++++------------------- 1 file changed, 9 insertions(+), 32 deletions(-) diff --git a/packages/core/src/formatter/builtins.ts b/packages/core/src/formatter/builtins.ts index 5dca6bcc5a6..0b53b096394 100644 --- a/packages/core/src/formatter/builtins.ts +++ b/packages/core/src/formatter/builtins.ts @@ -35,23 +35,14 @@ export function make(input: { ) .pipe(Effect.option) - const gofmt: Info = { - name: "gofmt", - extensions: [".go"], - enabled: Effect.sync(() => { - const match = findExecutable("gofmt") - return match ? [match, "-w", "$FILE"] : disabled - }), - } + const gofmt = executable("gofmt", [".go"], ["-w", "$FILE"], findExecutable) - const mix: Info = { - name: "mix", - extensions: [".ex", ".exs", ".eex", ".heex", ".leex", ".neex", ".sface"], - enabled: Effect.sync(() => { - const match = findExecutable("mix") - return match ? [match, "format", "$FILE"] : disabled - }), - } + const mix = executable( + "mix", + [".ex", ".exs", ".eex", ".heex", ".leex", ".neex", ".sface"], + ["format", "$FILE"], + findExecutable, + ) const prettier: Info = { name: "prettier", @@ -147,14 +138,7 @@ export function make(input: { }).pipe(Effect.orElseSucceed(() => disabled)), } - const zig: Info = { - name: "zig", - extensions: [".zig", ".zon"], - enabled: Effect.sync(() => { - const match = findExecutable("zig") - return match ? [match, "fmt", "$FILE"] : disabled - }), - } + const zig = executable("zig", [".zig", ".zon"], ["fmt", "$FILE"], findExecutable) const clang: Info = { name: "clang-format", @@ -166,14 +150,7 @@ export function make(input: { }).pipe(Effect.orElseSucceed(() => disabled)), } - const ktlint: Info = { - name: "ktlint", - extensions: [".kt", ".kts"], - enabled: Effect.sync(() => { - const match = findExecutable("ktlint") - return match ? [match, "-F", "$FILE"] : disabled - }), - } + const ktlint = executable("ktlint", [".kt", ".kts"], ["-F", "$FILE"], findExecutable) const ruff: Info = { name: "ruff",