SATA / scripts /package_assets.py
zzysteve
Initial commit
5221c8c
Raw
History Blame Contribute Delete
1.6 kB
#!/usr/bin/env python3
"""Package demo assets for Google Drive distribution."""
import argparse
import zipfile
from pathlib import Path
REQUIRED_DIRS = [
"data/gradio_human",
"data/gradio_animo",
"data/gradio_skel",
"data/gradio_target_bvh",
"data/gradio_z",
"data/test",
]
def repo_root() -> Path:
return Path(__file__).resolve().parents[1]
def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument(
"--output",
default="/tmp/sata_demo_assets.zip",
help="Output zip path. Default: /tmp/sata_demo_assets.zip",
)
return parser.parse_args()
def main() -> None:
args = parse_args()
root = repo_root()
output = Path(args.output).expanduser().resolve()
missing = [path for path in REQUIRED_DIRS if not (root / path).is_dir()]
if missing:
raise SystemExit("Missing required asset directories:\n" + "\n".join(f" {path}" for path in missing))
output.parent.mkdir(parents=True, exist_ok=True)
data_dir = root / "data"
with zipfile.ZipFile(output, "w", compression=zipfile.ZIP_DEFLATED) as archive:
for path in sorted(data_dir.rglob("*")):
if path.is_dir():
continue
if "__pycache__" in path.parts:
continue
if path.suffix == ".pyc" or path.name == ".DS_Store":
continue
archive.write(path, path.relative_to(root))
print(output)
print(f"{output.stat().st_size / 1024 / 1024:.2f} MB")
if __name__ == "__main__":
main()