42 lines
1.0 KiB
JavaScript
42 lines
1.0 KiB
JavaScript
/**
|
|
* Unified client storage roots (PearDock-style).
|
|
*
|
|
* Primary: $PEARDATA_HOME || ~/.config/peardata
|
|
* Cache: {home}/cache/
|
|
* Override: PEARDATA_STORAGE / Pear.config.storage for runtime-only if set as home
|
|
*/
|
|
import path from 'path'
|
|
import os from 'os'
|
|
|
|
/**
|
|
* @returns {string}
|
|
*/
|
|
export function getPeardataHome() {
|
|
try {
|
|
if (typeof process !== 'undefined') {
|
|
if (process.env?.PEARDATA_HOME) return process.env.PEARDATA_HOME
|
|
if (process.env?.PEARDATA_STORAGE) return process.env.PEARDATA_STORAGE
|
|
}
|
|
} catch {
|
|
// ignore
|
|
}
|
|
try {
|
|
const pear = globalThis.Pear?.config?.storage
|
|
if (pear) return String(pear)
|
|
} catch {
|
|
// ignore
|
|
}
|
|
const home =
|
|
(typeof process !== 'undefined' && (process.env?.HOME || process.env?.USERPROFILE)) ||
|
|
(typeof os.homedir === 'function' ? os.homedir() : '') ||
|
|
''
|
|
return path.join(home, '.config', 'peardata')
|
|
}
|
|
|
|
/**
|
|
* @returns {string}
|
|
*/
|
|
export function getPeardataCacheDir() {
|
|
return path.join(getPeardataHome(), 'cache')
|
|
}
|