| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- import { Flag } from "@kirincode-ai/core/flag/flag"
- import { Effect } from "effect"
- import path from "path"
- const preserveExerciseGlobalRoot = !!process.env.KIRINCODE_HTTPAPI_EXERCISE_GLOBAL
- export const exerciseGlobalRoot =
- process.env.KIRINCODE_HTTPAPI_EXERCISE_GLOBAL ??
- path.join(process.env.TMPDIR ?? "/tmp", `opencode-httpapi-global-${process.pid}`)
- process.env.XDG_DATA_HOME = path.join(exerciseGlobalRoot, "data")
- process.env.XDG_CONFIG_HOME = path.join(exerciseGlobalRoot, "config")
- process.env.XDG_STATE_HOME = path.join(exerciseGlobalRoot, "state")
- process.env.XDG_CACHE_HOME = path.join(exerciseGlobalRoot, "cache")
- process.env.KIRINCODE_DISABLE_SHARE = "true"
- export const exerciseConfigDirectory = path.join(exerciseGlobalRoot, "config", "kirincode")
- export const exerciseDataDirectory = path.join(exerciseGlobalRoot, "data", "kirincode")
- const preserveExerciseDatabase = !!process.env.KIRINCODE_HTTPAPI_EXERCISE_DB
- export const exerciseDatabasePath =
- process.env.KIRINCODE_HTTPAPI_EXERCISE_DB ??
- path.join(process.env.TMPDIR ?? "/tmp", `opencode-httpapi-exercise-${process.pid}.db`)
- process.env.KIRINCODE_DB = exerciseDatabasePath
- Flag.KIRINCODE_DB = exerciseDatabasePath
- export const original = {
- KIRINCODE_SERVER_PASSWORD: Flag.KIRINCODE_SERVER_PASSWORD,
- KIRINCODE_SERVER_USERNAME: Flag.KIRINCODE_SERVER_USERNAME,
- }
- export const cleanupExercisePaths = Effect.promise(async () => {
- const fs = await import("fs/promises")
- if (!preserveExerciseDatabase) {
- await Promise.all(
- [exerciseDatabasePath, `${exerciseDatabasePath}-wal`, `${exerciseDatabasePath}-shm`].map((file) =>
- fs.rm(file, { force: true }).catch(() => undefined),
- ),
- )
- }
- if (!preserveExerciseGlobalRoot)
- await fs.rm(exerciseGlobalRoot, { recursive: true, force: true }).catch(() => undefined)
- })
|