environment.ts 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { Flag } from "@kirincode-ai/core/flag/flag"
  2. import { Effect } from "effect"
  3. import path from "path"
  4. const preserveExerciseGlobalRoot = !!process.env.KIRINCODE_HTTPAPI_EXERCISE_GLOBAL
  5. export const exerciseGlobalRoot =
  6. process.env.KIRINCODE_HTTPAPI_EXERCISE_GLOBAL ??
  7. path.join(process.env.TMPDIR ?? "/tmp", `opencode-httpapi-global-${process.pid}`)
  8. process.env.XDG_DATA_HOME = path.join(exerciseGlobalRoot, "data")
  9. process.env.XDG_CONFIG_HOME = path.join(exerciseGlobalRoot, "config")
  10. process.env.XDG_STATE_HOME = path.join(exerciseGlobalRoot, "state")
  11. process.env.XDG_CACHE_HOME = path.join(exerciseGlobalRoot, "cache")
  12. process.env.KIRINCODE_DISABLE_SHARE = "true"
  13. export const exerciseConfigDirectory = path.join(exerciseGlobalRoot, "config", "kirincode")
  14. export const exerciseDataDirectory = path.join(exerciseGlobalRoot, "data", "kirincode")
  15. const preserveExerciseDatabase = !!process.env.KIRINCODE_HTTPAPI_EXERCISE_DB
  16. export const exerciseDatabasePath =
  17. process.env.KIRINCODE_HTTPAPI_EXERCISE_DB ??
  18. path.join(process.env.TMPDIR ?? "/tmp", `opencode-httpapi-exercise-${process.pid}.db`)
  19. process.env.KIRINCODE_DB = exerciseDatabasePath
  20. Flag.KIRINCODE_DB = exerciseDatabasePath
  21. export const original = {
  22. KIRINCODE_SERVER_PASSWORD: Flag.KIRINCODE_SERVER_PASSWORD,
  23. KIRINCODE_SERVER_USERNAME: Flag.KIRINCODE_SERVER_USERNAME,
  24. }
  25. export const cleanupExercisePaths = Effect.promise(async () => {
  26. const fs = await import("fs/promises")
  27. if (!preserveExerciseDatabase) {
  28. await Promise.all(
  29. [exerciseDatabasePath, `${exerciseDatabasePath}-wal`, `${exerciseDatabasePath}-shm`].map((file) =>
  30. fs.rm(file, { force: true }).catch(() => undefined),
  31. ),
  32. )
  33. }
  34. if (!preserveExerciseGlobalRoot)
  35. await fs.rm(exerciseGlobalRoot, { recursive: true, force: true }).catch(() => undefined)
  36. })