Settings.js 2.3 KB

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