35 lines
1.1 KiB
Python
35 lines
1.1 KiB
Python
#!/usr/bin/env python3
|
|
import os
|
|
import sys
|
|
import yaml
|
|
import json
|
|
|
|
def collect_models(models_root):
|
|
registry = []
|
|
for root, dirs, files in os.walk(models_root):
|
|
if "model.yaml" in files:
|
|
model_path = os.path.join(root, "model.yaml")
|
|
try:
|
|
with open(model_path, 'r', encoding='utf-8') as f:
|
|
model_data = yaml.safe_load(f)
|
|
registry.append(model_data)
|
|
except Exception as e:
|
|
print(f"❌ Failed to parse {model_path}: {e}", file=sys.stderr)
|
|
return registry
|
|
|
|
if __name__ == "__main__":
|
|
repo_root = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
|
|
models_root = os.path.join(repo_root, "models")
|
|
output_path = os.path.join(repo_root, "registry.json")
|
|
|
|
if not os.path.isdir(models_root):
|
|
print(f"❌ Models directory not found: {models_root}")
|
|
sys.exit(1)
|
|
|
|
registry = collect_models(models_root)
|
|
|
|
with open(output_path, 'w', encoding='utf-8') as f:
|
|
json.dump(registry, f, indent=2, ensure_ascii=False)
|
|
|
|
print(f"✅ Registry written to {output_path} with {len(registry)} models.")
|