35 lines
1.0 KiB
TypeScript
35 lines
1.0 KiB
TypeScript
|
|
import { readFileSync } from "node:fs"
|
||
|
|
import { homedir } from "node:os"
|
||
|
|
import { join } from "node:path"
|
||
|
|
import { detectConfigFile, parseJsonc } from "../../../shared"
|
||
|
|
import type { OmoConfig } from "./model-resolution-types"
|
||
|
|
|
||
|
|
const PACKAGE_NAME = "oh-my-opencode"
|
||
|
|
const USER_CONFIG_DIR = join(homedir(), ".config", "opencode")
|
||
|
|
const USER_CONFIG_BASE = join(USER_CONFIG_DIR, PACKAGE_NAME)
|
||
|
|
const PROJECT_CONFIG_BASE = join(process.cwd(), ".opencode", PACKAGE_NAME)
|
||
|
|
|
||
|
|
export function loadOmoConfig(): OmoConfig | null {
|
||
|
|
const projectDetected = detectConfigFile(PROJECT_CONFIG_BASE)
|
||
|
|
if (projectDetected.format !== "none") {
|
||
|
|
try {
|
||
|
|
const content = readFileSync(projectDetected.path, "utf-8")
|
||
|
|
return parseJsonc<OmoConfig>(content)
|
||
|
|
} catch {
|
||
|
|
return null
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
const userDetected = detectConfigFile(USER_CONFIG_BASE)
|
||
|
|
if (userDetected.format !== "none") {
|
||
|
|
try {
|
||
|
|
const content = readFileSync(userDetected.path, "utf-8")
|
||
|
|
return parseJsonc<OmoConfig>(content)
|
||
|
|
} catch {
|
||
|
|
return null
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return null
|
||
|
|
}
|