mirror of https://github.com/PrimeDecomp/prime.git
Preserve objdiff.json symbol_mappings when generating
This commit is contained in:
parent
0da3b202a3
commit
3d1b306acb
|
@ -1177,6 +1177,13 @@ def generate_objdiff_config(
|
||||||
if build_config is None:
|
if build_config is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# Load existing objdiff.json
|
||||||
|
existing_units = {}
|
||||||
|
if Path("objdiff.json").is_file():
|
||||||
|
with open("objdiff.json", "r", encoding="utf-8") as r:
|
||||||
|
existing_config = json.load(r)
|
||||||
|
existing_units = {unit["name"]: unit for unit in existing_config["units"]}
|
||||||
|
|
||||||
objdiff_config: Dict[str, Any] = {
|
objdiff_config: Dict[str, Any] = {
|
||||||
"min_version": "2.0.0-beta.5",
|
"min_version": "2.0.0-beta.5",
|
||||||
"custom_make": "ninja",
|
"custom_make": "ninja",
|
||||||
|
@ -1234,15 +1241,27 @@ def generate_objdiff_config(
|
||||||
) -> None:
|
) -> None:
|
||||||
obj_path, obj_name = build_obj["object"], build_obj["name"]
|
obj_path, obj_name = build_obj["object"], build_obj["name"]
|
||||||
base_object = Path(obj_name).with_suffix("")
|
base_object = Path(obj_name).with_suffix("")
|
||||||
|
name = str(Path(module_name) / base_object).replace(os.sep, "/")
|
||||||
unit_config: Dict[str, Any] = {
|
unit_config: Dict[str, Any] = {
|
||||||
"name": Path(module_name) / base_object,
|
"name": name,
|
||||||
"target_path": obj_path,
|
"target_path": obj_path,
|
||||||
|
"base_path": None,
|
||||||
|
"scratch": None,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"auto_generated": build_obj["autogenerated"],
|
"complete": None,
|
||||||
|
"reverse_fn_order": None,
|
||||||
|
"source_path": None,
|
||||||
"progress_categories": progress_categories,
|
"progress_categories": progress_categories,
|
||||||
|
"auto_generated": build_obj["autogenerated"],
|
||||||
},
|
},
|
||||||
|
"symbol_mappings": None,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Preserve existing symbol mappings
|
||||||
|
existing_unit = existing_units.get(name)
|
||||||
|
if existing_unit is not None:
|
||||||
|
unit_config["symbol_mappings"] = existing_unit.get("symbol_mappings")
|
||||||
|
|
||||||
obj = objects.get(obj_name)
|
obj = objects.get(obj_name)
|
||||||
if obj is None:
|
if obj is None:
|
||||||
objdiff_config["units"].append(unit_config)
|
objdiff_config["units"].append(unit_config)
|
||||||
|
@ -1352,13 +1371,21 @@ def generate_objdiff_config(
|
||||||
for category in config.progress_categories:
|
for category in config.progress_categories:
|
||||||
add_category(category.id, category.name)
|
add_category(category.id, category.name)
|
||||||
|
|
||||||
|
def cleandict(d):
|
||||||
|
if isinstance(d, dict):
|
||||||
|
return {k: cleandict(v) for k, v in d.items() if v is not None}
|
||||||
|
elif isinstance(d, list):
|
||||||
|
return [cleandict(v) for v in d]
|
||||||
|
else:
|
||||||
|
return d
|
||||||
|
|
||||||
# Write objdiff.json
|
# Write objdiff.json
|
||||||
with open("objdiff.json", "w", encoding="utf-8") as w:
|
with open("objdiff.json", "w", encoding="utf-8") as w:
|
||||||
|
|
||||||
def unix_path(input: Any) -> str:
|
def unix_path(input: Any) -> str:
|
||||||
return str(input).replace(os.sep, "/") if input else ""
|
return str(input).replace(os.sep, "/") if input else ""
|
||||||
|
|
||||||
json.dump(objdiff_config, w, indent=4, default=unix_path)
|
json.dump(cleandict(objdiff_config), w, indent=2, default=unix_path)
|
||||||
|
|
||||||
|
|
||||||
# Calculate, print and write progress to progress.json
|
# Calculate, print and write progress to progress.json
|
||||||
|
@ -1480,4 +1507,4 @@ def calculate_progress(config: ProjectConfig) -> None:
|
||||||
add_category(category["id"], category["measures"])
|
add_category(category["id"], category["measures"])
|
||||||
|
|
||||||
with open(out_path / "progress.json", "w", encoding="utf-8") as w:
|
with open(out_path / "progress.json", "w", encoding="utf-8") as w:
|
||||||
json.dump(progress_json, w, indent=4)
|
json.dump(progress_json, w, indent=2)
|
||||||
|
|
Loading…
Reference in New Issue