fix(shared): add additive opencode config directory discovery

This commit is contained in:
jollyxenon
2026-05-09 00:26:23 +08:00
parent 85c77007f0
commit 71025daeba
4 changed files with 102 additions and 20 deletions
+27 -6
View File
@@ -55,16 +55,37 @@ function resolveConfigPath(pathValue: string): string {
}
}
function getCliConfigDir(): string {
const envConfigDir = process.env.OPENCODE_CONFIG_DIR?.trim()
if (envConfigDir) {
return resolveConfigPath(envConfigDir)
}
function getCliDefaultConfigDir(): string {
const xdgConfig = process.env.XDG_CONFIG_HOME || join(homedir(), ".config")
return resolveConfigPath(join(xdgConfig, "opencode"))
}
function getCliCustomConfigDir(): string | null {
const envConfigDir = process.env.OPENCODE_CONFIG_DIR?.trim()
if (!envConfigDir) {
return null
}
return resolveConfigPath(envConfigDir)
}
function getCliConfigDir(): string {
return getCliCustomConfigDir() ?? getCliDefaultConfigDir()
}
export function getOpenCodeConfigDirs(options: OpenCodeConfigDirOptions): string[] {
if (options.binary !== "opencode") {
return [getOpenCodeConfigDir(options)]
}
return Array.from(
new Set([
...(getCliCustomConfigDir() ? [getCliCustomConfigDir()!] : []),
getCliDefaultConfigDir(),
]),
)
}
export function getOpenCodeConfigDir(options: OpenCodeConfigDirOptions): string {
const { binary, version, checkExisting = true } = options