mirror of
https://github.com/jrnl-org/jrnl.git
synced 2025-07-13 10:16:12 +02:00
[GH-632] confirming that each journal can be parsed during upgrade, and aborting upgrade if not
[GH-632] raising exception in upgrade.py on fail Handling it in install.py to prevent config from being overwritten when upgrade fails [GH-632] removing unnecessary whitespace [GH-632] removing unreachable return statement [GH-632] adding call to action to report issue when upgrade fails
This commit is contained in:
parent
328faa401c
commit
8abbdf4db5
6 changed files with 68 additions and 30 deletions
|
@ -44,6 +44,7 @@ older versions of jrnl anymore.
|
|||
encrypted_journals = {}
|
||||
plain_journals = {}
|
||||
other_journals = {}
|
||||
all_journals = []
|
||||
|
||||
for journal_name, journal_conf in config['journals'].items():
|
||||
if isinstance(journal_conf, dict):
|
||||
|
@ -85,19 +86,33 @@ older versions of jrnl anymore.
|
|||
util.prompt("\nUpgrading encrypted '{}' journal stored in {}...".format(journal_name, path))
|
||||
backup(path, binary=True)
|
||||
old_journal = Journal.open_journal(journal_name, util.scope_config(config, journal_name), legacy=True)
|
||||
new_journal = EncryptedJournal.from_journal(old_journal)
|
||||
new_journal.write()
|
||||
util.prompt(" Done.")
|
||||
all_journals.append(EncryptedJournal.from_journal(old_journal))
|
||||
|
||||
for journal_name, path in plain_journals.items():
|
||||
util.prompt("\nUpgrading plain text '{}' journal stored in {}...".format(journal_name, path))
|
||||
backup(path)
|
||||
old_journal = Journal.open_journal(journal_name, util.scope_config(config, journal_name), legacy=True)
|
||||
new_journal = Journal.PlainJournal.from_journal(old_journal)
|
||||
new_journal.write()
|
||||
util.prompt(" Done.")
|
||||
all_journals.append(Journal.PlainJournal.from_journal(old_journal))
|
||||
|
||||
# loop through lists to validate
|
||||
failed_journals = [j for j in all_journals if not j.validate_parsing()]
|
||||
|
||||
if len(failed_journals) > 0:
|
||||
util.prompt("\nThe following journal{} failed to upgrade:\n{}".format(
|
||||
's' if len(failed_journals) > 1 else '', "\n".join(j.name for j in failed_journals))
|
||||
)
|
||||
|
||||
raise UpgradeValidationException
|
||||
|
||||
# write all journals - or - don't
|
||||
for j in all_journals:
|
||||
j.write()
|
||||
|
||||
util.prompt("\nUpgrading config...")
|
||||
backup(config_path)
|
||||
|
||||
util.prompt("\nWe're all done here and you can start enjoying jrnl 2.".format(config_path))
|
||||
|
||||
class UpgradeValidationException(Exception):
|
||||
"""Raised when the contents of an upgraded journal do not match the old journal"""
|
||||
pass
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue