mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-01-12 02:22:11 +00:00
* Adds CI to verify maps are within 255x255x1 * Ooops platform agnostic * Webedit to fight autoformat * Time that shit --------- Signed-off-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com>
92 lines
2.5 KiB
Python
92 lines
2.5 KiB
Python
import glob
|
|
import os
|
|
import sys
|
|
import subprocess
|
|
import platform
|
|
import json
|
|
import time
|
|
|
|
parent_directory = "_maps/**/*.dmm"
|
|
|
|
MAX_X_SIZE = 255
|
|
MAX_Y_SIZE = 255
|
|
MAX_Z_SIZE = 1
|
|
|
|
how_to_fix_message = f"Please make sure maps are <= {MAX_X_SIZE}x{MAX_Y_SIZE}x{MAX_Z_SIZE}."
|
|
|
|
def green(text):
|
|
return "\033[32m" + str(text) + "\033[0m"
|
|
|
|
def red(text):
|
|
return "\033[31m" + str(text) + "\033[0m"
|
|
|
|
def blue(text):
|
|
return "\033[34m" + str(text) + "\033[0m"
|
|
|
|
def post_error(file, map_data, github_error_style):
|
|
if github_error_style:
|
|
print(f"::error file={file},title=Map Size::{file} is >{MAX_X_SIZE}x{MAX_Y_SIZE}x{MAX_Z_SIZE} (Found: {map_data['x']},{map_data['y']},{map_data['z']})!")
|
|
else:
|
|
print(f"- Failure: {red(file)} is is >{MAX_X_SIZE}x{MAX_Y_SIZE}x{MAX_Z_SIZE} (Found: {map_data['x']},{map_data['y']},{map_data['z']})")
|
|
|
|
def do_dmmtools_call(file):
|
|
# Windows - hopefully local
|
|
exec_path = None
|
|
if platform.system() == 'Windows':
|
|
exec_path = "dmm-tools.exe"
|
|
# Linux - CI
|
|
else:
|
|
exec_path = "tools/github-actions/nanomap-renderer"
|
|
|
|
exec_args = f"{exec_path} map-info \"{file}\""
|
|
result = subprocess.run(exec_args, shell=True, capture_output=True, text=True)
|
|
|
|
res_obj = json.loads(result.stdout)
|
|
|
|
return_obj = {
|
|
"x": res_obj[file]["size"][0],
|
|
"y": res_obj[file]["size"][1],
|
|
"z": res_obj[file]["size"][2]
|
|
}
|
|
|
|
return return_obj
|
|
|
|
def main():
|
|
start = time.time()
|
|
# simple way to check if we're running on github actions, or on a local machine
|
|
on_github = os.getenv("GITHUB_ACTIONS") == "true"
|
|
|
|
maps_greater_than_allowed = []
|
|
|
|
map_count = 0
|
|
|
|
for map_file in glob.glob(parent_directory, recursive=True):
|
|
map_count += 1
|
|
# Open the map in the nanomap dmm tools - it works
|
|
map_data = do_dmmtools_call(map_file)
|
|
|
|
if map_data["x"] > MAX_X_SIZE or map_data["y"] > MAX_Y_SIZE or map_data["z"] > MAX_Z_SIZE:
|
|
maps_greater_than_allowed.append((map_file, map_data))
|
|
|
|
if len(maps_greater_than_allowed):
|
|
for error in maps_greater_than_allowed:
|
|
post_error(error[0], error[1], on_github)
|
|
|
|
print(red(how_to_fix_message))
|
|
|
|
end = time.time()
|
|
print(f"\ncheck_map_sizes.py completed in {(end - start):.2f}s\n")
|
|
|
|
sys.exit(1)
|
|
|
|
else:
|
|
print(green(f"No oversized maps found (checked {map_count} maps)."))
|
|
|
|
end = time.time()
|
|
print(f"\ncheck_map_sizes.py completed in {(end - start):.2f}s\n")
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
|
|
|