Settings.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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}.js")
  13. console.log "Using default settings from #{defaultSettingsPath}.js"
  14. defaults = require("#{defaultSettingsPath}.js")
  15. settingsExist = true
  16. else if fs.existsSync("#{defaultSettingsPath}.coffee")
  17. console.warn "CoffeeScript settings file #{defaultSettingsPath}.coffee is deprecated, please convert to JavaScript"
  18. console.log "Using default settings from #{defaultSettingsPath}.coffee"
  19. defaults = require("#{defaultSettingsPath}.coffee")
  20. settingsExist = true
  21. else
  22. defaults = {}
  23. settingsExist = false
  24. if process.env.SHARELATEX_CONFIG?
  25. possibleConfigFiles = [process.env.SHARELATEX_CONFIG]
  26. else
  27. possibleConfigFiles = [
  28. process.cwd() + "/config/settings.#{env}.js"
  29. path.normalize(__dirname + "/../../config/settings.#{env}.js")
  30. process.cwd() + "/config/settings.#{env}.coffee"
  31. path.normalize(__dirname + "/../../config/settings.#{env}.coffee")
  32. ]
  33. for file in possibleConfigFiles
  34. if fs.existsSync(file)
  35. if file.endsWith('.coffee')
  36. console.warn "CoffeeScript settings file #{file} is deprecated, please convert to JavaScript"
  37. console.log "Using settings from " + file
  38. module.exports = merge(require(file), defaults)
  39. settingsExist = true
  40. break
  41. if !settingsExist
  42. console.warn "No settings or defaults found. I'm flying blind."
  43. module.exports = defaults