Settings.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /*
  2. * decaffeinate suggestions:
  3. * DS101: Remove unnecessary use of Array.from
  4. * DS207: Consider shorter variations of null checks
  5. * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
  6. */
  7. let defaults, possibleConfigFiles, settingsExist;
  8. const fs = require("fs");
  9. const path = require("path");
  10. const env = (process.env.NODE_ENV || "development").toLowerCase();
  11. var merge = function(settings, defaults) {
  12. for (let key in settings) {
  13. const value = settings[key];
  14. if ((typeof(value) === "object") && !(value instanceof Array)) {
  15. defaults[key] = merge(settings[key], defaults[key] || {});
  16. } else {
  17. defaults[key] = value;
  18. }
  19. }
  20. return defaults;
  21. };
  22. const defaultSettingsPath = path.normalize(__dirname + "/../../config/settings.defaults");
  23. if (fs.existsSync(`${defaultSettingsPath}.js`)) {
  24. console.log(`Using default settings from ${defaultSettingsPath}.js`);
  25. defaults = require(`${defaultSettingsPath}.js`);
  26. settingsExist = true;
  27. } else if (fs.existsSync(`${defaultSettingsPath}.coffee`)) {
  28. console.warn(`CoffeeScript settings file ${defaultSettingsPath}.coffee is deprecated, please convert to JavaScript`);
  29. console.log(`Using default settings from ${defaultSettingsPath}.coffee`);
  30. defaults = require(`${defaultSettingsPath}.coffee`);
  31. settingsExist = true;
  32. } else {
  33. defaults = {};
  34. settingsExist = false;
  35. }
  36. if (process.env.SHARELATEX_CONFIG != null) {
  37. possibleConfigFiles = [process.env.SHARELATEX_CONFIG];
  38. } else {
  39. possibleConfigFiles = [
  40. process.cwd() + `/config/settings.${env}.js`,
  41. path.normalize(__dirname + `/../../config/settings.${env}.js`),
  42. process.cwd() + `/config/settings.${env}.coffee`,
  43. path.normalize(__dirname + `/../../config/settings.${env}.coffee`)
  44. ];
  45. }
  46. for (let file of Array.from(possibleConfigFiles)) {
  47. if (fs.existsSync(file)) {
  48. if (file.endsWith('.coffee')) {
  49. console.warn(`CoffeeScript settings file ${file} is deprecated, please convert to JavaScript`);
  50. }
  51. console.log("Using settings from " + file);
  52. module.exports = merge(require(file), defaults);
  53. settingsExist = true;
  54. break;
  55. }
  56. }
  57. if (!settingsExist) {
  58. console.warn("No settings or defaults found. I'm flying blind.");
  59. }
  60. module.exports = defaults;