mirror of
https://github.com/jrnl-org/jrnl.git
synced 2025-07-07 00:36:13 +02:00
Clean up help screen, get rid of util.py (#1027)
* More refactoring of cli.py break up code from cli.py (now in jrnl.py) up into smaller functions get rid of export mode move --encrypt and --decrypt to commands.py clean up the help screen even more update flag name for import * reorganize code, move around lots of functions * clean up import statements * move run function out of cli and into jrnl * rename confusingly named function * move editor function into editor file * rename parse_args.py to args.py to make room for more args functions * Fix error in test suite for windows I accidentally flipped the conditional, so this fixes it. Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com> * Update app description on help screen Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com>
This commit is contained in:
parent
7c3abb2625
commit
631e08a557
30 changed files with 981 additions and 775 deletions
|
@ -1,34 +1,105 @@
|
|||
"""
|
||||
Functions in this file are standalone commands. All standalone commands are split into
|
||||
two categories depending on whether they require the config to be loaded to be able to
|
||||
run.
|
||||
|
||||
1. "preconfig" commands don't require the config at all, and can be run before the
|
||||
config has been loaded.
|
||||
2. "postconfig" commands require to config to have already been loaded, parsed, and
|
||||
scoped before they can be run.
|
||||
|
||||
Also, please note that all (non-builtin) imports should be scoped to each function to
|
||||
avoid any possible overhead for these standalone commands.
|
||||
"""
|
||||
import platform
|
||||
import sys
|
||||
|
||||
|
||||
def preconfig_diagnostic(_):
|
||||
import platform
|
||||
import sys
|
||||
import jrnl
|
||||
from jrnl import __version__
|
||||
|
||||
print(
|
||||
f"jrnl: {jrnl.__version__}\n"
|
||||
f"jrnl: {__version__}\n"
|
||||
f"Python: {sys.version}\n"
|
||||
f"OS: {platform.system()} {platform.release()}"
|
||||
)
|
||||
|
||||
|
||||
def preconfig_version(_):
|
||||
import jrnl
|
||||
from jrnl import __title__
|
||||
from jrnl import __version__
|
||||
|
||||
version_str = f"{jrnl.__title__} version {jrnl.__version__}"
|
||||
version_str = f"{__title__} version {__version__}"
|
||||
print(version_str)
|
||||
|
||||
|
||||
def postconfig_list(config, **kwargs):
|
||||
from .util import list_journals
|
||||
from .output import list_journals
|
||||
|
||||
print(list_journals(config))
|
||||
|
||||
|
||||
def postconfig_import(args, config, **kwargs):
|
||||
from .plugins import get_importer
|
||||
from .Journal import open_journal
|
||||
from .plugins import get_importer
|
||||
|
||||
# Requires opening the journal
|
||||
journal = open_journal(args.journal_name, config)
|
||||
|
||||
format = args.export if args.export else "jrnl"
|
||||
get_importer(format).import_(journal, args.input)
|
||||
get_importer(format).import_(journal, args.filename)
|
||||
|
||||
|
||||
def postconfig_encrypt(args, config, original_config, **kwargs):
|
||||
"""
|
||||
Encrypt a journal in place, or optionally to a new file
|
||||
"""
|
||||
from .EncryptedJournal import EncryptedJournal
|
||||
from .Journal import open_journal
|
||||
from .config import update_config
|
||||
from .install import save_config
|
||||
|
||||
# Open the journal
|
||||
journal = open_journal(args.journal_name, config)
|
||||
|
||||
journal.config["encrypt"] = True
|
||||
|
||||
new_journal = EncryptedJournal.from_journal(journal)
|
||||
new_journal.write(args.filename)
|
||||
|
||||
print(
|
||||
f"Journal encrypted to {args.filename or new_journal.config['journal']}.",
|
||||
file=sys.stderr,
|
||||
)
|
||||
|
||||
# Update the config, if we encrypted in place
|
||||
if not args.filename:
|
||||
update_config(
|
||||
original_config, {"encrypt": True}, args.journal_name, force_local=True
|
||||
)
|
||||
save_config(original_config)
|
||||
|
||||
|
||||
def postconfig_decrypt(args, config, original_config, **kwargs):
|
||||
""" Decrypts into new file. If filename is not set, we encrypt the journal file itself. """
|
||||
from .Journal import PlainJournal
|
||||
from .Journal import open_journal
|
||||
from .config import update_config
|
||||
from .install import save_config
|
||||
|
||||
journal = open_journal(args.journal_name, config)
|
||||
journal.config["encrypt"] = False
|
||||
|
||||
new_journal = PlainJournal.from_journal(journal)
|
||||
new_journal.write(args.filename)
|
||||
print(
|
||||
f"Journal decrypted to {args.filename or new_journal.config['journal']}.",
|
||||
file=sys.stderr,
|
||||
)
|
||||
|
||||
# Update the config, if we decrypted in place
|
||||
if not args.filename:
|
||||
update_config(
|
||||
original_config, {"encrypt": False}, args.journal_name, force_local=True
|
||||
)
|
||||
save_config(original_config)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue