Settings.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /* eslint-disable no-console */
  2. const fs = require('node:fs')
  3. const Path = require('node:path')
  4. const { merge } = require('./merge')
  5. const CWD = process.cwd()
  6. const ENTRY_POINT_DIR = process.argv[1]
  7. ? Path.dirname(process.argv[1])
  8. : undefined
  9. const NODE_ENV = (process.env.NODE_ENV || 'development').toLowerCase()
  10. const SHARELATEX_CONFIG = process.env.SHARELATEX_CONFIG
  11. const OVERLEAF_CONFIG = process.env.OVERLEAF_CONFIG || SHARELATEX_CONFIG
  12. if (SHARELATEX_CONFIG && SHARELATEX_CONFIG !== OVERLEAF_CONFIG) {
  13. throw new Error(
  14. 'found mismatching SHARELATEX_CONFIG, rename to OVERLEAF_CONFIG'
  15. )
  16. }
  17. let settings
  18. let settingsExist = false
  19. const defaultsPath =
  20. pathIfExists(Path.join(CWD, 'config/settings.defaults.cjs')) ||
  21. pathIfExists(Path.join(CWD, 'config/settings.defaults.js')) ||
  22. pathIfExists(Path.join(ENTRY_POINT_DIR, 'config/settings.defaults.cjs')) ||
  23. pathIfExists(Path.join(ENTRY_POINT_DIR, 'config/settings.defaults.js'))
  24. if (defaultsPath) {
  25. console.log(`Using default settings from ${defaultsPath}`)
  26. settings = require(defaultsPath)
  27. settingsExist = true
  28. } else {
  29. settings = {}
  30. }
  31. const overridesPath =
  32. pathIfExists(OVERLEAF_CONFIG) ||
  33. pathIfExists(Path.join(CWD, `config/settings.${NODE_ENV}.cjs`)) ||
  34. pathIfExists(Path.join(CWD, `config/settings.${NODE_ENV}.js`))
  35. if (overridesPath) {
  36. console.log(`Using settings from ${overridesPath}`)
  37. settings = merge(require(overridesPath), settings)
  38. settingsExist = true
  39. }
  40. if (!settingsExist) {
  41. console.warn("No settings or defaults found. I'm flying blind.")
  42. }
  43. module.exports = settings
  44. function pathIfExists(path) {
  45. if (path && fs.existsSync(path)) {
  46. return path
  47. }
  48. return null
  49. }