Spaces:
Paused
Paused
| /** | |
| * Centralized path management for CLI and Electron modes. | |
| * | |
| * CLI mode (default): all paths relative to process.cwd(). | |
| * Electron mode: paths set by setPaths() before backend imports. | |
| */ | |
| import { resolve } from "path"; | |
| interface PathConfig { | |
| rootDir: string; | |
| configDir: string; | |
| dataDir: string; | |
| binDir: string; | |
| publicDir: string; | |
| desktopPublicDir?: string; | |
| } | |
| let _paths: PathConfig | null = null; | |
| /** | |
| * Set custom paths (called by Electron main process before importing backend). | |
| * Must be called before any getXxxDir() calls. | |
| */ | |
| export function setPaths(config: PathConfig): void { | |
| _paths = config; | |
| } | |
| /** App root directory (where package.json lives). */ | |
| export function getRootDir(): string { | |
| return _paths?.rootDir ?? process.cwd(); | |
| } | |
| /** Directory containing YAML config files. */ | |
| export function getConfigDir(): string { | |
| return _paths?.configDir ?? resolve(process.cwd(), "config"); | |
| } | |
| /** Directory for runtime data (accounts.json, cookies.json, etc.). */ | |
| export function getDataDir(): string { | |
| return _paths?.dataDir ?? resolve(process.cwd(), "data"); | |
| } | |
| /** Directory for curl-impersonate binaries. */ | |
| export function getBinDir(): string { | |
| return _paths?.binDir ?? resolve(process.cwd(), "bin"); | |
| } | |
| /** Directory for static web assets (Vite build output). */ | |
| export function getPublicDir(): string { | |
| return _paths?.publicDir ?? resolve(process.cwd(), "public"); | |
| } | |
| /** Directory for desktop-specific static assets (desktop Vite build output). */ | |
| export function getDesktopPublicDir(): string { | |
| return _paths?.desktopPublicDir ?? resolve(process.cwd(), "public-desktop"); | |
| } | |
| /** Whether running in embedded mode (Electron). */ | |
| export function isEmbedded(): boolean { | |
| return _paths !== null; | |
| } | |