/** * Shared host CLI flags for seeder/booter standalones and package entrypoints. */ import path from 'path' /** * @param {string[]} argv * @returns {{ datadir: string|null, rest: string[] }} */ export function parseHostFlags(argv) { let datadir = null const rest = [] for (let i = 0; i < argv.length; i++) { const a = argv[i] if (a === '--datadir' || a === '--data-dir') { const v = argv[++i] if (v != null && v !== '') datadir = v } else if (a.startsWith('--datadir=')) { datadir = a.slice('--datadir='.length) } else if (a.startsWith('--data-dir=')) { datadir = a.slice('--data-dir='.length) } else { rest.push(a) } } const trimmed = datadir != null ? String(datadir).trim() : '' return { datadir: trimmed || null, rest } } /** * Apply `--datadir` to `BARE_OS_HOST_DATA` before Corestore paths are resolved. * @param {string|null|undefined} datadir * @returns {string|null} */ export function applyHostDataDir(datadir) { if (!datadir) return null const resolved = path.resolve(String(datadir)) if (typeof globalThis.process === 'undefined') { globalThis.process = { env: {} } } if (!globalThis.process.env) globalThis.process.env = {} globalThis.process.env.BARE_OS_HOST_DATA = resolved return resolved } /** * Parse argv and set BARE_OS_HOST_DATA when `--datadir` is present. * @param {string[]} argv * @returns {{ datadir: string|null, rest: string[] }} */ export function applyHostFlagsFromArgv(argv) { const parsed = parseHostFlags(argv) if (parsed.datadir) applyHostDataDir(parsed.datadir) return parsed }