| import os |
|
|
|
|
| def main(): |
| asset_paths = [ |
| "Project/Assets", |
| "DevProject/Assets", |
| "com.unity.ml-agents", |
| "com.unity.ml-agents.extensions", |
| ] |
| meta_suffix = ".meta" |
| python_suffix = ".py" |
| allow_list = frozenset( |
| [ |
| "com.unity.ml-agents/.editorconfig", |
| "com.unity.ml-agents/.gitignore", |
| "com.unity.ml-agents/.npmignore", |
| "com.unity.ml-agents/.git", |
| "com.unity.ml-agents/Tests/.tests.json", |
| "com.unity.ml-agents/.pre-commit-config.yaml", |
| "com.unity.ml-agents/.pre-commit-search-and-replace.yaml", |
| "com.unity.ml-agents.extensions/.gitignore", |
| "com.unity.ml-agents.extensions/.npmignore", |
| "com.unity.ml-agents.extensions/Tests/.tests.json", |
| "com.unity.ml-agents/Samples/3DBall/.sample.json", |
| ] |
| ) |
| ignored_dirs = { |
| "Documentation~", |
| ".github", |
| ".yamato", |
| } |
|
|
| num_matched = 0 |
|
|
| unmatched = set() |
|
|
| for asset_path in asset_paths: |
| for root, dirs, files in os.walk(asset_path): |
| |
| for ignored in ignored_dirs: |
| try: |
| dirs.remove(ignored) |
| except ValueError: |
| pass |
|
|
| dirs = set(dirs) |
| files = set(files) |
|
|
| combined = dirs | files |
| for f in combined: |
|
|
| if f.endswith(python_suffix): |
| |
| continue |
|
|
| full_path = os.path.join(root, f) |
| if full_path in allow_list: |
| continue |
|
|
| |
| if f.endswith(meta_suffix): |
| expected = f.replace(meta_suffix, "") |
| else: |
| expected = f + meta_suffix |
|
|
| if expected not in combined: |
| unmatched.add(full_path) |
| else: |
| num_matched += 1 |
|
|
| if unmatched: |
| raise Exception( |
| f"Mismatch between expected files and their .meta files: {sorted(unmatched)}" |
| ) |
|
|
| print(f"Found {num_matched} correctly matched files") |
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|