38 lines
1.1 KiB
TypeScript
38 lines
1.1 KiB
TypeScript
|
|
import * as os from "node:os"
|
||
|
|
import * as path from "node:path"
|
||
|
|
import {
|
||
|
|
USER_CONFIG_DIR,
|
||
|
|
USER_OPENCODE_CONFIG,
|
||
|
|
USER_OPENCODE_CONFIG_JSONC,
|
||
|
|
getWindowsAppdataDir,
|
||
|
|
} from "../constants"
|
||
|
|
|
||
|
|
export function getConfigPaths(directory: string): string[] {
|
||
|
|
const paths = [
|
||
|
|
path.join(directory, ".opencode", "opencode.json"),
|
||
|
|
path.join(directory, ".opencode", "opencode.jsonc"),
|
||
|
|
USER_OPENCODE_CONFIG,
|
||
|
|
USER_OPENCODE_CONFIG_JSONC,
|
||
|
|
]
|
||
|
|
|
||
|
|
if (process.platform === "win32") {
|
||
|
|
const crossPlatformDir = path.join(os.homedir(), ".config")
|
||
|
|
const appdataDir = getWindowsAppdataDir()
|
||
|
|
|
||
|
|
if (appdataDir) {
|
||
|
|
const alternateDir = USER_CONFIG_DIR === crossPlatformDir ? appdataDir : crossPlatformDir
|
||
|
|
const alternateConfig = path.join(alternateDir, "opencode", "opencode.json")
|
||
|
|
const alternateConfigJsonc = path.join(alternateDir, "opencode", "opencode.jsonc")
|
||
|
|
|
||
|
|
if (!paths.includes(alternateConfig)) {
|
||
|
|
paths.push(alternateConfig)
|
||
|
|
}
|
||
|
|
if (!paths.includes(alternateConfigJsonc)) {
|
||
|
|
paths.push(alternateConfigJsonc)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return paths
|
||
|
|
}
|