mirror of
https://github.com/jrnl-org/jrnl.git
synced 2025-05-10 08:38:32 +02:00
Fix for upgrade with missing journal (#796)
* Fix for upgrade with missing journal * add test, refactor solution * add missing test config Co-authored-by: Jonathan Wren <jonathan@nowandwren.com>
This commit is contained in:
parent
15429d4f61
commit
65a3b2ce7c
4 changed files with 69 additions and 5 deletions
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"default_hour": 9,
|
||||
"timeformat": "%Y-%m-%d %H:%M",
|
||||
"linewrap": 80,
|
||||
"encrypt": true,
|
||||
"editor": "",
|
||||
"default_minute": 0,
|
||||
"highlight": true,
|
||||
"journals": {"default": "features/journals/encrypted_jrnl-1-9-5.journal", "missing": "features/journals/missing.journal"},
|
||||
"tagsymbols": "@"
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"default_hour": 9,
|
||||
"timeformat": "%Y-%m-%d %H:%M",
|
||||
"linewrap": 80,
|
||||
"encrypt": false,
|
||||
"editor": "",
|
||||
"default_minute": 0,
|
||||
"highlight": true,
|
||||
"journals": {"default": "features/journals/simple_jrnl-1-9-5.journal", "missing": "features/journals/missing.journal"},
|
||||
"tagsymbols": "@"
|
||||
}
|
|
@ -38,3 +38,21 @@ Feature: Upgrading Journals from 1.x.x to 2.x.x
|
|||
"""
|
||||
Then the journal should have 2 entries
|
||||
|
||||
Scenario: Upgrade with missing journal
|
||||
Given we use the config "upgrade_from_195_with_missing_journal.json"
|
||||
When we run "jrnl -ls" and enter
|
||||
""""
|
||||
Y
|
||||
"""
|
||||
Then the output should contain "Error: features/journals/missing.journal does not exist."
|
||||
|
||||
Scenario: Upgrade with missing encrypted journal
|
||||
Given we use the config "upgrade_from_195_with_missing_encrypted_journal.json"
|
||||
When we run "jrnl -ls" and enter
|
||||
"""
|
||||
Y
|
||||
bad doggie no biscuit
|
||||
bad doggie no biscuit
|
||||
"""
|
||||
Then the output should contain "Error: features/journals/missing.journal does not exist."
|
||||
and the output should contain "We're all done here"
|
||||
|
|
|
@ -11,10 +11,29 @@ import os
|
|||
def backup(filename, binary=False):
|
||||
print(f" Created a backup at {filename}.backup", file=sys.stderr)
|
||||
filename = os.path.expanduser(os.path.expandvars(filename))
|
||||
with open(filename, "rb" if binary else "r") as original:
|
||||
contents = original.read()
|
||||
with open(filename + ".backup", "wb" if binary else "w") as backup:
|
||||
backup.write(contents)
|
||||
|
||||
try:
|
||||
with open(filename, "rb" if binary else "r") as original:
|
||||
contents = original.read()
|
||||
|
||||
with open(filename + ".backup", "wb" if binary else "w") as backup:
|
||||
backup.write(contents)
|
||||
except FileNotFoundError:
|
||||
print(f"\nError: {filename} does not exist.")
|
||||
try:
|
||||
cont = util.yesno(f"\nCreate {filename}?", default=False)
|
||||
if not cont:
|
||||
raise KeyboardInterrupt
|
||||
|
||||
except KeyboardInterrupt:
|
||||
raise UserAbort("jrnl NOT upgraded, exiting.")
|
||||
|
||||
|
||||
def check_exists(path):
|
||||
"""
|
||||
Checks if a given path exists.
|
||||
"""
|
||||
return os.path.exists(path)
|
||||
|
||||
|
||||
def upgrade_jrnl_if_necessary(config_path):
|
||||
|
@ -56,7 +75,11 @@ older versions of jrnl anymore.
|
|||
encrypt = config.get("encrypt")
|
||||
path = journal_conf
|
||||
|
||||
path = os.path.expanduser(path)
|
||||
if os.path.exists(os.path.expanduser(path)):
|
||||
path = os.path.expanduser(path)
|
||||
else:
|
||||
print(f"\nError: {path} does not exist.")
|
||||
continue
|
||||
|
||||
if encrypt:
|
||||
encrypted_journals[journal_name] = path
|
||||
|
@ -144,6 +167,7 @@ older versions of jrnl anymore.
|
|||
j.write()
|
||||
|
||||
print("\nUpgrading config...", file=sys.stderr)
|
||||
|
||||
backup(config_path)
|
||||
|
||||
print("\nWe're all done here and you can start enjoying jrnl 2.", file=sys.stderr)
|
||||
|
|
Loading…
Add table
Reference in a new issue