#!/usr/bin/env python3

import sys
from pathlib import Path
from subprocess import run

# recursively compress files in a directory ($1)
# assuming that the brotli executable is in the path

config = {"threshold": 10240, "min-ratio": 0.8}

target = Path(sys.argv[1])


def compress(path: Path) -> Path:
    run(["brotli", path.absolute()], check=True)
    return path.parent / (path.name + ".br")


for f in target.glob("**/*"):
    if f.is_symlink() or f.is_dir():
        continue
    size = f.stat().st_size
    if size < config["threshold"]:
        continue
    try:
        compressed_f = compress(f)
    except Exception:
        print(f"Error: cannot compress {f}.", file=sys.stderr)
        continue
    compressed_size = compressed_f.stat().st_size
    if compressed_size > config["min-ratio"] * size:
        compressed_f.unlink()
