Sfoglia il codice sorgente

Load and merge defaults if available

Load and merge defaults if available
James Allen 12 anni fa
parent
commit
c06e237e31
1 ha cambiato i file con 27 aggiunte e 4 eliminazioni
  1. 27 4
      libraries/settings/Settings.coffee

+ 27 - 4
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
+
+if !settingsExist
+	console.warn "No settings or defaults found. I'm flying blind."
+
+module.exports = defaults
 
-console.log "No config file could be found at: ", possibleConfigFiles
-throw new Error("No config file found")
+console.log "Settings", module.exports