From c06e237e312e5e59985c0a2c18388738c9351abc Mon Sep 17 00:00:00 2001 From: James Allen Date: Wed, 2 Apr 2014 17:25:50 +0100 Subject: [PATCH] Load and merge defaults if available Load and merge defaults if available --- libraries/settings/Settings.coffee | 31 ++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/libraries/settings/Settings.coffee b/libraries/settings/Settings.coffee index 8f91b46403..dc289e2bfb 100755 --- a/libraries/settings/Settings.coffee +++ b/libraries/settings/Settings.coffee @@ -2,6 +2,24 @@ fs = require "fs" path = require "path" env = (process.env.NODE_ENV or "development").toLowerCase() +merge = (settings, defaults) -> + for key, value of settings + if typeof(value) == "object" + defaults[key] = merge(settings[key], defaults[key] or {}) + else + defaults[key] = value + return defaults + +defaultSettingsPath = path.normalize(__dirname + "/../../config/settings.defaults.coffee") + +console.log "default settings", defaultSettingsPath +if fs.existsSync(defaultSettingsPath) + defaults = require(defaultSettingsPath) + settingsExist = true +else + defaults = {} + settingsExist = false + if process.env.SHARELATEX_CONFIG? possibleConfigFiles = [process.env.SHARELATEX_CONFIG] else @@ -12,8 +30,13 @@ else for file in possibleConfigFiles if fs.existsSync(file) - module.exports = require(file) - return + module.exports = merge(require(file), defaults) + settingsExist = true + break -console.log "No config file could be found at: ", possibleConfigFiles -throw new Error("No config file found") +if !settingsExist + console.warn "No settings or defaults found. I'm flying blind." + +module.exports = defaults + +console.log "Settings", module.exports \ No newline at end of file