(options: GlobalDataDirOptions = {})
| 78 | } |
| 79 | |
| 80 | export function getGlobalDataDir(options: GlobalDataDirOptions = {}): string { |
| 81 | const env = options.env ?? process.env; |
| 82 | const platform = options.platform ?? os.platform(); |
| 83 | |
| 84 | // XDG_DATA_HOME takes precedence on all platforms when explicitly set |
| 85 | const xdgDataHome = env.XDG_DATA_HOME; |
| 86 | if (xdgDataHome) { |
| 87 | return joinGlobalDataPath(platform, xdgDataHome, GLOBAL_DATA_DIR_NAME); |
| 88 | } |
| 89 | |
| 90 | const homedir = options.homedir ?? os.homedir(); |
| 91 | |
| 92 | if (platform === 'win32') { |
| 93 | // Windows: use %LOCALAPPDATA% |
| 94 | const localAppData = env.LOCALAPPDATA; |
| 95 | if (localAppData) { |
| 96 | return joinGlobalDataPath(platform, localAppData, GLOBAL_DATA_DIR_NAME); |
| 97 | } |
| 98 | // Fallback for Windows if LOCALAPPDATA is not set |
| 99 | return joinGlobalDataPath(platform, homedir, 'AppData', 'Local', GLOBAL_DATA_DIR_NAME); |
| 100 | } |
| 101 | |
| 102 | // Unix/macOS fallback: ~/.local/share |
| 103 | return joinGlobalDataPath(platform, homedir, '.local', 'share', GLOBAL_DATA_DIR_NAME); |
| 104 | } |
| 105 | |
| 106 | /** |
| 107 | * Gets the path to the global config file. |
no test coverage detected