mirror of
https://github.com/pmret/papermario.git
synced 2024-11-08 20:12:30 +01:00
a4e1c2f522
* fix vscode cpp extension messing with files.associations * move stuff * it builds! * symlink papermario.us.z64 * ci: put baserom in right place * add jp * fix splat dir * ignore starrod dump * .s deps * update jenkins * add dsl back * configure.py versions * wups * fine ethan * fix paths * configure: default to only the version(s) with existing baseroms * fix coverage * fix progress.py * progress.py verisoning * remove format.sh from CONTRIBUTING * update CONTRIBUTING * fix first_diff * diff.py: use ver/current/ * update splat.yaml * trying to fix subrepo * git subrepo pull tools/splat subrepo: subdir: "tools/splat" merged: "06a737f02d" upstream: origin: "https://github.com/ethteck/splat.git" branch: "master" commit: "06a737f02d" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo" commit: "2f68596" * configure fix * git subrepo pull tools/splat subrepo: subdir: "tools/splat" merged: "41786effd3" upstream: origin: "https://github.com/ethteck/splat.git" branch: "master" commit: "41786effd3" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo" commit: "2f68596" Co-authored-by: Ethan Roseman <ethteck@gmail.com>
58 lines
1.9 KiB
Python
Executable File
58 lines
1.9 KiB
Python
Executable File
#!/usr/bin/python3
|
|
|
|
import argparse
|
|
import os
|
|
import re
|
|
from pathlib import Path
|
|
|
|
script_dir = os.path.dirname(os.path.realpath(__file__))
|
|
root_dir = script_dir + "/../"
|
|
src_dir = root_dir + "src/"
|
|
asm_dir = root_dir + "ver/current/asm/"
|
|
|
|
parser = argparse.ArgumentParser(description="Replace many functions with one")
|
|
parser.add_argument("from_list", help="path to line-separated file of functions to be replaced. first line is the string to replace them with")
|
|
|
|
args = parser.parse_args()
|
|
|
|
from_funcs = []
|
|
|
|
with open(args.from_list) as f:
|
|
from_text = f.readlines()
|
|
|
|
to_line = from_text[0].strip()
|
|
func_name = to_line[to_line.rfind("/") + 1:to_line.find(".")]
|
|
|
|
for from_line in from_text[1:]:
|
|
if len(from_line.strip()) > 0:
|
|
from_funcs.append(from_line.rstrip().split(" ")[-1])
|
|
|
|
for root, dirs, files in os.walk(src_dir):
|
|
for f_name in files:
|
|
if f_name.endswith(".c"):
|
|
f_path = os.path.join(root, f_name)
|
|
with open(f_path) as f:
|
|
f_text_orig = f.read()
|
|
|
|
f_text = f_text_orig
|
|
for func in from_funcs:
|
|
search_pattern = re.compile("\n.*" + func + "\).*\n")
|
|
f_text = re.sub(search_pattern, "\n" + to_line + "\n", f_text)
|
|
if f_text != f_text_orig:
|
|
with open(f_path, "w", newline="\n") as f:
|
|
f.write(f_text)
|
|
|
|
for root, dirs, files in os.walk(asm_dir):
|
|
for f_name in files:
|
|
if f_name.endswith(".s"):
|
|
f_path = os.path.join(root, f_name)
|
|
with open(f_path) as f:
|
|
f_text_orig = f.read()
|
|
|
|
f_text = f_text_orig
|
|
for func in from_funcs:
|
|
f_text = f_text.replace(func, Path(f_path).parent.parent.name + "_" + func_name)
|
|
if f_text != f_text_orig:
|
|
with open(f_path, "w", newline="\n") as f:
|
|
f.write(f_text)
|