Просмотр исходного кода

feat: add dockerfile language server (#5252)

Co-authored-by: Aiden Cline <[email protected]>
rari404 2 месяцев назад
Родитель
Сommit
decf2452c4
1 измененных файлов с 45 добавлено и 0 удалено
  1. 45 0
      packages/opencode/src/lsp/server.ts

+ 45 - 0
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,
+      }
+    },
+  }
 }
 }