UNPKG

discord-media-server

Version:

Self-hosted Discord bot for scanning and serving information on local media files.

51 lines (40 loc) 1.44 kB
import path from 'path'; import fs from 'fs'; import dotenv from 'dotenv'; import { fileURLToPath } from 'url'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); // Path to .env file in root of project const envPath = path.resolve(__dirname, '../.env'); // Load .env only once if (fs.existsSync(envPath)) { dotenv.config({ path: envPath }); } // Detect if we're inside Docker const IS_DOCKER = process.env.IS_DOCKER === 'true' || fs.existsSync('/.dockerenv'); // Set config dir based on environment const CONFIG_DIR = process.env.CONFIG_DIR || (IS_DOCKER ? '/config' : path.resolve(__dirname, '../')); // Set data dir (inside config dir or fallback to project root) const DATA_DIR = process.env.DATA_DIR || path.join(CONFIG_DIR, 'data'); //const MEDIA_DIR = path.resolve(process.env.MEDIA_DIR) || (IS_DOCKER ? '/media' : path.resolve(process.env.MEDIA_DIR)); let MEDIA_DIR = process.env.MEDIA_DIR; if (!MEDIA_DIR) { MEDIA_DIR = IS_DOCKER ? '/media' : path.resolve(__dirname, '../media'); // default fallback } else { MEDIA_DIR = IS_DOCKER ? '/media' : path.resolve(MEDIA_DIR); } // Ensure required folders exist [CONFIG_DIR, DATA_DIR].forEach((dir) => { if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true }); }); export { CONFIG_DIR, DATA_DIR, MEDIA_DIR, IS_DOCKER, envPath as ENV_PATH, };