@echo off setlocal enabledelayedexpansion rem Initialize variables set SKIP_CONFIG="" set PORT="" set DOMAIN="" set BUILD_OUTPUT=qgato.exe rem Parse arguments :parse_args if "%~1"=="" goto end_parse if "%~1"=="--port" ( set PORT=%~2 shift shift goto parse_args ) if "%~1"=="--domain" ( set DOMAIN=%~2 shift shift goto parse_args ) if "%~1"=="--skip-config-check" ( set SKIP_CONFIG=--skip-config-check shift goto parse_args ) echo Unknown argument: %~1 exit /b 1 :end_parse rem Use the current directory where the script is executed pushd %~dp0 rem Collect all .go files in the current directory excluding *_test.go set GO_FILES= for %%f in (*.go) do ( echo %%f | findstr "_test.go" >nul if errorlevel 1 ( set GO_FILES=!GO_FILES! %%f ) ) rem Always delete and rebuild the binary echo Cleaning previous build... if exist "%BUILD_OUTPUT%" del "%BUILD_OUTPUT%" echo Building application... go build -o "%BUILD_OUTPUT%" !GO_FILES! if errorlevel 1 ( echo Build failed! exit /b 1 ) echo Build successful! Output: %CD%\%BUILD_OUTPUT% rem Construct the command set CMD=%BUILD_OUTPUT% !SKIP_CONFIG! if not "%PORT%"=="" set CMD=!CMD! --port %PORT% if not "%DOMAIN%"=="" set CMD=!CMD! --domain %DOMAIN% rem Informative output echo Starting application with command: !CMD! rem Run the built executable call !CMD! rem Return to the original directory popd