def main()

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