summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2025-07-03 10:37:08 -0400
committerDax Raad <[email protected]>2025-07-03 10:37:08 -0400
commit204801052aa539cf7ca741c71e8c6510ed9591cf (patch)
treeebc9a391442577518c393d54a82a5fa2d576237a
parent2528d8cb881cabeb56a705c11f6fa1b8e9f95e00 (diff)
downloadopencode-204801052aa539cf7ca741c71e8c6510ed9591cf.tar.gz
opencode-204801052aa539cf7ca741c71e8c6510ed9591cf.zip
flag for disabling file watcher
-rw-r--r--packages/opencode/src/file/watch.ts63
-rw-r--r--packages/opencode/src/flag/flag.ts1
2 files changed, 34 insertions, 30 deletions
diff --git a/packages/opencode/src/file/watch.ts b/packages/opencode/src/file/watch.ts
index eec450edf..1d12168fa 100644
--- a/packages/opencode/src/file/watch.ts
+++ b/packages/opencode/src/file/watch.ts
@@ -3,6 +3,7 @@ import { Bus } from "../bus"
import fs from "fs"
import { App } from "../app/app"
import { Log } from "../util/log"
+import { Flag } from "../flag/flag"
export namespace FileWatcher {
const log = Log.create({ service: "file.watcher" })
@@ -16,37 +17,39 @@ export namespace FileWatcher {
}),
),
}
+ const state = App.state(
+ "file.watcher",
+ () => {
+ const app = App.use()
+ try {
+ const watcher = fs.watch(
+ app.info.path.cwd,
+ { recursive: true },
+ (event, file) => {
+ log.info("change", { file, event })
+ if (!file) return
+ // for some reason async local storage is lost here
+ // https://github.com/oven-sh/bun/issues/20754
+ App.provideExisting(app, async () => {
+ Bus.publish(Event.Updated, {
+ file,
+ event,
+ })
+ })
+ },
+ )
+ return { watcher }
+ } catch {
+ return {}
+ }
+ },
+ async (state) => {
+ state.watcher?.close()
+ },
+ )
export function init() {
- App.state(
- "file.watcher",
- () => {
- const app = App.use()
- try {
- const watcher = fs.watch(
- app.info.path.cwd,
- { recursive: true },
- (event, file) => {
- log.info("change", { file, event })
- if (!file) return
- // for some reason async local storage is lost here
- // https://github.com/oven-sh/bun/issues/20754
- App.provideExisting(app, async () => {
- Bus.publish(Event.Updated, {
- file,
- event,
- })
- })
- },
- )
- return { watcher }
- } catch {
- return {}
- }
- },
- async (state) => {
- state.watcher?.close()
- },
- )()
+ if (Flag.OPENCODE_DISABLE_WATCHER) return
+ state()
}
}
diff --git a/packages/opencode/src/flag/flag.ts b/packages/opencode/src/flag/flag.ts
index 9c01d13c4..e6f54440b 100644
--- a/packages/opencode/src/flag/flag.ts
+++ b/packages/opencode/src/flag/flag.ts
@@ -1,5 +1,6 @@
export namespace Flag {
export const OPENCODE_AUTO_SHARE = truthy("OPENCODE_AUTO_SHARE")
+ export const OPENCODE_DISABLE_WATCHER = truthy("OPENCODE_DISABLE_WATCHER")
function truthy(key: string) {
const value = process.env[key]?.toLowerCase()