@echo off setlocal EnableDelayedExpansion cd /d "%~dp0" REM --- bump build number --- for /f "usebackq delims=" %%i in (`python -c "from pathlib import Path; import re; t=Path('internal/update/version.go').read_text(); print(re.search(r'BaseVersion\\s*=\\s*\"([^\"]+)\"', t).group(1))"`) do set BASE_VERSION=%%i if not exist buildnum.txt echo 0>buildnum.txt set /p BUILD_NUM=buildnum.txt set FULL_VERSION=%BASE_VERSION%.%BUILD_NUM% echo Building macOS Navis %FULL_VERSION% ... python -c "from pathlib import Path; import re; p=Path('internal/update/version.go'); t=p.read_text(); p.write_text(re.sub(r'(var BuildNumber = \")[^\"]*(\")', r'\g<1>%BUILD_NUM%\2', t))" python -c "import json; from pathlib import Path; maj,mi,pa=map(int,'%BASE_VERSION%'.split('.')[:3]); b=int('%BUILD_NUM%'); p=Path('versioninfo.json'); d=json.loads(p.read_text()); d['FixedFileInfo']['FileVersion']={'Major':maj,'Minor':mi,'Patch':pa,'Build':b}; d['FixedFileInfo']['ProductVersion']=d['FixedFileInfo']['FileVersion']; d['StringFileInfo']['FileVersion']=f'{maj}.{mi}.{pa}.{b}'; d['StringFileInfo']['ProductVersion']=d['StringFileInfo']['FileVersion']; p.write_text(json.dumps(d,indent=2)+chr(10))" set LDFLAGS=-s -w -X vpnclient/internal/update.BuildNumber=%BUILD_NUM% mkdir "dist\navis-release\darwin-arm64" 2>nul mkdir "dist\navis-release\darwin-amd64" 2>nul mkdir "dist\navis-release\darwin-universal" 2>nul set CGO_ENABLED=0 set GOOS=darwin set GOARCH=arm64 go build -ldflags="%LDFLAGS%" -trimpath -o "dist\navis-release\darwin-arm64\Navis" .\cmd\vpnapp if errorlevel 1 exit /b 1 go build -ldflags="%LDFLAGS%" -trimpath -o "dist\navis-release\darwin-arm64\Navis-cli" .\cmd\vpnclient if errorlevel 1 exit /b 1 echo %FULL_VERSION%> "dist\navis-release\darwin-arm64\VERSION" set GOARCH=amd64 go build -ldflags="%LDFLAGS%" -trimpath -o "dist\navis-release\darwin-amd64\Navis" .\cmd\vpnapp if errorlevel 1 exit /b 1 go build -ldflags="%LDFLAGS%" -trimpath -o "dist\navis-release\darwin-amd64\Navis-cli" .\cmd\vpnclient if errorlevel 1 exit /b 1 echo %FULL_VERSION%> "dist\navis-release\darwin-amd64\VERSION" set GOOS= set GOARCH= set CGO_ENABLED= go build -o "tools\mklipo\mklipo.exe" .\tools\mklipo if errorlevel 1 exit /b 1 tools\mklipo\mklipo.exe "dist\navis-release\darwin-amd64\Navis" "dist\navis-release\darwin-arm64\Navis" "dist\navis-release\darwin-universal\Navis" if errorlevel 1 exit /b 1 tools\mklipo\mklipo.exe "dist\navis-release\darwin-amd64\Navis-cli" "dist\navis-release\darwin-arm64\Navis-cli" "dist\navis-release\darwin-universal\Navis-cli" if errorlevel 1 exit /b 1 echo %FULL_VERSION%> "dist\navis-release\darwin-universal\VERSION" go build -o "tools\packmac\packmac.exe" .\tools\packmac if errorlevel 1 exit /b 1 tools\packmac\packmac.exe -bin "dist\navis-release\darwin-arm64\Navis" -out "dist\navis-release\darwin-arm64" -version %FULL_VERSION% -build %BUILD_NUM% -arch arm64 if errorlevel 1 exit /b 1 tools\packmac\packmac.exe -bin "dist\navis-release\darwin-amd64\Navis" -out "dist\navis-release\darwin-amd64" -version %FULL_VERSION% -build %BUILD_NUM% -arch amd64 if errorlevel 1 exit /b 1 tools\packmac\packmac.exe -bin "dist\navis-release\darwin-universal\Navis" -out "dist\navis-release\darwin-universal" -version %FULL_VERSION% -build %BUILD_NUM% -arch universal if errorlevel 1 exit /b 1 echo Built Mac GUI + CLI %FULL_VERSION%: dir "dist\navis-release\darwin-universal" dir "dist\navis-release\darwin-arm64" dir "dist\navis-release\darwin-amd64" endlocal