Settings.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /* eslint-disable no-console */
  2. let defaults, possibleConfigFiles, settingsExist
  3. const fs = require('fs')
  4. const path = require('path')
  5. const env = (process.env.NODE_ENV || 'development').toLowerCase()
  6. const { merge } = require('./merge')
  7. const defaultSettingsPath = path.join(
  8. __dirname,
  9. '../../../config/settings.defaults'
  10. )
  11. if (fs.existsSync(`${defaultSettingsPath}.js`)) {
  12. console.log(`Using default settings from ${defaultSettingsPath}.js`)
  13. defaults = require(`${defaultSettingsPath}.js`)
  14. settingsExist = true
  15. } else if (fs.existsSync(`${defaultSettingsPath}.coffee`)) {
  16. // TODO: remove this in the next major version
  17. throw new Error(
  18. `CoffeeScript settings file ${defaultSettingsPath}.coffee is no longer supported, please convert to JavaScript`
  19. )
  20. } else {
  21. defaults = {}
  22. settingsExist = false
  23. }
  24. if (process.env.SHARELATEX_CONFIG) {
  25. possibleConfigFiles = [process.env.SHARELATEX_CONFIG]
  26. } else {
  27. possibleConfigFiles = [
  28. path.join(process.cwd(), `config/settings.${env}.js`),
  29. path.join(__dirname, `../../../config/settings.${env}.js`),
  30. // TODO: remove these in the next major version
  31. path.join(process.cwd(), `config/settings.${env}.coffee`),
  32. path.join(__dirname, `../../../config/settings.${env}.coffee`),
  33. ]
  34. }
  35. for (const file of possibleConfigFiles) {
  36. if (fs.existsSync(file)) {
  37. // TODO: remove this in the next major version
  38. if (file.endsWith('.coffee')) {
  39. throw new Error(
  40. `CoffeeScript settings file ${file} is no longer supported, please convert to JavaScript`
  41. )
  42. }
  43. console.log('Using settings from ' + file)
  44. module.exports = merge(require(file), defaults)
  45. settingsExist = true
  46. break
  47. }
  48. }
  49. if (!settingsExist) {
  50. console.warn("No settings or defaults found. I'm flying blind.")
  51. }
  52. module.exports = defaults