NorbiPeti
1c5ce37fce
Added API for adding more information on the debug display (not object-oriented yet) Removed the setter for block type to ensure stability Made the block API return defaults if the block no longer exists Added property to check if the block exists Made a struct for the block's color property Added missing block IDs
53 lines
2.2 KiB
Python
53 lines
2.2 KiB
Python
#!/usr/bin/python3
|
|
|
|
import argparse
|
|
from pathlib import Path, PurePath
|
|
import re
|
|
|
|
DLL_EXCLUSIONS_REGEX = r"(System|Microsoft|Mono|IronPython|DiscordRPC)\."
|
|
|
|
def getAssemblyReferences(path):
|
|
asmDir = Path(path)
|
|
result = list()
|
|
for child in asmDir.iterdir():
|
|
if child.is_file() and re.search(DLL_EXCLUSIONS_REGEX, str(child), re.I) is None and str(child).lower().endswith(".dll"):
|
|
result.append(str(child).replace("\\", "/"))
|
|
return result
|
|
|
|
def buildReferencesXml(path):
|
|
assemblyPathes = getAssemblyReferences(path)
|
|
result = list()
|
|
for asm in assemblyPathes:
|
|
asmPath = str(asm)
|
|
xml = " <Reference Include=\"" + asmPath[asmPath.rfind("/") + 1:].replace(".dll", "") + "\">\n" \
|
|
+ " <HintPath>" + asmPath.replace("/", "\\") + "</HintPath>\n" \
|
|
+ " <HintPath>..\\" + asmPath.replace("/", "\\") + "</HintPath>\n" \
|
|
+ " </Reference>\n"
|
|
result.append(xml)
|
|
return "<!--Start Dependencies-->\n <ItemGroup>\n" + "".join(result) + " </ItemGroup>\n<!--End Dependencies-->"
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser(description="Generate GamecraftModdingAPI.csproj")
|
|
# TODO (maybe?): add params for custom csproj read and write locations
|
|
args = parser.parse_args()
|
|
|
|
print("Building Assembly references")
|
|
asmXml = buildReferencesXml("../ref/Gamecraft_Data/Managed")
|
|
# print(asmXml)
|
|
|
|
with open("../GamecraftModdingAPI/GamecraftModdingAPI.csproj", "r") as xmlFile:
|
|
print("Parsing GamecraftModdingAPI.csproj")
|
|
fileStr = xmlFile.read()
|
|
# print(fileStr)
|
|
depsStart = re.search(r"\<!--\s*Start\s+Dependencies\s*--\>", fileStr)
|
|
depsEnd = re.search(r"\<!--\s*End\s+Dependencies\s*--\>", fileStr)
|
|
if depsStart is None or depsEnd is None:
|
|
print("Unable to find dependency XML comments, aborting!")
|
|
exit(1)
|
|
newFileStr = fileStr[:depsStart.start()] + "\n" + asmXml + "\n" + fileStr[depsEnd.end() + 1:]
|
|
with open("../GamecraftModdingAPI/GamecraftModdingAPI.csproj", "w") as xmlFile:
|
|
print("Writing Assembly references")
|
|
xmlFile.write(newFileStr)
|
|
# print(newFileStr)
|
|
|
|
|