| import path from "node:path"; |
| import { |
| expandHomePrefix, |
| resolveDefaultConfigPath, |
| resolveDefaultContextPath, |
| resolvePaperclipInstanceId, |
| } from "./home.js"; |
|
|
| export interface DataDirOptionLike { |
| dataDir?: string; |
| config?: string; |
| context?: string; |
| instance?: string; |
| } |
|
|
| export interface DataDirCommandSupport { |
| hasConfigOption?: boolean; |
| hasContextOption?: boolean; |
| } |
|
|
| export function applyDataDirOverride( |
| options: DataDirOptionLike, |
| support: DataDirCommandSupport = {}, |
| ): string | null { |
| const rawDataDir = options.dataDir?.trim(); |
| if (!rawDataDir) return null; |
|
|
| const resolvedDataDir = path.resolve(expandHomePrefix(rawDataDir)); |
| process.env.PAPERCLIP_HOME = resolvedDataDir; |
|
|
| if (support.hasConfigOption) { |
| const hasConfigOverride = Boolean(options.config?.trim()) || Boolean(process.env.PAPERCLIP_CONFIG?.trim()); |
| if (!hasConfigOverride) { |
| const instanceId = resolvePaperclipInstanceId(options.instance); |
| process.env.PAPERCLIP_INSTANCE_ID = instanceId; |
| process.env.PAPERCLIP_CONFIG = resolveDefaultConfigPath(instanceId); |
| } |
| } |
|
|
| if (support.hasContextOption) { |
| const hasContextOverride = Boolean(options.context?.trim()) || Boolean(process.env.PAPERCLIP_CONTEXT?.trim()); |
| if (!hasContextOverride) { |
| process.env.PAPERCLIP_CONTEXT = resolveDefaultContextPath(); |
| } |
| } |
|
|
| return resolvedDataDir; |
| } |
|
|