#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ collatz_generate_progress_log.py List audit files in a directory, summarize sizes and dates. Outputs a journal.md file. Usage: python collatz_generate_progress_log.py --audits-dir DIR --output journal.md """ from __future__ import annotations import argparse from pathlib import Path from datetime import datetime def run(audits_dir: str, output_path: str) -> None: """Generate progress log.""" root = Path(audits_dir) if not root.exists(): Path(output_path).write_text( f"# Audit progress log\n\nDirectory not found: {audits_dir}\n", encoding="utf-8", ) return entries: list[tuple[str, int, str]] = [] for p in sorted(root.iterdir()): if p.is_file(): stat = p.stat() size = stat.st_size mtime = datetime.fromtimestamp(stat.st_mtime).strftime("%Y-%m-%d %H:%M") entries.append((p.name, size, mtime)) lines = ["# Audit progress log", "", f"Source directory: {audits_dir}", ""] lines.append("| File | Size (bytes) | Modified |") lines.append("|------|------|----------|") for name, size, mtime in entries: lines.append(f"| {name} | {size} | {mtime} |") if not entries: lines.append("(no files)") Path(output_path).write_text("\n".join(lines) + "\n", encoding="utf-8") def main() -> None: parser = argparse.ArgumentParser(description="Generate audit progress log") parser.add_argument("--audits-dir", required=True, help="Path to audits directory") parser.add_argument("--output", required=True, help="Path to output journal.md") args = parser.parse_args() run(args.audits_dir, args.output) if __name__ == "__main__": main()