2015-12-13 05:57:31 -08:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
const fs = require('fs');
|
2016-01-23 05:58:44 -08:00
|
|
|
const settingsVersion = 1;
|
|
|
|
|
|
|
|
var merge = function(base, target) {
|
|
|
|
var merged = base;
|
|
|
|
if (!target) {
|
|
|
|
target = {};
|
|
|
|
}
|
|
|
|
for (var prop in target) {
|
|
|
|
merged[prop] = target[prop];
|
|
|
|
}
|
|
|
|
return merged;
|
|
|
|
};
|
|
|
|
|
|
|
|
var loadDefault = function(version) {
|
|
|
|
if (version == null) {
|
|
|
|
version = settingsVersion
|
|
|
|
}
|
|
|
|
switch (version) {
|
|
|
|
case 1:
|
|
|
|
return {
|
|
|
|
teams: [],
|
|
|
|
hideMenuBar: false,
|
2016-04-11 05:51:24 -07:00
|
|
|
showTrayIcon: false,
|
2016-05-07 16:01:56 -07:00
|
|
|
trayIconTheme: '',
|
2016-05-13 05:49:33 -07:00
|
|
|
disablewebsecurity: true,
|
2016-01-23 05:58:44 -08:00
|
|
|
version: 1
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
2015-12-13 05:57:31 -08:00
|
|
|
|
|
|
|
var upgradeV0toV1 = function(config_v0) {
|
2016-01-23 05:58:44 -08:00
|
|
|
var config = loadDefault(1);
|
|
|
|
config.teams.push({
|
|
|
|
name: 'Primary team',
|
|
|
|
url: config_v0.url
|
|
|
|
});
|
|
|
|
return config;
|
2015-12-13 05:57:31 -08:00
|
|
|
};
|
|
|
|
|
|
|
|
var upgrade = function(config) {
|
|
|
|
var config_version = config.version ? config.version : 0;
|
|
|
|
switch (config_version) {
|
|
|
|
case 0:
|
|
|
|
return upgrade(upgradeV0toV1(config));
|
|
|
|
default:
|
|
|
|
return config;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
module.exports = {
|
2016-01-23 05:58:44 -08:00
|
|
|
version: settingsVersion,
|
2015-12-13 05:57:31 -08:00
|
|
|
|
|
|
|
upgrade: upgrade,
|
|
|
|
|
|
|
|
readFileSync: function(configFile) {
|
2016-01-23 05:58:44 -08:00
|
|
|
var config = JSON.parse(fs.readFileSync(configFile, 'utf8'));
|
|
|
|
if (config.version === settingsVersion) {
|
|
|
|
var default_config = this.loadDefault();
|
|
|
|
config = merge(default_config, config);
|
|
|
|
}
|
|
|
|
return config;
|
2015-12-13 05:57:31 -08:00
|
|
|
},
|
|
|
|
|
|
|
|
writeFileSync: function(configFile, config) {
|
2016-01-23 05:58:44 -08:00
|
|
|
if (config.version != settingsVersion) {
|
|
|
|
throw 'version ' + config.version + ' is not equal to ' + settingsVersion;
|
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
|
|
|
},
|
|
|
|
|
2016-01-23 05:58:44 -08:00
|
|
|
loadDefault: loadDefault
|
2015-12-13 05:57:31 -08:00
|
|
|
};
|