2023-01-19 10:33:49 +01:00
#!/usr/bin/python3
# SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only
2022-07-09 13:05:42 +02:00
import steam_publish
2022-08-26 15:45:49 +02:00
import shutil
import sys
import macos_sign
2022-07-09 13:05:42 +02:00
import argparse
import os
2022-07-24 17:56:00 +02:00
import build
2022-07-09 13:05:42 +02:00
from pathlib import Path
2022-07-22 13:21:30 +02:00
import platform
2022-08-07 12:24:07 +02:00
import paramiko
2022-10-10 11:35:41 +02:00
import defines
2023-02-11 11:57:09 +01:00
from util import sftp_exists , run , repo_root_path
2022-11-02 12:15:34 +01:00
from sys import stdout
stdout . reconfigure ( encoding = ' utf-8 ' )
2022-07-09 13:05:42 +02:00
if __name__ == " __main__ " :
parser = argparse . ArgumentParser ( description = ' Build and Package ScreenPlay ' )
2023-01-05 13:42:58 +01:00
parser . add_argument ( ' -skip_publish ' , ' -skp ' , action = " store_true " , dest = " skip_publish " , default = False , help = " skip publish " )
parser . add_argument ( ' -skip_build ' , ' -skb ' , action = " store_true " , dest = " skip_build " , default = False , help = " skip build. If we already have a build and only want to upload it " )
2022-08-14 11:58:41 +02:00
parser . add_argument ( ' -steam_password ' , ' -sp ' , action = " store " , dest = " steam_password " , help = " Steam password " )
parser . add_argument ( ' -hosting_username ' , ' -hu ' , action = " store " , dest = " hosting_username " , help = " ssh username " )
parser . add_argument ( ' -hosting_password ' , ' -hp ' , action = " store " , dest = " hosting_password " , help = " ssh password " )
2022-07-09 13:05:42 +02:00
args = parser . parse_args ( )
# Script needs to run in the tools folder
tools_path = Path . cwd ( )
os . chdir ( tools_path )
2022-07-22 13:21:30 +02:00
root_path = tools_path . parent
print ( f " Set root directory to: { root_path } " )
2022-07-24 17:56:00 +02:00
build_result = build . BuildResult ( )
build_config = build . BuildConfig ( )
2022-10-10 11:35:41 +02:00
build_config . screenplay_version = defines . SCREENPLAY_VERSION
build_config . qt_version = defines . QT_VERSION
build_config . qt_ifw_version = defines . QT_IFW_VERSION
2022-07-24 17:56:00 +02:00
build_config . build_steam = " ON "
build_config . build_tests = " OFF "
2022-08-14 11:58:41 +02:00
build_config . build_deploy = " ON "
2022-07-24 17:56:00 +02:00
build_config . create_installer = " ON "
build_config . build_type = " release "
2023-01-05 13:42:58 +01:00
if platform . system ( ) == " Darwin " and not args . skip_build :
2022-08-14 11:58:41 +02:00
# We do not yet support a standalone osx installer
build_config . create_installer = " OFF "
2022-08-26 15:45:49 +02:00
# We need to manually package here at the end after
build_config . package = True
2023-02-11 11:57:09 +01:00
build_config . sign_osx = True
2022-08-26 15:45:49 +02:00
2023-02-11 11:57:09 +01:00
# This will build both arm64 and x64 and sign the unversal binary
2022-07-24 17:56:00 +02:00
build_result = build . execute ( build_config )
2022-11-02 16:41:06 +01:00
2023-01-05 13:42:58 +01:00
if platform . system ( ) == " Windows " and not args . skip_build :
2022-07-24 17:56:00 +02:00
build_config . build_architecture = " x64 "
2022-11-04 16:32:53 +01:00
if not args . skip_publish :
# Steamless version first
build_config . build_steam = " OFF "
build_result = build . execute ( build_config )
ssh = paramiko . SSHClient ( )
ssh . load_system_host_keys ( )
ssh . set_missing_host_key_policy ( paramiko . AutoAddPolicy ( ) )
ssh . connect ( ' kelteseth.com ' , username = args . hosting_username , password = args . hosting_password )
sftp = ssh . open_sftp ( )
release_folder = " /kelteseth_com/public/releases/ " + build_config . screenplay_version + " / "
if sftp_exists ( sftp , release_folder ) :
remoteFiles = sftp . listdir ( path = release_folder )
for file in remoteFiles :
print ( f " Delte old: { release_folder + file } " )
sftp . remove ( release_folder + file )
else :
sftp . mkdir ( release_folder )
print ( " Uploading files... " )
sftp . put ( build_result . build_zip , release_folder + str ( build_result . build_zip . name ) )
sftp . put ( build_result . installer , release_folder + str ( build_result . installer . name ) )
sftp . put ( build_result . installer_zip , release_folder + str ( build_result . installer_zip . name ) )
sftp . put ( build_result . build_hash , release_folder + str ( build_result . build_hash . name ) )
sftp . close ( )
ssh . close ( )
2022-07-24 17:56:00 +02:00
2022-11-02 16:41:06 +01:00
# Now build the steam version
2022-11-04 16:32:53 +01:00
os . chdir ( tools_path )
2022-11-02 16:41:06 +01:00
build_config . build_steam = " ON "
build_config . create_installer = " OFF "
build_result = build . execute ( build_config )
2022-11-02 16:39:23 +01:00
if args . skip_publish :
print ( " Skip publishing. " )
sys . exit ( 0 )
2022-11-02 16:41:55 +01:00
2023-02-11 11:57:09 +01:00
if args . steam_password is None :
print ( " Steam password is required. " )
sys . exit ( 1 )
2022-08-07 12:24:07 +02:00
# Make sure to reset to tools path
2022-08-26 15:43:50 +02:00
os . chdir ( tools_path )
steam_publish . publish (
steam_username = " tachiom " ,
steam_password = args . steam_password ,
set_live_branch_name = " internal "
)