mirror of
https://github.com/open-goal/jak-project.git
synced 2024-11-23 06:09:57 +00:00
b3c58d2247
* scripts: cleanup scripts directory some more * stash, getting there * stash again * closer! * it works! decently....cleanup time and add some extra features * minor cleanup
96 lines
2.6 KiB
Python
96 lines
2.6 KiB
Python
# Just removes every duplicate file (if it has a DGO in the name)
|
|
|
|
jak2_files = None
|
|
|
|
import json
|
|
from pathlib import Path
|
|
|
|
with open("../../goal_src/jak2/build/all_objs.json", "r") as f:
|
|
jak2_files = json.load(f)
|
|
|
|
dgos = set()
|
|
|
|
jak2_files_cleaned = []
|
|
|
|
for file in jak2_files:
|
|
for dgo in file[3]:
|
|
dgos.add(dgo.lower())
|
|
|
|
ignore_list = [
|
|
"dir-tpages-ART",
|
|
"dir-tpages-GAME",
|
|
"traffic-engine",
|
|
"onin-game"
|
|
]
|
|
|
|
removed_files = {}
|
|
|
|
def basename_in_file_list(name):
|
|
for file in jak2_files:
|
|
if file[0] == name:
|
|
return True
|
|
return False
|
|
|
|
for file in jak2_files:
|
|
if file[0] in ignore_list:
|
|
jak2_files_cleaned.append(file)
|
|
continue
|
|
name = Path(file[0]).stem
|
|
base_name = None
|
|
duplicate = False
|
|
for dgo in dgos:
|
|
if name.lower().endswith("-{}".format(dgo)):
|
|
# some files have multiple dgos in the name
|
|
base_name_parts = []
|
|
for token in name.split("-"):
|
|
if token.lower() not in dgos:
|
|
base_name_parts.append(token)
|
|
base_name = "-".join(base_name_parts)
|
|
duplicate = True
|
|
if not duplicate:
|
|
jak2_files_cleaned.append(file)
|
|
else:
|
|
print("Removing: {}".format(file[0]))
|
|
if not basename_in_file_list(base_name):
|
|
new_entry = file
|
|
new_entry[0] = base_name
|
|
jak2_files_cleaned.append(new_entry)
|
|
if base_name not in removed_files:
|
|
removed_files[base_name] = set(file[3])
|
|
else:
|
|
for dgo in file[3]:
|
|
removed_files[base_name].add(dgo)
|
|
|
|
# Update DGO sets on the files that remain
|
|
encountered_files = []
|
|
for file in jak2_files_cleaned:
|
|
if file[0] in removed_files:
|
|
dgos = removed_files[file[0]]
|
|
for dgo in file[3]:
|
|
dgos.add(dgo)
|
|
file[3] = dgos
|
|
encountered_files.append(removed_files)
|
|
|
|
with open('../../goal_src/jak2/build/all_objs.json', 'w') as json_file:
|
|
# hard-coded to maintain spacing to only diff lines that actually change
|
|
longest_name = 44
|
|
longest_name_in_dgo = 28
|
|
# Actually write things out
|
|
json_file.write("[\n")
|
|
i = 0
|
|
for jak2_file in jak2_files_cleaned:
|
|
name = '{: <{}}'.format("\"{}\",".format(jak2_file[0]), longest_name + 2)
|
|
name_in_dgo = '{: <{}}'.format("\"{}\",".format(jak2_file[1]), longest_name_in_dgo + 2)
|
|
dgo_set = "["
|
|
for dgo in jak2_file[3]:
|
|
dgo_set += "\"{}\", ".format(dgo)
|
|
dgo_set = dgo_set.removesuffix(", ")
|
|
dgo_set += "]"
|
|
if i == (len(jak2_files_cleaned) - 1):
|
|
json_file.write("[{}{}{}, {}, \"{}\"]\n".format(name, name_in_dgo, jak2_file[2], dgo_set, jak2_file[4]))
|
|
else:
|
|
json_file.write("[{}{}{}, {}, \"{}\"],\n".format(name, name_in_dgo, jak2_file[2], dgo_set, jak2_file[4]))
|
|
i = i + 1
|
|
json_file.write("]\n")
|
|
|