56 lines
1.6 KiB
JavaScript
56 lines
1.6 KiB
JavaScript
/**
|
|
* 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
|
|
}
|