@@ -11,14 +11,26 @@ const DefaultSettings = {
11
11
}
12
12
13
13
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 ;
23
35
}
24
- }
36
+ } ;
0 commit comments