import path, { dirname } from 'path';
import { fileURLToPath } from 'url';
import fs from 'fs';
import os from 'os';

export class NapCatPathWrapper {
    binaryPath: string;
    logsPath: string;
    configPath: string;
    cachePath: string;
    staticPath: string;

    constructor(mainPath: string = dirname(fileURLToPath(import.meta.url))) {
        this.binaryPath = mainPath;
        let writePath: string;
        if (os.platform() === 'darwin') {
            writePath = path.join(os.homedir(), 'Library', 'Application Support', 'QQ', 'NapCat');
        } else {
            writePath = this.binaryPath;
        }
        this.logsPath = path.join(writePath, 'logs');
        this.configPath = path.join(writePath, 'config');
        this.cachePath = path.join(writePath, 'cache');
        this.staticPath = path.join(this.binaryPath, 'static');
        if (!fs.existsSync(this.logsPath)) {
            fs.mkdirSync(this.logsPath, { recursive: true });
        }
        if (!fs.existsSync(this.configPath)) {
            fs.mkdirSync(this.configPath, { recursive: true });
        }
        if (!fs.existsSync(this.cachePath)) {
            fs.mkdirSync(this.cachePath, { recursive: true });
        }
    }
}