57 lines
2.0 KiB
Python
57 lines
2.0 KiB
Python
from __future__ import annotations
|
|
|
|
import argparse
|
|
import shutil
|
|
from pathlib import Path
|
|
|
|
from generator.arrange.generate import generate_performance_scores
|
|
from generator.practice.generate import generate_practice_scores
|
|
from generator.score import count_json_files, validate_generated_tree
|
|
from generator.summary import validate_expected_performance_summary, validate_practice_variants
|
|
|
|
|
|
def parse_args() -> argparse.Namespace:
|
|
parser = argparse.ArgumentParser(description="Generate Product Vamp package score assets.")
|
|
parser.add_argument("--data-dir", type=Path, required=True)
|
|
parser.add_argument("--output-dir", type=Path, required=True)
|
|
parser.add_argument("--static-assets-dir", type=Path, default=Path("package/assets"))
|
|
parser.add_argument("--clean", action="store_true")
|
|
parser.add_argument("--check", action="store_true")
|
|
return parser.parse_args()
|
|
|
|
|
|
def main() -> int:
|
|
args = parse_args()
|
|
data_dir = args.data_dir.resolve()
|
|
output_dir = args.output_dir.resolve()
|
|
static_assets_dir = args.static_assets_dir.resolve()
|
|
|
|
if args.clean and output_dir.exists():
|
|
shutil.rmtree(output_dir)
|
|
output_dir.mkdir(parents=True, exist_ok=True)
|
|
|
|
fonts_src = static_assets_dir / "fonts"
|
|
if fonts_src.exists():
|
|
shutil.copytree(fonts_src, output_dir / "fonts", dirs_exist_ok=True)
|
|
|
|
performance_count = generate_performance_scores(data_dir / "songs", output_dir / "songs")
|
|
practice_count = generate_practice_scores(data_dir / "practice", output_dir / "practice")
|
|
|
|
validate_generated_tree(output_dir)
|
|
print(
|
|
"Generated Product Vamp assets: "
|
|
f"{performance_count} performance scores, "
|
|
f"{practice_count} practice score variants, "
|
|
f"{count_json_files(output_dir)} total JSON files."
|
|
)
|
|
|
|
if args.check:
|
|
validate_expected_performance_summary(data_dir / "expected" / "performance_summary.json", output_dir / "songs")
|
|
validate_practice_variants(output_dir / "practice")
|
|
print("Generator check passed.")
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|