Files
ChaChaGameRepo/launch.bat
2022-08-04 16:07:04 +02:00

215 lines
5.5 KiB
Batchfile

@echo off
setlocal EnableDelayedExpansion
REM ======================
REM Arguments processing
REM ======================
SET _DEV=0
SET _OFFLINE=0
SET _CLEAR=0
SET _RESET=0
SET _HELP=0
FOR %%A IN (%*) DO (
IF "%%A"=="/d" (
ECHO [INFO] Dev Mode enabled
SET _DEV=1
)
IF "%%A"=="/o" (
ECHO [INFO] Offile Mode enabled
SET _OFFLINE=1
)
IF "%%A"=="/c" (
ECHO [INFO] Clear Mode enabled
SET _CLEAR=1
)
IF "%%A"=="/r" (
ECHO [INFO] Reset Mode enabled
SET _RESET=1
)
IF "%%A"=="/h" (
ECHO [INFO] Help Mode enabled
SET _HELP=1
)
)
REM ======
REM Help
REM ======
IF %_HELP%==1 (
echo ======================================================
echo .\launch.bat - main utility to manage ChaChaGameRepo
echo ======================================================
echo Usage: launch.bat [/d] [/o] [/c] [/r] [/h]
echo /d : Development/Debug Mode
echo /o : Offline Mode ^(= no tools update^)
echo /c : Clear Mode ^(= remove downloaded files^)
echo /r : Reset Mode ^(= remove config files !^)
echo /h : This result
echo ======================================================
goto END
)
REM ===========
REM Constants
REM ===========
set GIT_EXE=%~dp0\Embedded\git\bin\git.exe
set PYTHON_PATH=%~dp0\Embedded\python
set PYTHON_EXE=%PYTHON_PATH%\python.exe
set PYTHON_VENV_PATH=%~dp0\Embedded\Runtime\VENV
set INSTALLER_REPO=https://chacha.ddns.net/gitea/chacha/ChaChaGameInstaller.git
set INSTALLER_PATH=%~dp0\Embedded\ChaChaGameInstaller
set FILE_LIST_REPO=https://chacha.ddns.net/gitea/chacha/ChaChaGameInstallerFileList.git
set FILE_LIST_PATH=%~dp0\Embedded\Runtime\FILE_LIST
set INSTALLER_SCRIPT_NAME=__main__.py
set CONFIG_PATH=%~dp0\Configuration
set STORAGE_PATH=%~dp0\Storage
IF %_DEV%==1 (
set INSTALLER_REPO_BRANCH=master
set FILE_LIST_REPO_BRANCH=master
) ELSE (
set INSTALLER_REPO_BRANCH=production
set FILE_LIST_REPO_BRANCH=production
)
IF %_DEV%==1 (
echo.
echo [INFO] Current Environment:
echo GIT_EXE = %GIT_EXE%
echo PYTHON_PATH = %PYTHON_PATH%
echo PYTHON_EXE = %PYTHON_EXE%
echo PYTHON_VENV_PATH = %PYTHON_VENV_PATH%
echo INSTALLER_REPO = %INSTALLER_REPO%
echo INSTALLER_REPO_BRANCH = %INSTALLER_REPO_BRANCH%
echo INSTALLER_PATH = %INSTALLER_PATH%
echo FILE_LIST_REPO = %FILE_LIST_REPO%
echo FILE_LIST_REPO_BRANCH = %FILE_LIST_REPO_BRANCH%
echo FILE_LIST_PATH = %FILE_LIST_PATH%
echo INSTALLER_SCRIPT_NAME = %INSTALLER_SCRIPT_NAME%
echo CONFIG_PATH = %CONFIG_PATH%
echo STORAGE_PATH = %STORAGE_PATH%
echo.
echo.
)
REM ========================
REM Clear / Reset handling
REM ========================
IF %_CLEAR%==1 (
echo [INFO] Clearing files ...
rd /s /q %PYTHON_VENV_PATH% >NUL 2>NUL
rd /s /q %INSTALLER_PATH% >NUL 2>NUL
rd /s /q %FILE_LIST_PATH% >NUL 2>NUL
rd /s /q %STORAGE_PATH% >NUL 2>NUL
mkdir %STORAGE_PATH%
echo [INFO] Done
echo.
)
IF %_RESET%==1 (
echo [INFO] Reseting config ...
rd /s /q %CONFIG_PATH% >NUL 2>NUL
mkdir %CONFIG_PATH%
echo [INFO] Done
echo.
)
IF %_CLEAR%==0 (
IF %_RESET%==0 (
goto NORMAL_FLOW
)
)
goto END
:NORMAL_FLOW
IF not exist %STORAGE_PATH% mkdir %STORAGE_PATH%
IF not exist %CONFIG_PATH% mkdir %CONFIG_PATH%
REM ========================================
REM Getting last version of game installer
REM ========================================
IF NOT %_OFFLINE%==1 (
rd /s /q %INSTALLER_PATH% >NUL 2>NUL
echo [INFO] Updating Installer to last version ...
%GIT_EXE% clone --single-branch --branch %INSTALLER_REPO_BRANCH% %INSTALLER_REPO% %INSTALLER_PATH% >NUL 2>NUL
if ERRORLEVEL 1 goto ERR_DEPLOY_GAME_INSTALLER
echo [INFO] Done
echo.
IF NOT %_DEV%==1 (
rd /s /q %INSTALLER_PATH%\.git >NUL 2>NUL
)
)
REM =========================================
REM Getting last version of game files list
REM =========================================
IF NOT %_OFFLINE%==1 (
rd /s /q %FILE_LIST_PATH% >NUL 2>NUL
echo [INFO] Updating Game Files List to last version ...
%GIT_EXE% clone --single-branch --branch %FILE_LIST_REPO_BRANCH% %FILE_LIST_REPO% %FILE_LIST_PATH%
if ERRORLEVEL 1 goto ERR_DEPLOY_GAME_FILE_LIST
echo [INFO] Done
echo.
IF NOT %_DEV%==1 (
rd /s /q %FILE_LIST_PATH%\.git >NUL 2>NUL
)
)
REM ==================================
REM Preparing execution environnment
REM ==================================
echo [INFO] Updating Environment to last version ...
rd /s /q %PYTHON_VENV_PATH% >NUL 2>NUL
%PYTHON_EXE% -m virtualenv %PYTHON_VENV_PATH% >NUL 2>NUL
if ERRORLEVEL 1 goto ERR_GENE_PYTHON_VENV
call %PYTHON_VENV_PATH%\Scripts\activate.bat >NUL 2>NUL
if ERRORLEVEL 1 goto ERR_ENABLE_PYTHON_VENV
python -m pip install --upgrade requests
if ERRORLEVEL 1 goto ERR_INSTALL_PYTHON_VENV
python -m pip install --upgrade libtorrent
if ERRORLEVEL 1 goto ERR_INSTALL_PYTHON_VENV
python -m pip install --upgrade upnpclient
if ERRORLEVEL 1 goto ERR_INSTALL_PYTHON_VENV
SET PATH=%path%;%~dp0\Embedded\libtorrent
echo [INFO] Done
echo.
REM =============================
REM Running the Storage Manager
REM =============================
echo [INFO] Running the installer ...
REM python %INSTALLER_PATH%\%INSTALLER_SCRIPT_NAME%
python %~dp0\test.py
echo [INFO] Done
echo.
goto END
:ERR_DEPLOY_GAME_INSTALLER
echo [ERROR] Game Installer update failed.
exit /b 10
:ERR_DEPLOY_GAME_FILE_LIST
echo [ERROR] Game File List update failed.
exit /b 20
:ERR_GENE_PYTHON_VENV
echo [ERROR] Can not generate Python VEnv
exit /b 30
:ERR_INSTALL_PYTHON_VENV
echo [ERROR] Can not install package in Python VEnv
exit /b 40
:END
pause