Source code for src.zip_log_files

"""
Author: Leonardo de Sousa Marques
Affiliation: Embedded Computing Lab (ECL), Federal University of Santa Catarina (UFSC)

Description:
    This module creates a ZIP file containing all execution logs for the codecs listed in “codecs-to-run”.
    This simplifies sharing the results of experiments.
"""

# Add parent directory to Python path for module imports
import sys
import zipfile
from pathlib import Path

from lfc_toolkit.src.configuration.configuration_reader import ConfigurationReader


[docs] def main() -> None: """Create a ZIP file containing all execution logs for configured codecs. Collects execution log files from the results directories of all codecs specified in the configuration and packages them into a single ZIP file in the common parent directory for easy distribution and archival. Usage: python zip_log_files.py <configuration.json> :return: None :rtype: None """ if len(sys.argv) < 2: print("Usage: rd_curve_from_encoded.py <configuration.json>") sys.exit(1) configuration = ConfigurationReader(user_configuration_filename=sys.argv[1]) codecs_to_run = configuration["codecs-to-run"] codecs_config = configuration["codecs"]["configuration"] results_dirs = [] for codec in codecs_to_run: results_path = codecs_config[codec]["results"] results_dirs.append(Path(results_path).resolve()) # Find common parent directory common_parent = Path(results_dirs[0]) for p in results_dirs[1:]: while not str(p).startswith(str(common_parent)): common_parent = common_parent.parent if not common_parent.exists(): print("[ERROR] Could not determine common results directory.") sys.exit(1) zip_path = common_parent / "execution_logs.zip" print(f"Creating ZIP: {zip_path}") with zipfile.ZipFile(zip_path, "w", zipfile.ZIP_DEFLATED) as zipf: for codec, results_dir in zip(codecs_to_run, results_dirs): if not results_dir.exists(): print(f"[WARNING] Results directory not found for codec '{codec}'") continue log_files = list(results_dir.glob("execution_log*.json")) if not log_files: print(f"[WARNING] No execution_log found for codec '{codec}'") continue for log_file in log_files: arcname = Path(codec) / log_file.name zipf.write(log_file, arcname) print(f" Added: {arcname}") print("Done.")
if __name__ == "__main__": main()