46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
import sys
|
|
import argparse
|
|
from pathlib import Path
|
|
from ..configuration import Config
|
|
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:
|
|
"""
|
|
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:
|
|
print(f"File is not a valid message: {args.file}")
|
|
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)
|