from __future__ import annotations import argparse import json import sys from pathlib import Path ROOT_DIR = Path(__file__).resolve().parent.parent if str(ROOT_DIR) not in sys.path: sys.path.insert(0, str(ROOT_DIR)) from app import main def main_cli() -> None: parser = argparse.ArgumentParser(description="Delete old generated audio files and abandoned temp folders.") parser.add_argument("--days", type=int, default=main.OUTPUT_RETENTION_DAYS, help="Delete files older than this many days.") parser.add_argument("--max-files", type=int, default=main.OUTPUT_MAX_FILES, help="Keep only the newest N audio files.") parser.add_argument("--output-dir", type=Path, default=main.OUTPUT_DIR, help="Directory containing generated audio files.") parser.add_argument("--json", action="store_true", help="Print JSON instead of a compact summary.") args = parser.parse_args() result = main.cleanup_output_storage(args.output_dir, args.days, args.max_files) if args.json: print(json.dumps(result, indent=2)) else: mb = result["bytes"] / 1024 / 1024 print( f"Deleted {result['files']} audio file(s), {result['directories']} temp folder(s), " f"freed {mb:.1f} MB." ) if __name__ == "__main__": main_cli()