mirror of
https://github.com/jrnl-org/jrnl.git
synced 2025-05-10 16:48:31 +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
|
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):
|
def backup(filename, binary=False):
|
||||||
print(f" Created a backup at {filename}.backup", file=sys.stderr)
|
print(f" Created a backup at {filename}.backup", file=sys.stderr)
|
||||||
filename = os.path.expanduser(os.path.expandvars(filename))
|
filename = os.path.expanduser(os.path.expandvars(filename))
|
||||||
with open(filename, "rb" if binary else "r") as original:
|
|
||||||
contents = original.read()
|
try:
|
||||||
with open(filename + ".backup", "wb" if binary else "w") as backup:
|
with open(filename, "rb" if binary else "r") as original:
|
||||||
backup.write(contents)
|
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):
|
def upgrade_jrnl_if_necessary(config_path):
|
||||||
|
@ -56,7 +75,11 @@ older versions of jrnl anymore.
|
||||||
encrypt = config.get("encrypt")
|
encrypt = config.get("encrypt")
|
||||||
path = journal_conf
|
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:
|
if encrypt:
|
||||||
encrypted_journals[journal_name] = path
|
encrypted_journals[journal_name] = path
|
||||||
|
@ -144,6 +167,7 @@ older versions of jrnl anymore.
|
||||||
j.write()
|
j.write()
|
||||||
|
|
||||||
print("\nUpgrading config...", file=sys.stderr)
|
print("\nUpgrading config...", file=sys.stderr)
|
||||||
|
|
||||||
backup(config_path)
|
backup(config_path)
|
||||||
|
|
||||||
print("\nWe're all done here and you can start enjoying jrnl 2.", file=sys.stderr)
|
print("\nWe're all done here and you can start enjoying jrnl 2.", file=sys.stderr)
|
||||||
|
|
Loading…
Add table
Reference in a new issue