UNPKG

sheercms

Version:

Sheer Cliff CMS is a simple and powerful content management system (CMS) for Node JS.

72 lines (67 loc) 2.15 kB
/* 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); } }); } }); }