diff --git a/libraries/settings/Settings.js b/libraries/settings/Settings.js old mode 100755 new mode 100644 index 7b32d24d27..106de03f13 --- a/libraries/settings/Settings.js +++ b/libraries/settings/Settings.js @@ -1,50 +1,67 @@ -fs = require "fs" -path = require "path" -env = (process.env.NODE_ENV or "development").toLowerCase() +/* + * decaffeinate suggestions: + * DS101: Remove unnecessary use of Array.from + * DS207: Consider shorter variations of null checks + * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md + */ +let defaults, possibleConfigFiles, settingsExist; +const fs = require("fs"); +const path = require("path"); +const env = (process.env.NODE_ENV || "development").toLowerCase(); -merge = (settings, defaults) -> - for key, value of settings - if typeof(value) == "object" and value not instanceof Array - defaults[key] = merge(settings[key], defaults[key] or {}) - else - defaults[key] = value - return defaults +var merge = function(settings, defaults) { + for (let key in settings) { + const value = settings[key]; + if ((typeof(value) === "object") && !(value instanceof Array)) { + defaults[key] = merge(settings[key], defaults[key] || {}); + } else { + defaults[key] = value; + } + } + return defaults; +}; -defaultSettingsPath = path.normalize(__dirname + "/../../config/settings.defaults") +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") - console.warn "CoffeeScript settings file #{defaultSettingsPath}.coffee is deprecated, please convert to JavaScript" - console.log "Using default settings from #{defaultSettingsPath}.coffee" - defaults = require("#{defaultSettingsPath}.coffee") - settingsExist = true -else - defaults = {} - settingsExist = false +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`)) { + console.warn(`CoffeeScript settings file ${defaultSettingsPath}.coffee is deprecated, please convert to JavaScript`); + console.log(`Using default settings from ${defaultSettingsPath}.coffee`); + defaults = require(`${defaultSettingsPath}.coffee`); + settingsExist = true; +} else { + defaults = {}; + settingsExist = false; +} -if process.env.SHARELATEX_CONFIG? - possibleConfigFiles = [process.env.SHARELATEX_CONFIG] -else +if (process.env.SHARELATEX_CONFIG != null) { + possibleConfigFiles = [process.env.SHARELATEX_CONFIG]; +} else { possibleConfigFiles = [ - process.cwd() + "/config/settings.#{env}.js" - path.normalize(__dirname + "/../../config/settings.#{env}.js") - process.cwd() + "/config/settings.#{env}.coffee" - path.normalize(__dirname + "/../../config/settings.#{env}.coffee") - ] + process.cwd() + `/config/settings.${env}.js`, + path.normalize(__dirname + `/../../config/settings.${env}.js`), + process.cwd() + `/config/settings.${env}.coffee`, + path.normalize(__dirname + `/../../config/settings.${env}.coffee`) + ]; +} -for file in possibleConfigFiles - if fs.existsSync(file) - if file.endsWith('.coffee') - console.warn "CoffeeScript settings file #{file} is deprecated, please convert to JavaScript" - console.log "Using settings from " + file - module.exports = merge(require(file), defaults) - settingsExist = true - break +for (let file of Array.from(possibleConfigFiles)) { + if (fs.existsSync(file)) { + if (file.endsWith('.coffee')) { + console.warn(`CoffeeScript settings file ${file} is deprecated, 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." +if (!settingsExist) { + console.warn("No settings or defaults found. I'm flying blind."); +} -module.exports = defaults +module.exports = defaults;