#!/usr/bin/env python3 from __future__ import annotations import argparse import json from pathlib import Path from music3lab.editing.audio_prepend_runner import _load_config, run_audio_prepend def main() -> int: parser = argparse.ArgumentParser() commands = parser.add_subparsers(dest="command", required=True) check = commands.add_parser("check") check.add_argument("--config", type=Path, required=True) run = commands.add_parser("run") for name in ( "config", "continuation-config", "flow-config", "corpus-root", "encoder-checkpoint", "snapshot", "base-manifest", "diffusers-root", "output-root", ): run.add_argument("--" + name, type=Path, required=True) args = parser.parse_args() if args.command == "check": result = {"schema_version": _load_config(args.config)["schema_version"], "status": "READY"} code = 0 else: result = run_audio_prepend( config_path=args.config, continuation_config=args.continuation_config, flow_config=args.flow_config, corpus_root=args.corpus_root, encoder_checkpoint=args.encoder_checkpoint, snapshot=args.snapshot, base_manifest=args.base_manifest, diffusers_root=args.diffusers_root, output_root=args.output_root, ) code = 0 if result["status"] == "FUNCTIONAL_PASS" else 1 print(json.dumps(result, sort_keys=True, separators=(",", ":"))) return code if __name__ == "__main__": raise SystemExit(main())