2015-12-13 05:57:31 -08:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
const fs = require('fs');
|
2017-09-07 16:20:48 -07:00
|
|
|
const path = require('path');
|
2017-10-21 07:41:57 -07:00
|
|
|
const buildConfig = require('./config/buildConfig');
|
2016-01-23 05:58:44 -08:00
|
|
|
|
2016-09-25 07:14:01 -07:00
|
|
|
function merge(base, target) {
|
|
|
|
return Object.assign({}, base, target);
|
|
|
|
}
|
2016-01-23 05:58:44 -08:00
|
|
|
|
2017-10-21 07:41:57 -07:00
|
|
|
const defaultPreferences = require('./config/defaultPreferences');
|
|
|
|
const upgradePreferences = require('./config/upgradePreferences');
|
2017-09-07 12:00:02 -07:00
|
|
|
|
2017-10-21 07:41:57 -07:00
|
|
|
function loadDefault(spellCheckerLocale) {
|
|
|
|
const config = JSON.parse(JSON.stringify(defaultPreferences));
|
|
|
|
return Object.assign({}, config, {
|
|
|
|
spellCheckerLocale: spellCheckerLocale || defaultPreferences.pellCheckerLocale || 'en-US'
|
2017-09-07 12:00:02 -07:00
|
|
|
});
|
2016-09-25 07:14:01 -07:00
|
|
|
}
|
2015-12-13 05:57:31 -08:00
|
|
|
|
2017-10-21 07:41:57 -07:00
|
|
|
function hasBuildConfigDefaultTeams(config) {
|
|
|
|
return config.defaultTeams.length > 0;
|
2016-09-25 07:14:01 -07:00
|
|
|
}
|
2015-12-13 05:57:31 -08:00
|
|
|
|
2017-10-21 07:41:57 -07:00
|
|
|
function upgrade(config) {
|
|
|
|
return upgradePreferences(config);
|
2016-09-25 07:14:01 -07:00
|
|
|
}
|
2015-12-13 05:57:31 -08:00
|
|
|
|
|
|
|
module.exports = {
|
2017-10-21 07:41:57 -07:00
|
|
|
version: defaultPreferences.version,
|
2015-12-13 05:57:31 -08:00
|
|
|
|
2016-09-25 07:14:01 -07:00
|
|
|
upgrade,
|
2015-12-13 05:57:31 -08:00
|
|
|
|
2016-09-25 07:14:01 -07:00
|
|
|
readFileSync(configFile) {
|
2017-10-21 07:41:57 -07:00
|
|
|
const config = JSON.parse(fs.readFileSync(configFile, 'utf8'));
|
|
|
|
if (config.version === defaultPreferences.version) {
|
|
|
|
const defaultConfig = loadDefault();
|
|
|
|
return merge(defaultConfig, config);
|
2016-01-23 05:58:44 -08:00
|
|
|
}
|
|
|
|
return config;
|
2015-12-13 05:57:31 -08:00
|
|
|
},
|
|
|
|
|
2017-02-16 04:55:44 -08:00
|
|
|
writeFile(configFile, config, callback) {
|
2017-10-21 07:41:57 -07:00
|
|
|
if (config.version !== defaultPreferences.version) {
|
|
|
|
throw new Error('version ' + config.version + ' is not equal to ' + defaultPreferences.version);
|
2017-02-16 04:55:44 -08:00
|
|
|
}
|
|
|
|
var data = JSON.stringify(config, null, ' ');
|
|
|
|
fs.writeFile(configFile, data, 'utf8', callback);
|
|
|
|
},
|
|
|
|
|
2016-09-25 07:14:01 -07:00
|
|
|
writeFileSync(configFile, config) {
|
2017-10-21 07:41:57 -07:00
|
|
|
if (config.version !== defaultPreferences.version) {
|
|
|
|
throw new Error('version ' + config.version + ' is not equal to ' + defaultPreferences.version);
|
2015-12-13 05:57:31 -08:00
|
|
|
}
|
2017-09-07 16:20:48 -07:00
|
|
|
|
|
|
|
const dir = path.dirname(configFile);
|
|
|
|
if (!fs.existsSync(dir)) {
|
|
|
|
fs.mkdirSync(dir);
|
|
|
|
}
|
|
|
|
|
2015-12-13 05:57:31 -08:00
|
|
|
var data = JSON.stringify(config, null, ' ');
|
|
|
|
fs.writeFileSync(configFile, data, 'utf8');
|
2016-01-14 06:27:37 -08:00
|
|
|
},
|
|
|
|
|
2017-10-21 07:41:57 -07:00
|
|
|
loadDefault,
|
|
|
|
|
|
|
|
mergeDefaultTeams(teams) {
|
|
|
|
const newTeams = [];
|
|
|
|
if (hasBuildConfigDefaultTeams(buildConfig)) {
|
|
|
|
newTeams.push(...JSON.parse(JSON.stringify(buildConfig.defaultTeams)));
|
|
|
|
}
|
2017-11-07 05:18:24 -08:00
|
|
|
if (buildConfig.enableServerManagement) {
|
|
|
|
newTeams.push(...JSON.parse(JSON.stringify(teams)));
|
|
|
|
}
|
2017-10-21 07:41:57 -07:00
|
|
|
return newTeams;
|
|
|
|
}
|
2015-12-13 05:57:31 -08:00
|
|
|
};
|