Settings.js 1.7 KB

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