#!/usr/bin/env python3 from __future__ import annotations import argparse, json from pathlib import Path from music3lab.editing.audio_fim_runner import _load_config, run_audio_fim def main() -> int: p=argparse.ArgumentParser(); sub=p.add_subparsers(dest="command",required=True) c=sub.add_parser("check"); c.add_argument("--config",type=Path,required=True) r=sub.add_parser("run") for name in ("config","continuation-config","flow-config","corpus-root","encoder-checkpoint","snapshot","base-manifest","diffusers-root","output-root"): r.add_argument("--"+name,type=Path,required=True) a=p.parse_args() if a.command=="check": result={"schema_version":_load_config(a.config)["schema_version"],"status":"READY"};code=0 else: result=run_audio_fim(config_path=a.config,continuation_config=a.continuation_config,flow_config=a.flow_config,corpus_root=a.corpus_root,encoder_checkpoint=a.encoder_checkpoint,snapshot=a.snapshot,base_manifest=a.base_manifest,diffusers_root=a.diffusers_root,output_root=a.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())