Settings.coffee 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. fs = require "fs"
  2. path = require "path"
  3. env = (process.env.NODE_ENV or "development").toLowerCase()
  4. merge = (settings, defaults) ->
  5. for key, value of settings
  6. if typeof(value) == "object" and value not instanceof Array
  7. defaults[key] = merge(settings[key], defaults[key] or {})
  8. else
  9. defaults[key] = value
  10. return defaults
  11. defaultSettingsPath = path.normalize(__dirname + "/../../config/settings.defaults")
  12. if fs.existsSync("#{defaultSettingsPath}.coffee") or fs.existsSync("#{defaultSettingsPath}.js")
  13. defaults = require(defaultSettingsPath)
  14. settingsExist = true
  15. else
  16. defaults = {}
  17. settingsExist = false
  18. if process.env.SHARELATEX_CONFIG?
  19. possibleConfigFiles = [process.env.SHARELATEX_CONFIG]
  20. else
  21. possibleConfigFiles = [
  22. process.cwd() + "/config/settings.#{env}.js"
  23. path.normalize(__dirname + "/../../config/settings.#{env}.js")
  24. process.cwd() + "/config/settings.#{env}.coffee"
  25. path.normalize(__dirname + "/../../config/settings.#{env}.coffee")
  26. ]
  27. for file in possibleConfigFiles
  28. if fs.existsSync(file)
  29. console.log "Using settings from " + file
  30. module.exports = merge(require(file), defaults)
  31. settingsExist = true
  32. break
  33. if !settingsExist
  34. console.warn "No settings or defaults found. I'm flying blind."
  35. module.exports = defaults