mirror of
https://github.com/H4zeyaf/Breakallery.git
synced 2026-10-17 15:00:44 +02:00
60 lines
1.9 KiB
JavaScript
60 lines
1.9 KiB
JavaScript
const path = require('path');
|
|
const fs = require('fs');
|
|
|
|
function getBaseDataDir() {
|
|
// 1. Portable Electron executable environment (next to Breakallery-Portable.exe)
|
|
if (process.env.PORTABLE_EXECUTABLE_DIR) {
|
|
const dir = path.join(process.env.PORTABLE_EXECUTABLE_DIR, '.breakallery_data');
|
|
if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
|
|
return dir;
|
|
}
|
|
|
|
// 2. Electron packaged application
|
|
if (process.versions && process.versions.electron) {
|
|
try {
|
|
const { app } = require('electron');
|
|
if (app && app.getPath) {
|
|
const dir = path.join(app.getPath('userData'), 'data');
|
|
if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
|
|
return dir;
|
|
}
|
|
} catch (e) {
|
|
// Ignore if called outside electron
|
|
}
|
|
}
|
|
|
|
// 3. Development / Standard Node.js environment
|
|
return path.join(__dirname, '..');
|
|
}
|
|
|
|
const BASE_DIR = getBaseDataDir();
|
|
const CACHE_DIR = path.join(BASE_DIR, '.cache');
|
|
const THUMBNAILS_DIR = path.join(CACHE_DIR, 'thumbnails');
|
|
const VIDEOS_CACHE = path.join(CACHE_DIR, 'videos');
|
|
const CONFIG_PATH = path.join(BASE_DIR, 'config.json');
|
|
|
|
const ROOT_APP_DIR = process.env.PORTABLE_EXECUTABLE_DIR || path.resolve(__dirname, '..');
|
|
const CAPTURES_DIR = path.join(ROOT_APP_DIR, 'Captures');
|
|
|
|
// Ensure directories exist
|
|
if (!fs.existsSync(CACHE_DIR)) fs.mkdirSync(CACHE_DIR, { recursive: true });
|
|
if (!fs.existsSync(THUMBNAILS_DIR)) fs.mkdirSync(THUMBNAILS_DIR, { recursive: true });
|
|
if (!fs.existsSync(VIDEOS_CACHE)) fs.mkdirSync(VIDEOS_CACHE, { recursive: true });
|
|
if (!fs.existsSync(CAPTURES_DIR)) fs.mkdirSync(CAPTURES_DIR, { recursive: true });
|
|
|
|
function sanitizeFolderName(name) {
|
|
if (!name) return 'Unknown Game';
|
|
return name.replace(/[<>:"/\\|?*]/g, '_').trim() || 'Unknown Game';
|
|
}
|
|
|
|
module.exports = {
|
|
BASE_DIR,
|
|
ROOT_APP_DIR,
|
|
CACHE_DIR,
|
|
THUMBNAILS_DIR,
|
|
VIDEOS_CACHE,
|
|
CONFIG_PATH,
|
|
CAPTURES_DIR,
|
|
sanitizeFolderName,
|
|
};
|