print_cmd: added option to print latest message

This commit is contained in:
juk0de 2023-09-20 09:04:40 +02:00
parent 7277eb5dc0
commit 968d858580
2 changed files with 37 additions and 17 deletions

View File

@ -3,25 +3,43 @@ 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_message(message: Message, args: argparse.Namespace) -> None:
"""
Print given message according to give arguments.
"""
if args.question:
print(message.question)
elif args.answer:
print(message.answer)
elif message.answer and args.only_source_code:
for code in message.answer.source_code():
print(code)
else:
print(message.to_str())
def print_cmd(args: argparse.Namespace, config: Config) -> None: def print_cmd(args: argparse.Namespace, config: Config) -> None:
""" """
Handler for the 'print' command. Handler for the 'print' command.
""" """
fname = Path(args.file) # print given file
try: if args.file is not None:
message = Message.from_file(fname) fname = Path(args.file)
if message: try:
if args.question: message = Message.from_file(fname)
print(message.question) if message:
elif args.answer: print_message(message, args)
print(message.answer) except MessageError:
elif message.answer and args.only_source_code: print(f"File is not a valid message: {args.file}")
for code in message.answer.source_code(): sys.exit(1)
print(code) # print latest message
else: elif args.latest:
print(message.to_str()) chat = ChatDB.from_dir(Path(config.cache), Path(config.db))
except MessageError: latest = chat.msg_latest(loc='disk')
print(f"File is not a valid message: {args.file}") if not latest:
sys.exit(1) 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')