mirror of
https://github.com/jrnl-org/jrnl.git
synced 2025-05-20 21:18:32 +02:00
upgrade_config checks for nested changes
This commit is contained in:
parent
9d9f61ac1e
commit
65eb1bb51b
1 changed files with 12 additions and 12 deletions
|
@ -10,6 +10,7 @@ from . import __version__
|
||||||
from .Journal import PlainJournal
|
from .Journal import PlainJournal
|
||||||
from .EncryptedJournal import EncryptedJournal
|
from .EncryptedJournal import EncryptedJournal
|
||||||
from .util import UserAbort
|
from .util import UserAbort
|
||||||
|
from collections.abc import Mapping
|
||||||
import yaml
|
import yaml
|
||||||
import logging
|
import logging
|
||||||
import sys
|
import sys
|
||||||
|
@ -61,19 +62,16 @@ default_config = {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def upgrade_config(config):
|
def upgrade_config(user_config, new_config=default_config):
|
||||||
"""Checks if there are keys missing in a given config dict, and if so, updates the config file accordingly.
|
"""Checks if there are keys missing in a given config dict, and returns a config dict with them added.
|
||||||
This essentially automatically ports jrnl installations if new config parameters are introduced in later
|
This essentially automatically ports jrnl installations if new config parameters are introduced in later
|
||||||
versions."""
|
versions."""
|
||||||
missing_keys = set(default_config).difference(config)
|
for k, v in new_config.items():
|
||||||
if missing_keys:
|
new_value = user_config.get(k)
|
||||||
for key in missing_keys:
|
if isinstance(v, Mapping) and isinstance(new_value, Mapping):
|
||||||
config[key] = default_config[key]
|
user_config[k] = v
|
||||||
save_config(config)
|
upgrade_config(new_value, v)
|
||||||
print(
|
return user_config
|
||||||
f"[Configuration updated to newest version at {CONFIG_FILE_PATH}]",
|
|
||||||
file=sys.stderr,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def save_config(config):
|
def save_config(config):
|
||||||
|
@ -113,7 +111,9 @@ def load_or_install_jrnl():
|
||||||
print("Exiting.", file=sys.stderr)
|
print("Exiting.", file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
upgrade_config(config)
|
if config.get('version') and config.get('version') < __version__:
|
||||||
|
upgraded_user_config = upgrade_config(config)
|
||||||
|
save_config(upgraded_user_config)
|
||||||
|
|
||||||
return config
|
return config
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Add table
Reference in a new issue