Skip to content

Commit b4f8765

Browse files
committed
fix: respect XDG base directory env vars for config and log paths
Config loader now checks XDG_CONFIG_HOME before falling back to ~/.config/opencode. Logger now uses XDG_DATA_HOME (defaulting to ~/.local/share) for log storage, which is where runtime data belongs per the XDG Base Directory Specification. No behavior change for users with default (unset) XDG paths.
1 parent 3877f31 commit b4f8765

2 files changed

Lines changed: 6 additions & 3 deletions

File tree

lib/config.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -526,7 +526,9 @@ const defaultConfig: PluginConfig = {
526526
},
527527
}
528528

529-
const GLOBAL_CONFIG_DIR = join(homedir(), ".config", "opencode")
529+
const GLOBAL_CONFIG_DIR = process.env.XDG_CONFIG_HOME
530+
? join(process.env.XDG_CONFIG_HOME, "opencode")
531+
: join(homedir(), ".config", "opencode")
530532
const GLOBAL_CONFIG_PATH_JSONC = join(GLOBAL_CONFIG_DIR, "dcp.jsonc")
531533
const GLOBAL_CONFIG_PATH_JSON = join(GLOBAL_CONFIG_DIR, "dcp.json")
532534

lib/logger.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@ export class Logger {
99

1010
constructor(enabled: boolean) {
1111
this.enabled = enabled
12-
const opencodeConfigDir = join(homedir(), ".config", "opencode")
13-
this.logDir = join(opencodeConfigDir, "logs", "dcp")
12+
const dataHome =
13+
process.env.XDG_DATA_HOME || join(homedir(), ".local", "share")
14+
this.logDir = join(dataHome, "opencode", "logs", "dcp")
1415
}
1516

1617
private async ensureLogDir() {

0 commit comments

Comments
 (0)