@mdfriday/foundry
Version:
The core engine of MDFriday. Convert Markdown and shortcodes into fully themed static sites – Hugo-style, powered by TypeScript.
95 lines • 4.2 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.loadConfigWithParams = loadConfigWithParams;
const config_1 = require("../entity/config");
const dir_1 = require("../entity/dir");
const root_1 = require("../entity/root");
const module_1 = require("../entity/module");
const service_1 = require("../entity/service");
const language_1 = require("../entity/language");
const taxonomy_1 = require("../entity/taxonomy");
const loader_1 = require("./loader");
const sourcedescriptor_1 = require("./sourcedescriptor");
const path = __importStar(require("path"));
/**
* Load configuration with custom parameters
*/
async function loadConfigWithParams(fs, configFilename, workingDir, modulesDir, params = {}) {
const cleanWorkingDir = path.resolve(workingDir);
const cleanModulesDir = path.resolve(modulesDir);
const cleanPublishDir = path.resolve(dir_1.DEFAULT_PUBLISH_DIR);
const baseDirs = {
workingDir: cleanWorkingDir,
modulesDir: cleanModulesDir,
publishDir: cleanPublishDir,
cacheDir: ''
};
baseDirs.cacheDir = await getCacheDir(fs, baseDirs.cacheDir);
const loader = new loader_1.ConfigLoader((0, sourcedescriptor_1.newSourceDescriptor)(fs, configFilename), baseDirs);
try {
const provider = await loader.loadConfigByDefault();
// Merge additional parameters
for (const [key, value] of Object.entries(params)) {
provider.set(key, value);
}
const absPublishDir = path.resolve(provider.get('publishDir') || dir_1.DEFAULT_PUBLISH_DIR);
await fs.mkdirAll(absPublishDir, 0o777);
return (0, config_1.newConfig)(fs, provider, (0, root_1.newRoot)(provider.get(''), provider.getParams('params')), (0, dir_1.newDir)(baseDirs.workingDir, baseDirs.modulesDir, absPublishDir), (0, module_1.newModule)(provider.get('module') || {}), (0, service_1.newService)(provider.get('')), provider.isSet('languages') ? (0, language_1.newLanguage)(provider.get('languages')) : (0, language_1.newLanguage)(provider.get('')), provider.isSet('taxonomies') ? (0, taxonomy_1.newTaxonomy)(provider.get('taxonomies')) : (0, taxonomy_1.newTaxonomy)(provider.get('')));
}
finally {
loader.deleteMergeStrategies();
}
}
/**
* Get cache directory
*/
async function getCacheDir(fs, cacheDir) {
if (cacheDir !== '') {
return cacheDir;
}
// Default cache directory logic - simplified
const homeDir = process.env.HOME || process.env.USERPROFILE || '';
const defaultCacheDir = path.join(homeDir, '.cache', 'mdf');
try {
await fs.mkdirAll(defaultCacheDir, 0o755);
return defaultCacheDir;
}
catch {
// If we can't create cache dir, use temp
return path.join('/tmp', 'hugo-cache');
}
}
//# sourceMappingURL=config.js.map