feat: Add file handle support to process_markdown

This commit is contained in:
Paul Gauthier (aider) 2024-08-22 09:42:02 -07:00
parent a16ee761a7
commit 905cbc377d

View file

@ -7,12 +7,12 @@ import sys
from aider.coders.base_coder import all_fences from aider.coders.base_coder import all_fences
from aider.coders.editblock_coder import find_original_update_blocks from aider.coders.editblock_coder import find_original_update_blocks
def process_markdown(filename): def process_markdown(filename, fh):
try: try:
with open(filename, "r") as file: with open(filename, "r") as file:
content = file.read() content = file.read()
except FileNotFoundError: except FileNotFoundError:
print(f"@@@ File '{filename}' not found.", "@" * 20) print(f"@@@ File '{filename}' not found.", "@" * 20, file=fh, flush=True)
return return
# Split the content into sections based on '####' headers # Split the content into sections based on '####' headers
@ -37,29 +37,29 @@ def process_markdown(filename):
try: try:
blocks = list(find_original_update_blocks(content, fence)) blocks = list(find_original_update_blocks(content, fence))
except ValueError as e: except ValueError as e:
print("\n\n@@@", header, "@" * 20) print("\n\n@@@", header, "@" * 20, file=fh, flush=True)
print(str(e)) print(str(e), file=fh, flush=True)
continue continue
if blocks: if blocks:
print("\n\n@@@", header, "@" * 20) print("\n\n@@@", header, "@" * 20, file=fh, flush=True)
for block in blocks: for block in blocks:
if block[0] is None: # This is a shell command block if block[0] is None: # This is a shell command block
print("@@@ SHELL", "@" * 20) print("@@@ SHELL", "@" * 20, file=fh, flush=True)
print(block[1], end="") print(block[1], end="", file=fh, flush=True)
print("@@@ ENDSHELL", "@" * 20) print("@@@ ENDSHELL", "@" * 20, file=fh, flush=True)
else: # This is a SEARCH/REPLACE block else: # This is a SEARCH/REPLACE block
print("@@@ SEARCH:", block[0], "@" * 20) print("@@@ SEARCH:", block[0], "@" * 20, file=fh, flush=True)
print(block[1], end="") print(block[1], end="", file=fh, flush=True)
print("@" * 20) print("@" * 20, file=fh, flush=True)
print(block[2], end="") print(block[2], end="", file=fh, flush=True)
print("@@@ REPLACE", "@" * 20) print("@@@ REPLACE", "@" * 20, file=fh, flush=True)
if __name__ == "__main__": if __name__ == "__main__":
if len(sys.argv) != 2: if len(sys.argv) != 2:
print(json.dumps({"error": "Usage: python testsr.py <markdown_filename>"}, indent=4)) print(json.dumps({"error": "Usage: python testsr.py <markdown_filename>"}, indent=4), file=sys.stdout, flush=True)
else: else:
process_markdown(sys.argv[1]) process_markdown(sys.argv[1], sys.stdout)