29 lines
1.2 KiB
TypeScript
29 lines
1.2 KiB
TypeScript
import fs from 'node:fs';
|
|
import os from 'node:os';
|
|
import path from 'node:path';
|
|
import { getQQDataDirOverride } from 'napcat-common/src/path';
|
|
import type { WrapperNodeApi } from 'napcat-core';
|
|
|
|
export function getDataPaths (wrapper: WrapperNodeApi): [string, string] {
|
|
const platform = os.platform();
|
|
let dataPath = getQQDataDirOverride();
|
|
if (dataPath) {
|
|
// 自定义目录必须在初始化内核前存在;创建失败时不能回退到桌面 QQ。
|
|
fs.mkdirSync(dataPath, { recursive: true });
|
|
} else if (platform === 'darwin') {
|
|
dataPath = path.resolve(os.homedir(), './Library/Application Support/QQ');
|
|
} else {
|
|
dataPath = wrapper.NodeQQNTWrapperUtil.getNTUserDataInfoConfig();
|
|
if (!dataPath) {
|
|
dataPath = path.resolve(os.homedir(), './.config/QQ');
|
|
fs.mkdirSync(dataPath, { recursive: true });
|
|
}
|
|
}
|
|
// Linux/macOS: global 直接位于数据目录下;Windows: 位于 nt_qq 子目录下。
|
|
// 此处不创建 global,以免阻止后续 Linux 旧目录迁移。
|
|
const dataPathGlobal = platform === 'linux' || platform === 'darwin'
|
|
? path.resolve(dataPath, 'global')
|
|
: path.resolve(dataPath, 'nt_qq', 'global');
|
|
return [dataPath, dataPathGlobal];
|
|
}
|