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

fix(opencode): resolve ripgrep worker path in builds (#22436)

Shoubhit Dash 4 дней назад
Родитель
Сommit
5b60e51c9f
2 измененных файлов с 15 добавлено и 2 удалено
  1. 9 1
      packages/opencode/script/build.ts
  2. 6 1
      packages/opencode/src/file/ripgrep.ts

+ 9 - 1
packages/opencode/script/build.ts

@@ -187,6 +187,7 @@ for (const item of targets) {
   const rootPath = path.resolve(dir, "../../node_modules/@opentui/core/parser.worker.js")
   const parserWorker = fs.realpathSync(fs.existsSync(localPath) ? localPath : rootPath)
   const workerPath = "./src/cli/cmd/tui/worker.ts"
+  const rgPath = "./src/file/ripgrep.worker.ts"
 
   // Use platform-specific bunfs root path based on target OS
   const bunfsRoot = item.os === "win32" ? "B:/~BUN/root/" : "/$bunfs/root/"
@@ -213,12 +214,19 @@ for (const item of targets) {
     files: {
       ...(embeddedFileMap ? { "opencode-web-ui.gen.ts": embeddedFileMap } : {}),
     },
-    entrypoints: ["./src/index.ts", parserWorker, workerPath, ...(embeddedFileMap ? ["opencode-web-ui.gen.ts"] : [])],
+    entrypoints: [
+      "./src/index.ts",
+      parserWorker,
+      workerPath,
+      rgPath,
+      ...(embeddedFileMap ? ["opencode-web-ui.gen.ts"] : []),
+    ],
     define: {
       OPENCODE_VERSION: `'${Script.version}'`,
       OPENCODE_MIGRATIONS: JSON.stringify(migrations),
       OTUI_TREE_SITTER_WORKER_PATH: bunfsRoot + workerRelativePath,
       OPENCODE_WORKER_PATH: workerPath,
+      OPENCODE_RIPGREP_WORKER_PATH: rgPath,
       OPENCODE_CHANNEL: `'${Script.channel}'`,
       OPENCODE_LIBC: item.os === "linux" ? `'${item.abi ?? "glibc"}'` : "",
     },

+ 6 - 1
packages/opencode/src/file/ripgrep.ts

@@ -268,7 +268,12 @@ export namespace Ripgrep {
       .flatMap((item) => (item.type === "match" ? [row(item.data)] : []))
   }
 
-  function target() {
+  declare const OPENCODE_RIPGREP_WORKER_PATH: string
+
+  function target(): Effect.Effect<string | URL, Error> {
+    if (typeof OPENCODE_RIPGREP_WORKER_PATH !== "undefined") {
+      return Effect.succeed(OPENCODE_RIPGREP_WORKER_PATH)
+    }
     const js = new URL("./ripgrep.worker.js", import.meta.url)
     return Effect.tryPromise({
       try: () => Filesystem.exists(fileURLToPath(js)),