50 lines
1.4 KiB
TypeScript
50 lines
1.4 KiB
TypeScript
import { getOpenCodeConfigPaths } from "../../shared"
|
|
import type {
|
|
OpenCodeBinaryType,
|
|
OpenCodeConfigPaths,
|
|
} from "../../shared/opencode-config-dir-types"
|
|
|
|
export interface ConfigContext {
|
|
binary: OpenCodeBinaryType
|
|
version: string | null
|
|
paths: OpenCodeConfigPaths
|
|
}
|
|
|
|
let configContext: ConfigContext | null = null
|
|
|
|
export function initConfigContext(binary: OpenCodeBinaryType, version: string | null): void {
|
|
const paths = getOpenCodeConfigPaths({ binary, version })
|
|
configContext = { binary, version, paths }
|
|
}
|
|
|
|
export function getConfigContext(): ConfigContext {
|
|
if (!configContext) {
|
|
if (process.env.NODE_ENV !== "production") {
|
|
console.warn("[config-context] getConfigContext() called before initConfigContext(); defaulting to CLI paths.")
|
|
}
|
|
const paths = getOpenCodeConfigPaths({ binary: "opencode", version: null })
|
|
configContext = { binary: "opencode", version: null, paths }
|
|
}
|
|
return configContext
|
|
}
|
|
|
|
export function resetConfigContext(): void {
|
|
configContext = null
|
|
}
|
|
|
|
export function getConfigDir(): string {
|
|
return getConfigContext().paths.configDir
|
|
}
|
|
|
|
export function getConfigJson(): string {
|
|
return getConfigContext().paths.configJson
|
|
}
|
|
|
|
export function getConfigJsonc(): string {
|
|
return getConfigContext().paths.configJsonc
|
|
}
|
|
|
|
export function getOmoConfigPath(): string {
|
|
return getConfigContext().paths.omoConfig
|
|
}
|