48 lines
1.4 KiB
JavaScript
48 lines
1.4 KiB
JavaScript
const fs = require('fs');
|
|
const path = require('path');
|
|
const { parseTemplateSchema } = require('./templateSchema');
|
|
|
|
const BACKEND_ROOT = path.join(__dirname, '..', '..');
|
|
|
|
function isLocalMicrositeV2TemplatesEnabled() {
|
|
const v = String(process.env.MICROSITE_V2_READ_FROM_LOCAL || '').trim().toLowerCase();
|
|
return v === '1' || v === 'true' || v === 'yes';
|
|
}
|
|
|
|
function getTemplatesRoot() {
|
|
const custom = String(process.env.MICROSITE_V2_TEMPLATES_DIR || '').trim();
|
|
if (custom) return path.resolve(custom);
|
|
return path.join(BACKEND_ROOT, 'microsite-v2-templates');
|
|
}
|
|
|
|
function resolveTemplateDir(slug) {
|
|
const normalized = String(slug || '').trim().toLowerCase();
|
|
if (!normalized) return null;
|
|
const dir = path.join(getTemplatesRoot(), normalized);
|
|
if (!fs.existsSync(dir)) return null;
|
|
return dir;
|
|
}
|
|
|
|
function readLocalTemplateSchema(slug) {
|
|
const dir = resolveTemplateDir(slug);
|
|
if (!dir) return null;
|
|
const jsonPath = path.join(dir, 'template.json');
|
|
if (!fs.existsSync(jsonPath)) return null;
|
|
return parseTemplateSchema(fs.readFileSync(jsonPath));
|
|
}
|
|
|
|
function readLocalTemplateHtml(slug) {
|
|
const dir = resolveTemplateDir(slug);
|
|
if (!dir) return null;
|
|
const htmlPath = path.join(dir, 'template.html');
|
|
if (!fs.existsSync(htmlPath)) return null;
|
|
return fs.readFileSync(htmlPath, 'utf8');
|
|
}
|
|
|
|
module.exports = {
|
|
isLocalMicrositeV2TemplatesEnabled,
|
|
getTemplatesRoot,
|
|
readLocalTemplateSchema,
|
|
readLocalTemplateHtml,
|
|
};
|