Skip to content

Commit 3a508b9

Browse files
committed
Update settings_migrator.js
1 parent a8ed0e9 commit 3a508b9

File tree

2 files changed

+23
-11
lines changed

2 files changed

+23
-11
lines changed

manifest.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
"Readme.md": "3ac4814b63238ce81803ba6464bc4eaf70fea090cd4d7b42d3d6dcce7d243719",
2929
"index.js": "d05762c098b1ed00f9426aa652e6db3c46dc555f58111b69cf1350e3b4c512a8",
3030
"module.json": "d8266ebae054a5b2dca9c17cf4033b24ffd0d493ab48e398dc7b1efef7dd9856",
31-
"settings_migrator.js": "def6b1261793917ce7e88b753ac5b41834630f4846646cbc0065fb2d3d342784",
31+
"settings_migrator.js": "9b51556fec65d12c7905c2df26b8e04b9b762b9692f0c358b763a07ecf5cae12",
3232
"settings_structure.js": "0a16a94bcf1fb926654d96bcdd9b8237db644b42d71fe1cc882b12fdbbb22a1f"
3333
}
3434
}

settings_migrator.js

+22-10
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,26 @@ const DefaultSettings = {
1111
}
1212

1313
module.exports = function MigrateSettings(from_ver, to_ver, settings) {
14-
if (from_ver === undefined) {
15-
// Migrate legacy config file
16-
return Object.assign(Object.assign({}, DefaultSettings), settings);
17-
} else if (from_ver === null) {
18-
// No config file exists, use default settings
19-
return DefaultSettings;
20-
} else {
21-
// Migrate from older version (using the new system) to latest one
22-
throw new Error('So far there is only one settings version and this should never be reached!');
14+
if (from_ver === undefined) return { ...DefaultSettings, ...settings };
15+
else if (from_ver === null) return DefaultSettings;
16+
else {
17+
from_ver = Number(from_ver);
18+
to_ver = Number(to_ver);
19+
if (from_ver + 1 < to_ver) {
20+
settings = MigrateSettings(from_ver, from_ver + 1, settings);
21+
return MigrateSettings(from_ver + 1, to_ver, settings);
22+
}
23+
const oldsettings = settings;
24+
switch (to_ver) {
25+
default:
26+
settings = Object.assign(DefaultSettings, {});
27+
28+
for (const option in oldsettings) {
29+
if (settings[option] !== undefined) {
30+
settings[option] = oldsettings[option];
31+
}
32+
}
33+
}
34+
return settings;
2335
}
24-
}
36+
};

0 commit comments

Comments
 (0)