Paramaterized output stream

for reporting messages from BatchfileParser.
This commit is contained in:
Jamie Hardt
2024-07-07 22:44:52 -07:00
parent 88add2da85
commit f0e05a9609

View File

@@ -9,7 +9,7 @@ import shutil
import re import re
import os.path import os.path
from typing import Dict, Tuple, Optional from typing import Callable, Dict, Tuple, Optional
from mfbatch.metaflac import write_metadata as flac from mfbatch.metaflac import write_metadata as flac
@@ -152,6 +152,7 @@ they appear in the batchfile.
dry_run: bool dry_run: bool
env: CommandEnv env: CommandEnv
write_metadata_f: Callable
COMMAND_LEADER = ':' COMMAND_LEADER = ':'
COMMENT_LEADER = '#' COMMENT_LEADER = '#'
@@ -160,6 +161,7 @@ they appear in the batchfile.
self.dry_run = True self.dry_run = True
self.env = CommandEnv() self.env = CommandEnv()
self.write_metadata_f = flac self.write_metadata_f = flac
self.outstream = sys.stdout
def eval(self, line: str, lineno: int, interactive: bool): def eval(self, line: str, lineno: int, interactive: bool):
""" """
@@ -191,11 +193,11 @@ they appear in the batchfile.
def _write_metadata_impl(self, line): def _write_metadata_impl(self, line):
if self.dry_run: if self.dry_run:
print("DRY RUN would write metadata here.") print("DRY RUN would write metadata here.", file=self.outstream)
else: else:
sys.stdout.write("Writing metadata... ") self.outstream.write("Writing metadata... ")
self.write_metadata_f(line, self.env.metadatums) self.write_metadata_f(line, self.env.metadatums)
sys.stdout.write("Complete!") self.outstream.write("Complete!")
self.env.increment_all() self.env.increment_all()
self.env.revert_onces() self.env.revert_onces()
@@ -208,10 +210,10 @@ they appear in the batchfile.
for l in value_lines: for l in value_lines:
if key: if key:
sys.stdout.write(f"{key:.<30} \033[4m{l}\033[0m\n") self.outstream.write(f"{key:.<30} \033[4m{l}\033[0m\n")
key = None key = None
else: else:
sys.stdout.write(f"{' ' * 30} \033[4m{l}\033[0m\n") self.outstream.write(f"{' ' * 30} \033[4m{l}\033[0m\n")
def _handle_file(self, line, interactive): def _handle_file(self, line, interactive):
while True: while True:
@@ -220,9 +222,9 @@ they appear in the batchfile.
self.env.evaluate_patterns() self.env.evaluate_patterns()
if self.dry_run: if self.dry_run:
sys.stdout.write(f"\nDRY RUN File: \033[1m{line}\033[0m\n") self.outstream.write(f"\nDRY RUN File: \033[1m{line}\033[0m\n")
else: else:
sys.stdout.write(f"\nFile: \033[1m{line}\033[0m\n") self.outstream.write(f"\nFile: \033[1m{line}\033[0m\n")
for key, value in self.env.metadatums.items(): for key, value in self.env.metadatums.items():