const fs = require('fs') const path = require('path') const ROOT = path.resolve(__dirname, '..') const ENV_PATH = path.join(ROOT, '.env') const OUT_PATH = process.env.CONFIG_OUT || path.join(ROOT, 'public', 'config.js') const DEFAULTS = { VUE_APP_NAME: 'irandom', VUE_APP_TITLE: 'irandom', VUE_APP_BRAND_URL: 'https://git.imiheev.online/admin/irandom', VUE_APP_LOGO_URL: '/logo.png', VUE_APP_DEFAULT_LOCALE: 'ru', VUE_APP_COLOR_PRIMARY: '#c9a66b', VUE_APP_COLOR_ACCENT: '#e6c566', VUE_APP_COLOR_BG: '#1a1815', VUE_APP_COLOR_SURFACE: '#2e2820', VUE_APP_COLOR_SURFACE_RAISED: '#3a3228', VUE_APP_COLOR_TEXT: '#ffffff', VUE_APP_COLOR_TEXT_MUTED: '#c8c0b4', VUE_APP_COLOR_DANGER: '#ee5c5c', VUE_APP_COLOR_LINK: '#4a6a8a', VUE_APP_COLOR_BORDER: '#4a4034' } function parseEnvFile(filePath) { if (!fs.existsSync(filePath)) { return {} } const result = {} const lines = fs.readFileSync(filePath, 'utf8').split(/\r?\n/) for (const line of lines) { const trimmed = line.trim() if (!trimmed || trimmed.startsWith('#')) { continue } const eq = trimmed.indexOf('=') if (eq === -1) { continue } const key = trimmed.slice(0, eq).trim() let value = trimmed.slice(eq + 1).trim() if ( (value.startsWith('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'")) ) { value = value.slice(1, -1) } result[key] = value } return result } function buildConfig(fileEnv) { // Container / shell env overrides .env file const pick = (key) => process.env[key] || fileEnv[key] || DEFAULTS[key] return { name: pick('VUE_APP_NAME'), title: pick('VUE_APP_TITLE'), brandUrl: pick('VUE_APP_BRAND_URL'), logoUrl: pick('VUE_APP_LOGO_URL'), defaultLocale: pick('VUE_APP_DEFAULT_LOCALE'), colors: { primary: pick('VUE_APP_COLOR_PRIMARY'), accent: pick('VUE_APP_COLOR_ACCENT'), bg: pick('VUE_APP_COLOR_BG'), surface: pick('VUE_APP_COLOR_SURFACE'), surfaceRaised: pick('VUE_APP_COLOR_SURFACE_RAISED'), text: pick('VUE_APP_COLOR_TEXT'), textMuted: pick('VUE_APP_COLOR_TEXT_MUTED'), danger: pick('VUE_APP_COLOR_DANGER'), link: pick('VUE_APP_COLOR_LINK'), border: pick('VUE_APP_COLOR_BORDER') } } } const fileEnv = parseEnvFile(ENV_PATH) const config = buildConfig(fileEnv) const payload = JSON.stringify(config, null, 2) const output = `/* Generated by scripts/generate-config.js — do not edit by hand */ window.__APP_CONFIG__ = ${payload}; ` fs.mkdirSync(path.dirname(OUT_PATH), { recursive: true }) fs.writeFileSync(OUT_PATH, output, 'utf8') console.log(`Wrote ${OUT_PATH}`)