print_cmd: added option to print latest message

This commit is contained in:
juk0de 2023-09-20 09:04:40 +02:00
parent 4b1b5cbdc3
commit 4cf118a297
2 changed files with 37 additions and 17 deletions

View File

@ -3,16 +3,13 @@ import argparse
from pathlib import Path from pathlib import Path
from ..configuration import Config from ..configuration import Config
from ..message import Message, MessageError from ..message import Message, MessageError
from ..chat import ChatDB
def print_cmd(args: argparse.Namespace, config: Config) -> None: def print_message(message: Message, args: argparse.Namespace) -> None:
""" """
Handler for the 'print' command. Print given message according to give arguments.
""" """
fname = Path(args.file)
try:
message = Message.from_file(fname)
if message:
if args.question: if args.question:
print(message.question) print(message.question)
elif args.answer: elif args.answer:
@ -22,6 +19,27 @@ def print_cmd(args: argparse.Namespace, config: Config) -> None:
print(code) print(code)
else: else:
print(message.to_str()) print(message.to_str())
def print_cmd(args: argparse.Namespace, config: Config) -> None:
"""
Handler for the 'print' command.
"""
# print given file
if args.file is not None:
fname = Path(args.file)
try:
message = Message.from_file(fname)
if message:
print_message(message, args)
except MessageError: except MessageError:
print(f"File is not a valid message: {args.file}") print(f"File is not a valid message: {args.file}")
sys.exit(1) sys.exit(1)
# print latest message
elif args.latest:
chat = ChatDB.from_dir(Path(config.cache), Path(config.db))
latest = chat.msg_latest(loc='disk')
if not latest:
print("No message found!")
sys.exit(1)
print_message(latest, args)

View File

@ -114,7 +114,9 @@ def create_parser() -> argparse.ArgumentParser:
help="Print message files.", help="Print message files.",
aliases=['p']) aliases=['p'])
print_cmd_parser.set_defaults(func=print_cmd) print_cmd_parser.set_defaults(func=print_cmd)
print_cmd_parser.add_argument('-f', '--file', help='Print given message file', required=True, metavar='FILE') print_group = print_cmd_parser.add_mutually_exclusive_group(required=True)
print_group.add_argument('-f', '--file', help='Print given message file', metavar='FILE')
print_group.add_argument('-l', '--latest', help='Print latest message', action='store_true')
print_cmd_modes = print_cmd_parser.add_mutually_exclusive_group() print_cmd_modes = print_cmd_parser.add_mutually_exclusive_group()
print_cmd_modes.add_argument('-q', '--question', help='Only print the question', action='store_true') print_cmd_modes.add_argument('-q', '--question', help='Only print the question', action='store_true')
print_cmd_modes.add_argument('-a', '--answer', help='Only print the answer', action='store_true') print_cmd_modes.add_argument('-a', '--answer', help='Only print the answer', action='store_true')