diff options
| author | rari404 <[email protected]> | 2025-12-13 12:30:15 -0500 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-12-13 11:30:15 -0600 |
| commit | decf2452c4474069b02931295170dcc695d80f4e (patch) | |
| tree | 9e17b18f9e9474f50da9e4bca8a6810e80c0a0bf | |
| parent | d8663a44c285a9165b9aa28061e24ba1fad02d66 (diff) | |
| download | opencode-decf2452c4474069b02931295170dcc695d80f4e.tar.gz opencode-decf2452c4474069b02931295170dcc695d80f4e.zip | |
feat: add dockerfile language server (#5252)
Co-authored-by: Aiden Cline <[email protected]>
| -rw-r--r-- | packages/opencode/src/lsp/server.ts | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/packages/opencode/src/lsp/server.ts b/packages/opencode/src/lsp/server.ts index 5230117ee..353d4272d 100644 --- a/packages/opencode/src/lsp/server.ts +++ b/packages/opencode/src/lsp/server.ts @@ -1470,4 +1470,49 @@ export namespace LSPServer { } }, } + + export const DockerfileLS: Info = { + id: "dockerfile", + extensions: [".dockerfile", "Dockerfile"], + root: async () => Instance.directory, + async spawn(root) { + let binary = Bun.which("docker-langserver") + const args: string[] = [] + if (!binary) { + const js = path.join( + Global.Path.bin, + "node_modules", + "dockerfile-language-server-nodejs", + "lib", + "server.js", + ) + if (!(await Bun.file(js).exists())) { + if (Flag.OPENCODE_DISABLE_LSP_DOWNLOAD) return + await Bun.spawn([BunProc.which(), "install", "dockerfile-language-server-nodejs"], { + cwd: Global.Path.bin, + env: { + ...process.env, + BUN_BE_BUN: "1", + }, + stdout: "pipe", + stderr: "pipe", + stdin: "pipe", + }).exited + } + binary = BunProc.which() + args.push("run", js) + } + args.push("--stdio") + const proc = spawn(binary, args, { + cwd: root, + env: { + ...process.env, + BUN_BE_BUN: "1", + }, + }) + return { + process: proc, + } + }, + } } |
