|
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() |
|
|