Files
Mulberry/tools/python/fix_assets.py
T
2026-07-12 15:06:31 -05:00

39 lines
1.1 KiB
Python

import re
import glob
import tqdm
import argparse
from typing import Protocol, cast
from pathlib import Path
def fix_assets(asm_data_path: Path, asset_rel_path: Path):
asm_files = glob.glob(str(asm_data_path / "**/*.s"), recursive=True)
for asm_file in tqdm.tqdm(asm_files, desc="Fixing data asm"):
n: int = 0
with open(asm_file, mode="r") as fh:
data_asm: str = fh.read()
data_asm, n = re.subn(rf'\.incbin "{asset_rel_path}/', '.incbin "assets/', data_asm)
if n > 0:
with open(asm_file, mode="w") as wh:
wh.write(data_asm)
def main():
class ArgsProtocol(Protocol):
asm_data_path: Path
asset_rel_path: Path
parser = argparse.ArgumentParser(description="fixes data asm include path")
parser.add_argument("asm_path", metavar="asm-path", type=Path, help="data path in assembly root to patch")
parser.add_argument("asset_rel_path", metavar="asset-path", type=Path, help="relative asset path")
args = cast(ArgsProtocol, parser.parse_args())
fix_assets(args.asm_data_path, args.asset_rel_path)
if __name__ == "__main__":
main()