mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-26 01:51:41 +00:00
[build] Don't unconditionally regenerate wpimath numbers (#2665)
Co-authored-by: Tyler Veness <calcmogul@gmail.com>
This commit is contained in:
@@ -1,42 +1,59 @@
|
||||
import os
|
||||
import shutil
|
||||
import sys
|
||||
|
||||
MAX_NUM = 20
|
||||
|
||||
dirname, _ = os.path.split(os.path.abspath(__file__))
|
||||
cmake_binary_dir = sys.argv[1]
|
||||
def main():
|
||||
MAX_NUM = 20
|
||||
|
||||
with open(f"{dirname}/src/generate/GenericNumber.java.in", "r") as templateFile:
|
||||
template = templateFile.read()
|
||||
rootPath = f"{cmake_binary_dir}/generated/main/java/edu/wpi/first/wpiutil/math/numbers"
|
||||
dirname, _ = os.path.split(os.path.abspath(__file__))
|
||||
cmake_binary_dir = sys.argv[1]
|
||||
|
||||
if os.path.exists(rootPath):
|
||||
shutil.rmtree(rootPath)
|
||||
os.makedirs(rootPath)
|
||||
with open(f"{dirname}/src/generate/GenericNumber.java.in",
|
||||
"r") as templateFile:
|
||||
template = templateFile.read()
|
||||
rootPath = f"{cmake_binary_dir}/generated/main/java/edu/wpi/first/wpiutil/math/numbers"
|
||||
|
||||
for i in range(MAX_NUM + 1):
|
||||
with open(f"{rootPath}/N{i}.java", "w") as f:
|
||||
f.write(template.replace("${num}", str(i)))
|
||||
if not os.path.exists(rootPath):
|
||||
os.makedirs(rootPath)
|
||||
|
||||
with open(f"{dirname}/src/generate/Nat.java.in", "r") as templateFile:
|
||||
template = templateFile.read()
|
||||
outputPath = f"{cmake_binary_dir}/generated/main/java/edu/wpi/first/wpiutil/math/Nat.java"
|
||||
with open(f"{dirname}/src/generate/NatGetter.java.in", "r") as getterFile:
|
||||
getter = getterFile.read()
|
||||
for i in range(MAX_NUM + 1):
|
||||
new_contents = template.replace("${num}", str(i))
|
||||
|
||||
if os.path.exists(outputPath):
|
||||
os.remove(outputPath)
|
||||
if os.path.exists(f"{rootPath}/N{i}.java"):
|
||||
with open(f"{rootPath}/N{i}.java", "r") as f:
|
||||
if f.read() == new_contents:
|
||||
continue
|
||||
|
||||
importsString = ""
|
||||
# File either doesn't exist or has different contents
|
||||
with open(f"{rootPath}/N{i}.java", "w") as f:
|
||||
f.write(new_contents)
|
||||
|
||||
for i in range(MAX_NUM + 1):
|
||||
importsString += f"import edu.wpi.first.wpiutil.math.numbers.N{i};\n"
|
||||
template += getter.replace("${num}", str(i))
|
||||
with open(f"{dirname}/src/generate/Nat.java.in", "r") as templateFile:
|
||||
template = templateFile.read()
|
||||
outputPath = f"{cmake_binary_dir}/generated/main/java/edu/wpi/first/wpiutil/math/Nat.java"
|
||||
with open(f"{dirname}/src/generate/NatGetter.java.in",
|
||||
"r") as getterFile:
|
||||
getter = getterFile.read()
|
||||
|
||||
template += "}\n"
|
||||
importsString = ""
|
||||
|
||||
template = template.replace('{{REPLACEWITHIMPORTS}}', importsString)
|
||||
for i in range(MAX_NUM + 1):
|
||||
importsString += f"import edu.wpi.first.wpiutil.math.numbers.N{i};\n"
|
||||
template += getter.replace("${num}", str(i))
|
||||
|
||||
with open(outputPath, "w") as f:
|
||||
f.write(template)
|
||||
template += "}\n"
|
||||
|
||||
template = template.replace('{{REPLACEWITHIMPORTS}}', importsString)
|
||||
|
||||
if os.path.exists(outputPath):
|
||||
with open(outputPath, "r") as f:
|
||||
if f.read() == template:
|
||||
return 0
|
||||
|
||||
# File either doesn't exist or has different contents
|
||||
with open(outputPath, "w") as f:
|
||||
f.write(template)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user