Show More
Commit Description:
Tidy code.
Commit Description:
Tidy code.
File last commit:
Show/Diff file:
Action:
scripts/package.py
187 lines | 6.9 KiB | text/x-python | PythonLexer
Add packaging script.
r22 #!/bin/env python3
import zipfile
import sys
import shutil
Add source support to packager.
r24 import tempfile
import subprocess
Add packaging script.
r22 import os
import pathlib
Add version calculation.
r271 import datetime
Add packaging script.
r22
Update packaging script.
r25 template_directory = pathlib.Path("PackageTemplates/")
macos_template = template_directory / "isometric-park-template.app"
windows_template = template_directory / "isometric-park-windows-template"
Fixes to package script.
r26 linux_template = template_directory / "isometric-park-linux-template"
Add packaging script.
r22
Add Windows support to build script.
r23 sourcedir = "isometric-park-fna/bin/Release"
Update packaging script.
r25 destination_directory = pathlib.Path("isometric-park-fna/bin/")
Add packaging script.
r22
Add source support to packager.
r24
Add version calculation.
r271 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}")
Fixes to package script.
r26 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
Work on Linux support (work from a while ago).
r41 destination = pathlib.Path(new_name) / os.path.relpath(dirpath, sourcedir) / pathlib.Path(file)
Fixes to package script.
r26
print(source, destination)
Work on Linux support (work from a while ago).
r41 os.makedirs(destination.parent, exist_ok=True)
if destination.parent.is_dir() and not destination.parent.exists():
Fixes to package script.
r26 os.mkdir(destination.parent)
elif source.is_dir() and not destination.exists():
Work on Linux support (work from a while ago).
r41 print("Copying whole directory!")
Fixes to package script.
r26 shutil.copytree(source, destination)
else:
shutil.copy2(source, destination)
Work on Linux support (work from a while ago).
r41 print(pathlib.Path(new_name) / "isometric-park-fna.exe",
pathlib.Path(new_name) / "isometric-park.exe")
Fixes to package script.
r26 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:
Work on Linux support (work from a while ago).
r41 for (dirpath, _dirname, files) in os.walk(new_name):
Fixes to package script.
r26 for file in files:
source = pathlib.Path(dirpath) / file
Work on Linux support (work from a while ago).
r41 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))
Fixes to package script.
r26
Add packaging script.
r22 def make_windows(suffix="new"):
Update packaging script.
r25 new_name = destination_directory / (windows_template.name[:-9] + "-" + suffix)
Add Windows support to build script.
r23 # 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
Work on Linux support (work from a while ago).
r41 destination = pathlib.Path(new_name) / os.path.relpath(dirpath, sourcedir) / pathlib.Path(file)
Add Windows support to build script.
r23
print(source, destination)
Add packaging script.
r22
Work on Linux support (work from a while ago).
r41 os.makedirs(destination.parent, exist_ok=True)
Fixes to package script.
r26 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():
Add Windows support to build script.
r23 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")
Update packaging script.
r25 new_zip_name = new_name.parent / (new_name.name + ".zip")
with zipfile.ZipFile(new_zip_name, "w",
Add Windows support to build script.
r23 #Windows doesn't natively support other formats
#(besides uncompressed) in my testing:
compression=zipfile.ZIP_DEFLATED) as f:
Work on Linux support (work from a while ago).
r41 for (dirpath, _dirname, files) in os.walk(new_name):
Add Windows support to build script.
r23 for file in files:
source = pathlib.Path(dirpath) / file
Work on Linux support (work from a while ago).
r41 f.write(source, pathlib.Path(os.path.relpath(sourcedir, dirpath)) / os.path.relpath(dirpath, sourcedir) / pathlib.Path(file))
Add packaging script.
r22
Add source support to packager.
r24
Add packaging script.
r22 def make_macos(suffix="new"):
Downgrade to slightly earlier .NET to fix macOS issue.
r30 new_name = destination_directory / (macos_template.name[:-13] + "-" + suffix + ".app" + "/")
Add packaging script.
r22
Add Windows support to build script.
r23 # shutil.rmtree(new_name)
Add packaging script.
r22 shutil.copytree(macos_template, new_name)
Add Windows support to build script.
r23 for (dirpath, _dirname, files) in os.walk(sourcedir):
Add packaging script.
r22 for file in files:
source = pathlib.Path(dirpath) / file
Fixes to package script.
r26 destination = new_name / "Contents" / "Resources" / os.path.relpath(dirpath, sourcedir) / file
Add packaging script.
r22
print(source, destination)
Fixes to package script.
r26 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():
Add packaging script.
r22 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")
Add source support to packager.
r24 def make_source(suffix="new"):
Update packaging script.
r25 new_name = destination_directory / ("isometric-park-source" + "-" + suffix
+ ".zip")
Add source support to packager.
r24
with tempfile.TemporaryDirectory() as temp:
print(subprocess.getoutput(f"hg clone . {temp}"))
Update packaging script.
r25 with zipfile.ZipFile(new_name, "w",
Add source support to packager.
r24 #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))
Update packaging script.
r25 f.write(source, os.path.relpath(source, temp))
Add source support to packager.
r24
Add packaging script.
r22 def main():
if len(sys.argv) > 1:
command = sys.argv[1]
Add Windows support to build script.
r23 if command.lower() == "macos":
Add packaging script.
r22 if len(sys.argv) > 2:
make_macos(sys.argv[2])
Add Windows support to build script.
r23 else:
make_macos()
elif command.lower() in ("win", "windows"):
if len(sys.argv) > 2:
make_windows(sys.argv[2])
else:
make_windows()
Work on Linux support (work from a while ago).
r41 elif command.lower() == "linux":
if len(sys.argv) > 2:
make_linux(sys.argv[2])
else:
make_linux()
Add source support to packager.
r24 elif command.lower() == "source":
if len(sys.argv) > 2:
make_source(sys.argv[2])
else:
make_source()
Add version calculation.
r271 elif command.lower() == "version":
create_version_string()
Add packaging script.
r22 else:
pass
if __name__ == '__main__':
main()