1
0
mirror of https://gitlab.com/kelteseth/ScreenPlay.git synced 2024-09-01 08:09:48 +02:00
ScreenPlay/Tools/steam_publish.py
Elias Steurer 6e2cecddb3 Fix compilation and signing
Move TrayIcon back to ScreenPlay:
- This fixes the missing labs plugins when running the macdeployqt script
- We don't need it here only in the SP main folder anyway

Move building and sign of the osx version for x64 and arm64 into the
actual build script.

Remove the qml plugin path workaround from the addImportPath
2023-02-11 11:57:09 +01:00

132 lines
5.1 KiB
Python

#!/usr/bin/python3
# SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only
import os
import sys
import subprocess
import shutil
import argparse
from sys import platform
from execute_util import execute
from datetime import datetime
from shutil import copyfile
import subprocess
from util import cd_repo_root_path
import platform
from sys import stdout
stdout.reconfigure(encoding='utf-8')
# Executes steamcmd with username and password. Changes the content of the config
# for better readability in the steam builds tab
# https://partner.steamgames.com/apps/builds/672870
def get_git_revision_short_hash():
return subprocess.check_output(['git', 'rev-parse', '--short', 'HEAD'])
def get_git_commit_text():
return subprocess.check_output(['git', 'log', '-1', '--pretty=%B'])
def publish(
steam_username,
steam_password,
set_live_branch_name
):
# Make sure the script is always started from the same folder
root_path = cd_repo_root_path()
tools_path = os.path.join(root_path, "Tools")
contentBuiler_path = os.path.join(tools_path, "Steam/ContentBuilder/")
vdf_config_name = ""
depot_config_name = ""
steamcmd_path = ""
if platform.system() == "Windows":
vdf_config_name = "app_build_windows.vdf"
depot_config_name = "depot_build_windows.vdf"
steamcmd_path = os.path.join(contentBuiler_path, "builder/steamcmd.exe")
steamcmd_path = steamcmd_path.replace("/","\\")
elif platform.system() == "Darwin":
vdf_config_name = "app_build_mac.vdf"
depot_config_name = "depot_build_mac.vdf"
steamcmd_path = os.path.join(contentBuiler_path, "builder_osx/steamcmd")
execute(f"chmod +x {steamcmd_path}")
elif platform.system() == "Linux":
vdf_config_name = "app_build_linux.vdf"
depot_config_name = "depot_build_linux.vdf"
steamcmd_path = os.path.join(contentBuiler_path, "builder_linux/steamcmd.sh")
execute(f"chmod +x {steamcmd_path}")
print(f"Set steamCmd path: {steamcmd_path}")
abs_vdf_path = os.path.join(tools_path,"Steam/steamcmd/" + vdf_config_name)
if not os.path.isfile(abs_vdf_path):
print("Incorrect vdf name")
sys.exit(-1)
file = open(abs_vdf_path, "r")
config_content = file.read()
git_hash = get_git_revision_short_hash().decode("utf-8").replace("\n", "")
git_commit_text = get_git_commit_text().decode("utf-8").replace("\n", "")
# Remove ' and " that can occour it is a merge commit
git_commit_text = git_commit_text.replace('\"','')
git_commit_text = git_commit_text.replace('\'','')
current_date_time = datetime.now().strftime("%d/%m/%Y, %H:%M:%S")
build_description = "- git hash: " + git_hash + ", commit: " + git_commit_text + " - upload datetime: " + current_date_time
config_content = config_content.replace("{{BUILD_DESCRIPTION}}", build_description)
config_content = config_content.replace("{{SET_LIVE_ON_BRANCH}}", set_live_branch_name)
tmp_steam_config_foldername = "tmp_steam_config/"
tmp_steam_config_dir = os.path.abspath(os.path.join(tools_path,tmp_steam_config_foldername))
if os.path.isdir(tmp_steam_config_dir):
print(f"Deleting tmp config {tmp_steam_config_dir}")
shutil.rmtree(tmp_steam_config_dir)
os.mkdir(tmp_steam_config_dir)
f = open(os.path.abspath(tmp_steam_config_dir + "/" + vdf_config_name), "w")
f.write(config_content)
f.close()
print(f"Using config:\n {config_content}\n")
# We also must copy the depot file
abs_depot_path = os.path.join(tools_path, "Steam/steamcmd/" + depot_config_name)
copyfile(abs_depot_path, tmp_steam_config_dir + "/" + depot_config_name)
tmp_steam_config_path = "\"" + os.path.abspath(os.path.join(tmp_steam_config_dir,vdf_config_name) ) + "\""
print("Execute steamcmd on: " + tmp_steam_config_path)
execute(f"{steamcmd_path} +login {steam_username} {steam_password} +run_app_build {tmp_steam_config_path} +quit")
print("Deleting tmp config")
shutil.rmtree(tmp_steam_config_dir)
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Publish ScreenPlay to Steam')
parser.add_argument('-steam_username', action="store", dest="steam_username", required=True,
help="Steam Username.")
parser.add_argument('-steam_password', action="store", dest="steam_password", required=True,
help="Steam Password.")
parser.add_argument('-set_live_branch_name', action="store", dest="set_live_branch_name",
help="Branch name. Defaults to internal")
parser.add_argument('-steam_config', action="store", dest="vdf_config_name",
help="Name to the .vdf config. This will use the .vdf files from the steamcmd folder.")
args = parser.parse_args()
if not args.steam_username or not args.steam_password:
exit(1)
if args.set_live_branch_name:
set_live_branch_name = args.set_live_branch_name
else:
set_live_branch_name = "internal"
publish(
steam_username=args.steam_username,
steam_password=args.steam_password,
set_live_branch_name=set_live_branch_name
)