53 lines
1.8 KiB
Python
53 lines
1.8 KiB
Python
from typing import List, Optional
|
|
|
|
from ytdl_sub.subscriptions.subscription import Subscription
|
|
from ytdl_sub.utils.exceptions import ValidationException
|
|
from ytdl_sub.utils.logger import Logger
|
|
|
|
logger = Logger.get()
|
|
|
|
|
|
def _maybe_validate_transaction_log_file(transaction_log_file_path: Optional[str]) -> None:
|
|
if transaction_log_file_path:
|
|
try:
|
|
with open(transaction_log_file_path, "w", encoding="utf-8"):
|
|
pass
|
|
except Exception as exc:
|
|
raise ValidationException(
|
|
f"Transaction log file '{transaction_log_file_path}' cannot be written to. "
|
|
f"Reason: {str(exc)}"
|
|
) from exc
|
|
|
|
|
|
def output_transaction_log(
|
|
subscriptions: List[Subscription],
|
|
transaction_log_file_path: Optional[str],
|
|
) -> None:
|
|
"""
|
|
Maybe print and/or write transaction logs to a file
|
|
|
|
Parameters
|
|
----------
|
|
subscriptions
|
|
Processed subscriptions
|
|
transaction_log_file_path
|
|
Optional file path to write to
|
|
"""
|
|
transaction_log_file_contents = ""
|
|
for subscription in subscriptions:
|
|
if subscription.transaction_log.is_empty:
|
|
transaction_log_contents = f"\nNo files changed for {subscription.name}"
|
|
else:
|
|
transaction_log_contents = (
|
|
f"Transaction log for {subscription.name}:\n"
|
|
f"{subscription.transaction_log.to_output_message(subscription.output_directory)}"
|
|
)
|
|
|
|
if transaction_log_file_path:
|
|
transaction_log_file_contents += transaction_log_contents
|
|
else:
|
|
logger.info(transaction_log_contents)
|
|
|
|
if transaction_log_file_contents:
|
|
with open(transaction_log_file_path, "w", encoding="utf-8") as transaction_log_file:
|
|
transaction_log_file.write(transaction_log_file_contents)
|