sheercms
Version:
Sheer Cliff CMS is a simple and powerful content management system (CMS) for Node JS.
72 lines (67 loc) • 2.15 kB
JavaScript
/*
Sheer Cliff CMS Plugin: config - manages the configurations settings for the CMS.
*/
var path_module = require('path');
var fs = require('fs');
var async = require("async");
var merge = require('object-merge');
/*
callback: (err)
*/
module.exports.init = function(options, callback) {
loadConfig(function(err) {
if (err) {
if (callback) callback(err);
}
else {
module.exports.mergeOptions(options);
if (callback) callback(null);
}
});
};
/*
Merge these options with the settings config
*/
module.exports.mergeOptions = function(options) {
if (options) {
console.log("Merging options with settings.");
var settings = module.exports.settings;
if (settings)
module.exports.settings = merge(settings, options);
else
module.exports.settings = options;
}
};
function loadConfig(callback) {
console.log("Loading CMS configuraton.");
var dir = path_module.join(__dirname, "..", "config");
fs.readdir(dir, function(err,files){
if (err) {
logger.error(err);
if (callback) callback(err);
} else {
console.log("Found " + files.length + " configuration files.");
async.eachSeries(files, function(file, done) {
fs.readFile(path_module.join(dir, file),'utf-8',function(err,text){
if (err) {
done(err);
} else {
if (file.indexOf(".json") > -1) {
file = file.substr(0, file.length - 5);
console.log("Found config file: " + file);
module.exports[file] = JSON.parse(text);
}
done();
}
});
}, function(err){
if( err ) {
logger.error(err);
if (callback) callback(err);
} else {
if (callback) callback(null);
}
});
}
});
}