36 lines
1.5 KiB
Python
36 lines
1.5 KiB
Python
|
|
# Lot O1 : modules de code (/Script/...) et paquets de plugins (/<Plugin>/...) dont dependent les assets de /Game.
|
||
|
|
# Lecture seule. Sortie : Saved/Audit/script_deps.json {module: [assets qui en dependent]}
|
||
|
|
#
|
||
|
|
# Usage :
|
||
|
|
# UnrealEditor-Cmd.exe <projet> -run=pythonscript -script="<projet>/Tools/AuditScriptDeps.py" -unattended -nopause -nosplash
|
||
|
|
|
||
|
|
import json
|
||
|
|
import os
|
||
|
|
import unreal
|
||
|
|
|
||
|
|
registry = unreal.AssetRegistryHelpers.get_asset_registry()
|
||
|
|
registry.search_all_assets(True)
|
||
|
|
assets = registry.get_assets_by_path("/Game", recursive=True)
|
||
|
|
opts = unreal.AssetRegistryDependencyOptions(include_soft_package_references=True, include_hard_package_references=True,
|
||
|
|
include_searchable_names=False, include_soft_management_references=False,
|
||
|
|
include_hard_management_references=False)
|
||
|
|
deps = {}
|
||
|
|
seen = set()
|
||
|
|
for a in assets:
|
||
|
|
pkg = str(a.package_name)
|
||
|
|
if pkg in seen:
|
||
|
|
continue
|
||
|
|
seen.add(pkg)
|
||
|
|
for d in registry.get_dependencies(a.package_name, opts) or []:
|
||
|
|
d = str(d)
|
||
|
|
if d.startswith("/Game/"):
|
||
|
|
continue
|
||
|
|
key = d if d.startswith("/Script/") else "/" + d.split("/")[1]
|
||
|
|
deps.setdefault(key, []).append(pkg)
|
||
|
|
|
||
|
|
out = os.path.join(unreal.Paths.project_saved_dir(), "Audit", "script_deps.json")
|
||
|
|
os.makedirs(os.path.dirname(out), exist_ok=True)
|
||
|
|
with open(out, "w", encoding="utf-8") as f:
|
||
|
|
json.dump({k: sorted(set(v)) for k, v in sorted(deps.items())}, f, indent=1)
|
||
|
|
unreal.log_warning("AuditScriptDeps : {} modules -> {}".format(len(deps), out))
|