Multiple files were hardcoding ~/.config/opencode paths instead of using getOpenCodeConfigDir() which respects the OPENCODE_CONFIG_DIR env var. This broke profile isolation features like OCX ghost mode, where users set OPENCODE_CONFIG_DIR to a custom path but oh-my-opencode.json and other configs weren't being read from that location. Changes: - plugin-config.ts: Use getOpenCodeConfigDir() directly - cli/doctor/checks: Use getOpenCodeConfigDir() for auth and config checks - tools/lsp/config.ts: Use getOpenCodeConfigDir() for LSP config paths - command loaders: Use getOpenCodeConfigDir() for global command dirs - hooks: Use getOpenCodeConfigDir() for hook config paths - config-path.ts: Mark getUserConfigDir() as deprecated - tests: Ensure OPENCODE_CONFIG_DIR is properly isolated in tests
44 lines
1.3 KiB
TypeScript
44 lines
1.3 KiB
TypeScript
import * as path from "path"
|
|
import * as os from "os"
|
|
import * as fs from "fs"
|
|
|
|
/**
|
|
* Returns the user-level config directory based on the OS.
|
|
* @deprecated Use getOpenCodeConfigDir() from opencode-config-dir.ts instead.
|
|
*/
|
|
export function getUserConfigDir(): string {
|
|
if (process.platform === "win32") {
|
|
const crossPlatformDir = path.join(os.homedir(), ".config")
|
|
const crossPlatformConfigPath = path.join(crossPlatformDir, "opencode", "oh-my-opencode.json")
|
|
|
|
const appdataDir = process.env.APPDATA || path.join(os.homedir(), "AppData", "Roaming")
|
|
const appdataConfigPath = path.join(appdataDir, "opencode", "oh-my-opencode.json")
|
|
|
|
if (fs.existsSync(crossPlatformConfigPath)) {
|
|
return crossPlatformDir
|
|
}
|
|
|
|
if (fs.existsSync(appdataConfigPath)) {
|
|
return appdataDir
|
|
}
|
|
|
|
return crossPlatformDir
|
|
}
|
|
|
|
return process.env.XDG_CONFIG_HOME || path.join(os.homedir(), ".config")
|
|
}
|
|
|
|
/**
|
|
* Returns the full path to the user-level oh-my-opencode config file.
|
|
*/
|
|
export function getUserConfigPath(): string {
|
|
return path.join(getUserConfigDir(), "opencode", "oh-my-opencode.json")
|
|
}
|
|
|
|
/**
|
|
* Returns the full path to the project-level oh-my-opencode config file.
|
|
*/
|
|
export function getProjectConfigPath(directory: string): string {
|
|
return path.join(directory, ".opencode", "oh-my-opencode.json")
|
|
}
|