summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--bun.lock3
-rw-r--r--packages/opencode/package.json1
-rw-r--r--packages/opencode/src/app/app.ts2
-rw-r--r--packages/opencode/src/global/index.ts33
-rw-r--r--packages/opencode/src/index.ts2
-rw-r--r--packages/opencode/src/provider/provider.ts9
-rw-r--r--packages/opencode/src/server/server.ts2
7 files changed, 30 insertions, 22 deletions
diff --git a/bun.lock b/bun.lock
index 7b56e631f..0bdcb68f1 100644
--- a/bun.lock
+++ b/bun.lock
@@ -37,6 +37,7 @@
"turndown": "7.2.0",
"vscode-jsonrpc": "8.2.1",
"vscode-languageclient": "8",
+ "xdg-basedir": "5.1.0",
"zod": "catalog:",
"zod-openapi": "4.2.4",
},
@@ -1489,6 +1490,8 @@
"wrappy": ["[email protected]", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="],
+ "xdg-basedir": ["[email protected]", "", {}, "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ=="],
+
"xml2js": ["[email protected]", "", { "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" } }, "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA=="],
"xmlbuilder": ["[email protected]", "", {}, "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="],
diff --git a/packages/opencode/package.json b/packages/opencode/package.json
index 62e0adef0..a879d2cd9 100644
--- a/packages/opencode/package.json
+++ b/packages/opencode/package.json
@@ -36,6 +36,7 @@
"turndown": "7.2.0",
"vscode-jsonrpc": "8.2.1",
"vscode-languageclient": "8",
+ "xdg-basedir": "5.1.0",
"zod": "catalog:",
"zod-openapi": "4.2.4"
}
diff --git a/packages/opencode/src/app/app.ts b/packages/opencode/src/app/app.ts
index d41256e6c..8512f21aa 100644
--- a/packages/opencode/src/app/app.ts
+++ b/packages/opencode/src/app/app.ts
@@ -34,7 +34,7 @@ export namespace App {
x ? path.dirname(x) : undefined,
)
- const data = path.join(Global.data(), git ?? "global")
+ const data = path.join(Global.Path.data, git ?? "global")
const stateFile = Bun.file(path.join(data, APP_JSON))
const state = (await stateFile.json().catch(() => ({}))) as {
initialized: number
diff --git a/packages/opencode/src/global/index.ts b/packages/opencode/src/global/index.ts
index e8afe4df3..3e29594cb 100644
--- a/packages/opencode/src/global/index.ts
+++ b/packages/opencode/src/global/index.ts
@@ -1,24 +1,23 @@
-import envpaths from "env-paths"
import fs from "fs/promises"
-const paths = envpaths("opencode", {
- suffix: "",
-})
+import { xdgData, xdgCache, xdgConfig } from "xdg-basedir"
+import path from "path"
+
+const app = "opencode"
+
+const data = path.join(xdgData!, app)
+const cache = path.join(xdgCache!, app)
+const config = path.join(xdgConfig!, app)
await Promise.all([
- fs.mkdir(paths.config, { recursive: true }),
- fs.mkdir(paths.cache, { recursive: true }),
+ fs.mkdir(data, { recursive: true }),
+ fs.mkdir(config, { recursive: true }),
+ fs.mkdir(cache, { recursive: true }),
])
export namespace Global {
- export function config() {
- return paths.config
- }
-
- export function cache() {
- return paths.cache
- }
-
- export function data() {
- return paths.data
- }
+ export const Path = {
+ data,
+ cache,
+ config,
+ } as const
}
diff --git a/packages/opencode/src/index.ts b/packages/opencode/src/index.ts
index 013e68d41..7892bdcfb 100644
--- a/packages/opencode/src/index.ts
+++ b/packages/opencode/src/index.ts
@@ -27,7 +27,7 @@ cli.command("", "Start the opencode in interactive mode").action(async () => {
let cwd = new URL("../../tui/cmd/opencode", import.meta.url).pathname
if (Bun.embeddedFiles.length > 0) {
const blob = Bun.embeddedFiles[0] as File
- const binary = path.join(Global.cache(), "tui", blob.name)
+ const binary = path.join(Global.Path.cache, "tui", blob.name)
const file = Bun.file(binary)
if (!(await file.exists())) {
console.log("installing tui binary...")
diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts
index 7d1dd0126..59c60e0d2 100644
--- a/packages/opencode/src/provider/provider.ts
+++ b/packages/opencode/src/provider/provider.ts
@@ -95,13 +95,18 @@ export namespace Provider {
const s = await state()
if (s.sdk.has(providerID)) return s.sdk.get(providerID)!
- const dir = path.join(Global.cache(), `node_modules`, `@ai-sdk`, providerID)
+ const dir = path.join(
+ Global.Path.cache,
+ `node_modules`,
+ `@ai-sdk`,
+ providerID,
+ )
if (!(await Bun.file(path.join(dir, "package.json")).exists())) {
log.info("installing", {
providerID,
})
BunProc.run(["add", `@ai-sdk/${providerID}@alpha`], {
- cwd: Global.cache(),
+ cwd: Global.Path.cache,
})
}
const mod = await import(path.join(dir))
diff --git a/packages/opencode/src/server/server.ts b/packages/opencode/src/server/server.ts
index 9b370b04a..bef1d3119 100644
--- a/packages/opencode/src/server/server.ts
+++ b/packages/opencode/src/server/server.ts
@@ -177,7 +177,7 @@ export namespace Server {
root: app.path.root,
data: app.path.data,
cwd: app.path.cwd,
- config: Global.config(),
+ config: Global.Path.data,
})
},
)