Skip to content

Commit 6ae9529

Browse files
committed
added update_dng_snapshots.py to build snapshots for assetViewer (dng-based render mode)
1 parent bb0d9cc commit 6ae9529

1 file changed

Lines changed: 67 additions & 0 deletions

File tree

prog/tools/update_dng_snapshots.py

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
#!/usr/bin/env python3
2+
# DEP_DOMAIN outerSpace/prog
3+
import os
4+
import sys
5+
import argparse
6+
import subprocess
7+
import shutil
8+
from pathlib import Path
9+
10+
DAGOR_ROOT_FOLDER = Path(__file__).resolve().parents[2]
11+
12+
def parse_args():
13+
parser = argparse.ArgumentParser()
14+
parser.add_argument("--no-cvs-update", action="store_true", help="Skip CVS update, only copy files")
15+
return parser.parse_args()
16+
17+
def update_and_copy(src, dst, skip_cvs_update=False):
18+
if not skip_cvs_update:
19+
prev_cwd = os.getcwd()
20+
os.chdir(str(src.parent))
21+
print(f"cvs -q update -C {src.name}")
22+
subprocess.run(["cvs", "update", "-C", src.name], check=True)
23+
os.chdir(prev_cwd)
24+
25+
# copy file
26+
try:
27+
shutil.copy2(src, dst / src.name)
28+
print(f"Copied: {src.name} -> {dst / src.name}")
29+
except OSError as e:
30+
print(f"ERROR: Failed to copy {src}: {e}")
31+
32+
def update_dng_snapshot(project_root, game_folder, vromfs_list, skip_cvs_update=False):
33+
dst = Path(project_root) / "tools" / "snapshot"
34+
shaders = Path(project_root) / game_folder / "compiledShaders" / "game.ps50.shdump.bin"
35+
tool_scripts_dir = Path(project_root) / "prog" / "tools"
36+
game_folder_abs = DAGOR_ROOT_FOLDER / project_root / game_folder
37+
38+
print(f'\nUpdating DNG snapshot for "{project_root}"...')
39+
os.chdir(str(DAGOR_ROOT_FOLDER))
40+
dst.mkdir(parents=True, exist_ok=True)
41+
42+
# shaders
43+
update_and_copy(shaders, dst, skip_cvs_update)
44+
45+
# vfsroms
46+
for src in vromfs_list:
47+
src = Path(src)
48+
if src.name.startswith(".#"):
49+
continue
50+
subdir_dst = dst / src.parent.relative_to(game_folder_abs)
51+
subdir_dst.mkdir(parents=True, exist_ok=True)
52+
update_and_copy(src, subdir_dst, skip_cvs_update)
53+
54+
# scripts
55+
for f in tool_scripts_dir.glob("*.das"):
56+
update_and_copy(f, dst, True)
57+
58+
if __name__ == "__main__":
59+
args = parse_args()
60+
61+
project_list = [
62+
"outerSpace",
63+
"samples/dngSceneViewer"
64+
]
65+
for project in project_list:
66+
script = DAGOR_ROOT_FOLDER / project / "prog" / "tools" / "update_snapshot.py"
67+
subprocess.run([sys.executable, str(script)] + sys.argv[1:], check=True)

0 commit comments

Comments
 (0)