Show More
Commit Description:
Add timers for Simulation and various engines...
Commit Description:
Add timers for Simulation and various engines Starting to add additional timers for different stages of the process of updating in order to get more insight into what is slowing it down. The update takes 9ms, which is much longer than it used to. Engine-specific timers are coming later.
File last commit:
Show/Diff file:
Action:
scripts/package.py
187 lines | 6.9 KiB | text/x-python | PythonLexer
#!/bin/env python3
import zipfile
import sys
import shutil
import tempfile
import subprocess
import os
import pathlib
import datetime
template_directory = pathlib.Path("PackageTemplates/")
macos_template = template_directory / "isometric-park-template.app"
windows_template = template_directory / "isometric-park-windows-template"
linux_template = template_directory / "isometric-park-linux-template"
sourcedir = "isometric-park-fna/bin/Release"
destination_directory = pathlib.Path("isometric-park-fna/bin/")
start_date = datetime.datetime(2019, 1, 1)
def months_betweeen(start, end):
return ((end.year - start.year) * 12) + (end.month - start.month)
def create_version_string():
today = datetime.datetime.today()
months = months_betweeen(start_date, today) + 1
version_string = f"0.{months}.{today.strftime('%d')}"
print(f"Version string: {version_string}")
def make_linux(suffix="new"):
new_name = destination_directory / (linux_template.name[:-9] + "-" + suffix)
# shutil.rmtree(new_name)
shutil.copytree(linux_template, new_name)
for (dirpath, _dirname, files) in os.walk(sourcedir):
for file in files:
source = pathlib.Path(dirpath) / file
destination = pathlib.Path(new_name) / os.path.relpath(dirpath, sourcedir) / pathlib.Path(file)
print(source, destination)
os.makedirs(destination.parent, exist_ok=True)
if destination.parent.is_dir() and not destination.parent.exists():
os.mkdir(destination.parent)
elif source.is_dir() and not destination.exists():
print("Copying whole directory!")
shutil.copytree(source, destination)
else:
shutil.copy2(source, destination)
print(pathlib.Path(new_name) / "isometric-park-fna.exe",
pathlib.Path(new_name) / "isometric-park.exe")
shutil.move(pathlib.Path(new_name) / "isometric-park-fna.exe",
pathlib.Path(new_name) / "isometric-park.exe")
new_zip_name = new_name.parent / (new_name.name + ".zip")
with zipfile.ZipFile(new_zip_name, "w",
#May be able to use something better on Linux:
compression=zipfile.ZIP_DEFLATED) as f:
for (dirpath, _dirname, files) in os.walk(new_name):
for file in files:
source = pathlib.Path(dirpath) / file
f.write(source, pathlib.Path(os.path.relpath(sourcedir, dirpath)) / os.path.relpath(dirpath, sourcedir) / pathlib.Path(file))
# f.write(source, pathlib.Path(os.path.relpath(sourcedir, dirpath)) / os.path.relpath(dirpath, sourcedir) / pathlib.Path(file))
def make_windows(suffix="new"):
new_name = destination_directory / (windows_template.name[:-9] + "-" + suffix)
# shutil.rmtree(new_name)
shutil.copytree(windows_template, new_name)
for (dirpath, _dirname, files) in os.walk(sourcedir):
for file in files:
source = pathlib.Path(dirpath) / file
destination = pathlib.Path(new_name) / os.path.relpath(dirpath, sourcedir) / pathlib.Path(file)
print(source, destination)
os.makedirs(destination.parent, exist_ok=True)
if source.parent.is_dir() and not destination.parent.exists():
# shutil.copytree(source.parent, destination.parent)
os.mkdir(destination.parent)
elif source.is_dir() and not destination.exists():
shutil.copytree(source, destination)
else:
shutil.copy2(source, destination)
shutil.move(pathlib.Path(new_name) / "isometric-park-fna.exe",
pathlib.Path(new_name) / "isometric-park.exe")
new_zip_name = new_name.parent / (new_name.name + ".zip")
with zipfile.ZipFile(new_zip_name, "w",
#Windows doesn't natively support other formats
#(besides uncompressed) in my testing:
compression=zipfile.ZIP_DEFLATED) as f:
for (dirpath, _dirname, files) in os.walk(new_name):
for file in files:
source = pathlib.Path(dirpath) / file
f.write(source, pathlib.Path(os.path.relpath(sourcedir, dirpath)) / os.path.relpath(dirpath, sourcedir) / pathlib.Path(file))
def make_macos(suffix="new"):
new_name = destination_directory / (macos_template.name[:-13] + "-" + suffix + ".app" + "/")
# shutil.rmtree(new_name)
shutil.copytree(macos_template, new_name)
for (dirpath, _dirname, files) in os.walk(sourcedir):
for file in files:
source = pathlib.Path(dirpath) / file
destination = new_name / "Contents" / "Resources" / os.path.relpath(dirpath, sourcedir) / file
print(source, destination)
if source.parent.is_dir() and not destination.parent.exists():
# shutil.copytree(source.parent, destination.parent)
os.mkdir(destination.parent)
elif source.is_dir() and not destination.exists():
shutil.copytree(source, destination)
else:
shutil.copy2(source, destination)
shutil.move(pathlib.Path(new_name) / "Contents" / "Resources" / "isometric-park-fna.exe",
pathlib.Path(new_name) / "Contents" / "Resources" / "isometric-park.exe")
def make_source(suffix="new"):
new_name = destination_directory / ("isometric-park-source" + "-" + suffix
+ ".zip")
with tempfile.TemporaryDirectory() as temp:
print(subprocess.getoutput(f"hg clone . {temp}"))
with zipfile.ZipFile(new_name, "w",
#Windows doesn't natively support other formats
#(besides uncompressed) in my testing:
compression=zipfile.ZIP_DEFLATED) as f:
for (dirpath, _dirname, files) in os.walk(temp):
for file in files:
source = pathlib.Path(dirpath) / file
print(os.path.relpath(source, temp))
f.write(source, os.path.relpath(source, temp))
def main():
if len(sys.argv) > 1:
command = sys.argv[1]
if command.lower() == "macos":
if len(sys.argv) > 2:
make_macos(sys.argv[2])
else:
make_macos()
elif command.lower() in ("win", "windows"):
if len(sys.argv) > 2:
make_windows(sys.argv[2])
else:
make_windows()
elif command.lower() == "linux":
if len(sys.argv) > 2:
make_linux(sys.argv[2])
else:
make_linux()
elif command.lower() == "source":
if len(sys.argv) > 2:
make_source(sys.argv[2])
else:
make_source()
elif command.lower() == "version":
create_version_string()
else:
pass
if __name__ == '__main__':
main()