diff --git a/src/common/settings.js b/src/common/settings.js new file mode 100644 index 00000000..afa5c80d --- /dev/null +++ b/src/common/settings.js @@ -0,0 +1,39 @@ +'use strict'; + +const fs = require('fs'); +const version = 1; + +var upgradeV0toV1 = function(config_v0) { + return { + url: [config_v0.url], + version: 1 + }; +}; + +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 = { + version: version, + + upgrade: upgrade, + + readFileSync: function(configFile) { + return JSON.parse(fs.readFileSync(configFile, 'utf8')); + }, + + writeFileSync: function(configFile, config) { + if (config.version != version) { + throw 'version ' + config.version + ' is not equal to ' + version; + } + var data = JSON.stringify(config, null, ' '); + fs.writeFileSync(configFile, data, 'utf8'); + } +}; diff --git a/src/index.js b/src/index.js index e74dba8c..a0593b83 100644 --- a/src/index.js +++ b/src/index.js @@ -8,15 +8,19 @@ const fs = require('fs'); var url = require('url'); var contextMenu = require('./menus/context'); +const settings = require('./common/settings'); var webView = document.getElementById('mainWebview'); try { var configFile = remote.getGlobal('config-file'); - var str = fs.readFileSync(configFile); - var config = JSON.parse(str); - if (config.url) { - webView.setAttribute('src', config.url); + var config = settings.readFileSync(configFile); + if (config.version != settings.version) { + config = settings.upgrade(config); + settings.writeFileSync(configFile, config); + } + if (config.url[0]) { + webView.setAttribute('src', config.url[0]); } else { throw 'URL is not configured'; diff --git a/src/settings.html b/src/settings.html index 865bee27..1d222b8f 100644 --- a/src/settings.html +++ b/src/settings.html @@ -16,18 +16,17 @@