in tools/validate_metadata.py [0:0]
def main(dirs: list[str], verbose: bool, failed_only=False) -> int:
instances = set()
for dir_name in dirs:
instances |= set(Path(dir_name).glob("**/metadata.yaml"))
with open(SCHEMA_PATH) as f:
schema = json.load(f)
validator = jsonschema.validators.Draft202012Validator(schema)
failed_files = {}
for instance in instances:
result = _validate(instance, validator)
if result.state == State.OK:
if not failed_only:
print(f'[✓] {instance}')
else:
print(f'[✗] {instance}')
failed_files[instance] = result.errors
if verbose:
for file_path, errors in failed_files.items():
print(f"\n====== {file_path!s} ======")
for path, message in errors.items():
print(f"{path}: {message}")
return 0 if not failed_files else 1