| import fs from "node:fs"; |
| import path from "node:path"; |
| import { expandHomePrefix } from "../config/home.js"; |
|
|
| function unique(items: string[]): string[] { |
| return Array.from(new Set(items)); |
| } |
|
|
| export function resolveRuntimeLikePath(value: string, configPath?: string): string { |
| const expanded = expandHomePrefix(value); |
| if (path.isAbsolute(expanded)) return path.resolve(expanded); |
|
|
| const cwd = process.cwd(); |
| const configDir = configPath ? path.dirname(configPath) : null; |
| const workspaceRoot = configDir ? path.resolve(configDir, "..") : cwd; |
|
|
| const candidates = unique([ |
| ...(configDir ? [path.resolve(configDir, expanded)] : []), |
| path.resolve(workspaceRoot, "server", expanded), |
| path.resolve(workspaceRoot, expanded), |
| path.resolve(cwd, expanded), |
| ]); |
|
|
| return candidates.find((candidate) => fs.existsSync(candidate)) ?? candidates[0]; |
| } |
|
|