From c0b7d17587f45a4b28a8083cd067b7b427816627 Mon Sep 17 00:00:00 2001 From: juk0de Date: Sat, 9 Sep 2023 08:51:17 +0200 Subject: [PATCH] question_cmd: fixes --- chatmastermind/commands/question.py | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/chatmastermind/commands/question.py b/chatmastermind/commands/question.py index 9c56ced..1709a3c 100644 --- a/chatmastermind/commands/question.py +++ b/chatmastermind/commands/question.py @@ -1,5 +1,6 @@ import argparse from pathlib import Path +from itertools import zip_longest from ..configuration import Config from ..chat import ChatDB from ..message import Message, Question @@ -11,8 +12,26 @@ def create_message(chat: ChatDB, args: argparse.Namespace) -> Message: """ Creates (and writes) a new message from the given arguments. """ - # FIXME: add sources to the question - message = Message(question=Question(args.question), + question_parts = [] + question_list = args.question if args.question is not None else [] + source_list = args.source if args.source is not None else [] + + # FIXME: don't surround all sourced files with ``` + # -> do it only if '--source-code-only' is True and no source code + # could be extracted from that file + for question, source in zip_longest(question_list, source_list, fillvalue=None): + if question is not None and source is not None: + with open(source) as r: + question_parts.append(f"{question}\n\n```\n{r.read().strip()}\n```") + elif question is not None: + question_parts.append(question) + elif source is not None: + with open(source) as r: + question_parts.append(f"```\n{r.read().strip()}\n```") + + full_question = '\n\n'.join(question_parts) + + message = Message(question=Question(full_question), tags=args.output_tags, # FIXME ai=args.ai, model=args.model)