Settings.js 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. /* eslint-disable no-console */
  2. const fs = require('fs')
  3. const Path = require('path')
  4. const { merge } = require('./merge')
  5. const CWD = process.cwd()
  6. const NODE_ENV = (process.env.NODE_ENV || 'development').toLowerCase()
  7. const SHARELATEX_CONFIG = process.env.SHARELATEX_CONFIG
  8. let settings
  9. let settingsExist = false
  10. const defaultsPath = pathIfExists(Path.join(CWD, 'config/settings.defaults.js'))
  11. if (defaultsPath) {
  12. console.log(`Using default settings from ${defaultsPath}`)
  13. settings = require(defaultsPath)
  14. settingsExist = true
  15. } else {
  16. settings = {}
  17. }
  18. const overridesPath =
  19. pathIfExists(SHARELATEX_CONFIG) ||
  20. pathIfExists(Path.join(CWD, `config/settings.${NODE_ENV}.js`))
  21. if (overridesPath) {
  22. console.log(`Using settings from ${overridesPath}`)
  23. settings = merge(require(overridesPath), settings)
  24. settingsExist = true
  25. }
  26. if (!settingsExist) {
  27. console.warn("No settings or defaults found. I'm flying blind.")
  28. }
  29. module.exports = settings
  30. function pathIfExists(path) {
  31. if (path && fs.existsSync(path)) {
  32. return path
  33. }
  34. return null
  35. }