This commit is the equivalent of a atomic bomb
This commit is contained in:
129
make/__main__.py
Normal file
129
make/__main__.py
Normal file
@@ -0,0 +1,129 @@
|
||||
|
||||
__version__ = "2.00"
|
||||
|
||||
import sys
|
||||
|
||||
from format import array_to_string, format_objects_to_markdown, read_last_lines
|
||||
from terminal import print_error, print_green, print_yellow
|
||||
|
||||
if sys.version_info[0] == 2:
|
||||
print("Python 3 is required.")
|
||||
sys.exit(1)
|
||||
|
||||
import os
|
||||
import os.path
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
import requests
|
||||
from obsfuschatedList import obfuschatedList
|
||||
|
||||
def Fract_Sec(s):
|
||||
temp = float()
|
||||
temp = float(s) / (60*60*24)
|
||||
d = int(temp)
|
||||
temp = (temp - d) * 24
|
||||
h = int(temp)
|
||||
temp = (temp - h) * 60
|
||||
m = int(temp)
|
||||
temp = (temp - m) * 60
|
||||
sec = temp
|
||||
return d,h,m,sec
|
||||
#endef Fract_Sec
|
||||
|
||||
failedBuilds = []
|
||||
|
||||
def pack_directory(directory):
|
||||
output_dir = os.getenv("OUTPUT_DIR")
|
||||
|
||||
if not output_dir:
|
||||
print_error("OUTPUT_DIR not set")
|
||||
sys.exit(1)
|
||||
|
||||
absolute_output_dir = os.path.abspath(output_dir)
|
||||
if not os.path.exists(absolute_output_dir):
|
||||
os.makedirs(absolute_output_dir)
|
||||
|
||||
try:
|
||||
absolute_path = os.path.abspath("P:/braf/" + directory)
|
||||
print("Packing Directory {}".format(absolute_path))
|
||||
print("Target Directory {}".format(absolute_output_dir))
|
||||
|
||||
cmd = ["pboproject","-P", absolute_path, "+M={}".format(absolute_output_dir)]
|
||||
|
||||
if directory in obfuschatedList:
|
||||
cmd.append("+O")
|
||||
else:
|
||||
cmd.append("-O")
|
||||
|
||||
returnOutput = subprocess.call(cmd)
|
||||
|
||||
print("Builded {}".format(directory))
|
||||
|
||||
if returnOutput == 0:
|
||||
print_green("Addon {} successfully built/signed.".format(directory))
|
||||
else:
|
||||
print_error("Addon {} not successfully built/signed".format(directory))
|
||||
temp_dir = r'P:/temp'
|
||||
if os.path.exists(temp_dir):
|
||||
errorLog = read_last_lines(os.path.join(temp_dir,directory+".packing.log"), 10)
|
||||
if errorLog is not None:
|
||||
print_yellow("The last 10 lines of the log are:\n {}".format(errorLog))
|
||||
else:
|
||||
print_error("The log could not be found.")
|
||||
failedBuilds.append({"directory": directory, "errorLog": [errorLog]})
|
||||
else:
|
||||
print_error("The temp folder could not be found.")
|
||||
failedBuilds.append({"directory": directory, "errorLog": ["The log could not be found."]})
|
||||
print ("Resuming build...")
|
||||
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(f"Error running command in {directory}: {e}")
|
||||
|
||||
def main():
|
||||
if len(sys.argv) < 2:
|
||||
print_error("No directories provided!")
|
||||
sys.exit(1)
|
||||
|
||||
if len(sys.argv) == 2 and " " in sys.argv[1]:
|
||||
directories = sys.argv[1].split()
|
||||
else:
|
||||
directories = sys.argv[1:]
|
||||
|
||||
for directory in directories:
|
||||
path = Path(directory)
|
||||
if path.is_dir():
|
||||
pack_directory(directory)
|
||||
else:
|
||||
print_error(f"{directory} is not a valid directory path")
|
||||
sys.exit(1)
|
||||
|
||||
print_yellow("There were {} failed builds".format(len(failedBuilds)))
|
||||
|
||||
discord_webhook = os.getenv("DISCORD_WEBHOOK")
|
||||
|
||||
if len(failedBuilds) > 0:
|
||||
print_error("There were {} failed builds:\n {}".format(len(failedBuilds), (failedBuilds)))
|
||||
|
||||
if discord_webhook != "":
|
||||
requests.post(discord_webhook, json={
|
||||
"content": "**There were {} failed builds:**\n {}\n".format(len(failedBuilds), format_objects_to_markdown(failedBuilds)),
|
||||
"username": "Build Failed",
|
||||
"avatar_url": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQE6prA5NL5oqTqEDMAkU823YY4xGMq9c3ucg&s"
|
||||
})
|
||||
|
||||
sys.exit(1)
|
||||
else:
|
||||
print_green("All builds were successful")
|
||||
|
||||
if discord_webhook != "":
|
||||
if len(directories) > 0:
|
||||
requests.post(discord_webhook, json={
|
||||
"content": "**All builds were successful** \n builded addons: {}".format(array_to_string(directories)),
|
||||
"username": "Build Success",
|
||||
"avatar_url": "https://cdn1.iconfinder.com/data/icons/basic-ui-elements-color-round/3/15-512.png"
|
||||
})
|
||||
|
||||
sys.exit(0)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user