summaryrefslogtreecommitdiffhomepage
path: root/packages
diff options
context:
space:
mode:
authorrari404 <[email protected]>2025-12-13 12:30:15 -0500
committerGitHub <[email protected]>2025-12-13 11:30:15 -0600
commitdecf2452c4474069b02931295170dcc695d80f4e (patch)
tree9e17b18f9e9474f50da9e4bca8a6810e80c0a0bf /packages
parentd8663a44c285a9165b9aa28061e24ba1fad02d66 (diff)
downloadopencode-decf2452c4474069b02931295170dcc695d80f4e.tar.gz
opencode-decf2452c4474069b02931295170dcc695d80f4e.zip
feat: add dockerfile language server (#5252)
Co-authored-by: Aiden Cline <[email protected]>
Diffstat (limited to 'packages')
-rw-r--r--packages/opencode/src/lsp/server.ts45
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,
+ }
+ },
+ }
}