Skip to content

Commit a538a9d

Browse files
committed
Add regex for filtering class names
1 parent ab600ba commit a538a9d

File tree

3 files changed

+42
-10
lines changed

3 files changed

+42
-10
lines changed

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
.vscode/
21
build/
32
dist/
43
__pycache__/

.vscode/launch.json

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
// Use IntelliSense to learn about possible attributes.
3+
// Hover to view descriptions of existing attributes.
4+
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5+
"version": "0.2.0",
6+
"configurations": [
7+
8+
{
9+
"name": "Python Debugger: Module",
10+
"type": "debugpy",
11+
"request": "launch",
12+
"module": "UnityPyTypetreeCodegen",
13+
"args": [
14+
"--files",
15+
"D:\\Reverse\\proseka_reverse\\game_binary\\v510\\exported\\shim",
16+
// "--json",
17+
// "c:\\Users\\mos9527\\TypetreeTests\\Test\\TypeTree.json",
18+
"--filter",
19+
"(Live2D|Cubism)+.*"
20+
]
21+
}
22+
]
23+
}

UnityPyTypetreeCodegen/__main__.py

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,7 @@ def __encoder(obj):
362362
)
363363

364364

365+
import re, logging
365366
from UnityPy.helpers.TypeTreeGenerator import TypeTreeGenerator
366367

367368

@@ -373,25 +374,33 @@ def __main__():
373374
)
374375
parser.add_argument(
375376
"--json",
376-
help="Load tree dump in json format",
377-
)
378-
parser.add_argument(
379-
"--assembly",
380-
help="Assembly to use for typetree generation",
377+
help="Load tree dump in json format {str[fullname]: List[TypeTreeNode]},...",
381378
)
382379
parser.add_argument(
383380
"--unity-version",
384381
help="Unity version to use for typetree generation",
385382
default="2022.3.21f1",
386383
)
384+
parser.add_argument(
385+
"--filter",
386+
help="Filter classnames by regex",
387+
default=".*",
388+
)
389+
parser.add_argument(
390+
"--log-level",
391+
choices=["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"],
392+
default="WARNING",
393+
)
387394
parser.add_argument(
388395
"--outdir",
389396
help="Output directory for generated code",
390397
default="generated",
391398
)
392399
args = parser.parse_args()
400+
logging.basicConfig(level=args.log_level)
393401
shutil.rmtree(args.outdir, ignore_errors=True)
394402
os.makedirs(args.outdir, exist_ok=True)
403+
typetree = dict()
395404
if args.files:
396405
generator = TypeTreeGenerator(args.unity_version)
397406
generator.load_local_dll_folder(args.files)
@@ -403,12 +412,13 @@ def __main__():
403412
typetree[fullname] = nodes
404413
except Exception as e:
405414
logger.error(f"Failed to generate typetree for {module}.{fullname}")
406-
process_typetree(typetree, args.outdir)
407-
return 0
408415
if args.json:
409-
with open(args.file, "r") as f:
416+
with open(args.json, "r") as f:
410417
typetree = json.load(f)
411-
process_typetree(typetree, args.outdir)
418+
if typetree:
419+
regex = re.compile(args.filter)
420+
typetree = {k: v for k, v in typetree.items() if regex.match(k)}
421+
process_typetree(typetree, args.outdir)
412422
return 0
413423
return -1
414424

0 commit comments

Comments
 (0)