|
|
@@ -0,0 +1,50 @@
|
|
|
+let defaults, possibleConfigFiles, settingsExist;
|
|
|
+const fs = require("fs");
|
|
|
+const path = require("path");
|
|
|
+const env = (process.env.NODE_ENV || "development").toLowerCase();
|
|
|
+const { merge } = require('./merge');
|
|
|
+
|
|
|
+const defaultSettingsPath = path.normalize(__dirname + "/../../../config/settings.defaults");
|
|
|
+
|
|
|
+if (fs.existsSync(`${defaultSettingsPath}.js`)) {
|
|
|
+ console.log(`Using default settings from ${defaultSettingsPath}.js`);
|
|
|
+ defaults = require(`${defaultSettingsPath}.js`);
|
|
|
+ settingsExist = true;
|
|
|
+} else if (fs.existsSync(`${defaultSettingsPath}.coffee`)) {
|
|
|
+ // TODO: remove this in the next major version
|
|
|
+ throw new Error(`CoffeeScript settings file ${defaultSettingsPath}.coffee is no longer supported, please convert to JavaScript`);
|
|
|
+} else {
|
|
|
+ defaults = {};
|
|
|
+ settingsExist = false;
|
|
|
+}
|
|
|
+
|
|
|
+if (process.env.SHARELATEX_CONFIG) {
|
|
|
+ possibleConfigFiles = [process.env.SHARELATEX_CONFIG];
|
|
|
+} else {
|
|
|
+ possibleConfigFiles = [
|
|
|
+ process.cwd() + `/config/settings.${env}.js`,
|
|
|
+ path.normalize(__dirname + `/../../../config/settings.${env}.js`),
|
|
|
+ // TODO: remove these in the next major version
|
|
|
+ process.cwd() + `/config/settings.${env}.coffee`,
|
|
|
+ path.normalize(__dirname + `/../../../config/settings.${env}.coffee`)
|
|
|
+ ];
|
|
|
+}
|
|
|
+
|
|
|
+for (let file of possibleConfigFiles) {
|
|
|
+ if (fs.existsSync(file)) {
|
|
|
+ // TODO: remove this in the next major version
|
|
|
+ if (file.endsWith('.coffee')) {
|
|
|
+ throw new Error(`CoffeeScript settings file ${file} is no longer supported, please convert to JavaScript`);
|
|
|
+ }
|
|
|
+ console.log("Using settings from " + file);
|
|
|
+ module.exports = merge(require(file), defaults);
|
|
|
+ settingsExist = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+if (!settingsExist) {
|
|
|
+ console.warn("No settings or defaults found. I'm flying blind.");
|
|
|
+}
|
|
|
+
|
|
|
+module.exports = defaults;
|