mirror of
https://github.com/jrnl-org/jrnl.git
synced 2025-06-28 13:36:14 +02:00
* fix missed statement from last PR * replace print statement for adding an entry to a journal * clean up linting and format * change print statement over to new print_msg function * make print_msg always print to stderr * change print statement over to new print_msg function * update importer to use new message function * update yaml format to use new message function * code cleanup * update yaml format to use new message function * update yaml format to use new exception handling * update Journal class to use new message function * update install module to use new message function * update config module to use new message function * update upgrade module to properly use new message and exception handling * fix typo * update upgrade module to use new message handling * update welcome message to use new handling * update upgrade module to use new message handling * update upgrade module journal summaries to use new message handling * take out old code * update upgrade module to use new message handling * update upgrade module to use new message handling * update more modules to use new message handling * take out old comment * update deprecated_cmd to use new message handling * update text_exporter with new message handling, get rid of old color constants * get rid of hardcoded text * whitespace changes * rework MsgType into MsgStyle so messages can have different styles * add comment * Move around code to separate concerns of each function a bit more * update create_password and yesno prompt functions for new messaging * fix missing newline for keyboard interrupts * fix misc linting * fix bug with panel titles always showing 'error' after one error * fix missing import * update debug output after uncaught exception * update exception for new exception handling * rewrite yesno function to use new centralized messages * reduce the debug output slightly * clean up print_msgs function * clean up create_password function * clean up misc linting * rename screen_input to hide_input to be more clear * update encrypted journal prompt to use new messaging functionality * fix typo in message key * move rich console into function so we can mock properly * update password mock to use rich console instead of getpass * add more helpful output to then step * fix test by updating expected output * update message to use new functionality * rework mocks in test suite for new messaging functionality * fix linting issue * fix more tests * fix more tests * fix more tests * fix more tests * fix merge bug * update prompt_action_entries to use new messaging functionality * Add new input_method "type" This does the same thing as input_method "pipe" but is more clear what it's doing (typing text into the builtin composer) * get rid of old commented code * get rid of unused code * move some files around Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com>
84 lines
2 KiB
Python
84 lines
2 KiB
Python
# Copyright (C) 2012-2021 jrnl contributors
|
|
# License: https://www.gnu.org/licenses/gpl-3.0.html
|
|
|
|
import logging
|
|
import sys
|
|
import traceback
|
|
|
|
from .jrnl import run
|
|
from .args import parse_args
|
|
from jrnl.output import print_msg
|
|
|
|
from jrnl.exception import JrnlException
|
|
from jrnl.messages import Message
|
|
from jrnl.messages import MsgText
|
|
from jrnl.messages import MsgStyle
|
|
|
|
|
|
def configure_logger(debug=False):
|
|
if not debug:
|
|
logging.disable()
|
|
return
|
|
|
|
logging.basicConfig(
|
|
level=logging.DEBUG,
|
|
format="%(levelname)-8s %(name)-12s %(message)s",
|
|
)
|
|
logging.getLogger("parsedatetime").setLevel(logging.INFO)
|
|
logging.getLogger("keyring.backend").setLevel(logging.ERROR)
|
|
|
|
|
|
def cli(manual_args=None):
|
|
try:
|
|
if manual_args is None:
|
|
manual_args = sys.argv[1:]
|
|
|
|
args = parse_args(manual_args)
|
|
configure_logger(args.debug)
|
|
logging.debug("Parsed args: %s", args)
|
|
|
|
status_code = run(args)
|
|
|
|
except JrnlException as e:
|
|
status_code = 1
|
|
e.print()
|
|
|
|
except KeyboardInterrupt:
|
|
status_code = 1
|
|
|
|
print_msg(
|
|
Message(
|
|
MsgText.KeyboardInterruptMsg,
|
|
MsgStyle.ERROR_ON_NEW_LINE,
|
|
)
|
|
)
|
|
|
|
except Exception as e:
|
|
# uncaught exception
|
|
status_code = 1
|
|
debug = False
|
|
try:
|
|
if args.debug: # type: ignore
|
|
debug = True
|
|
except NameError:
|
|
# This should only happen when the exception
|
|
# happened before the args were parsed
|
|
if "--debug" in sys.argv:
|
|
debug = True
|
|
|
|
if debug:
|
|
from rich.console import Console
|
|
|
|
traceback.print_tb(sys.exc_info()[2])
|
|
Console(stderr=True).print_exception(extra_lines=1)
|
|
|
|
print_msg(
|
|
Message(
|
|
MsgText.UncaughtException,
|
|
MsgStyle.ERROR,
|
|
{"name": type(e).__name__, "exception": e},
|
|
)
|
|
)
|
|
|
|
# This should be the only exit point
|
|
return status_code
|