name: Build Mod Package on: push: branches: - main - master tags: - "v*" workflow_dispatch: jobs: build: runs-on: - windows - win11 defaults: run: shell: pwsh steps: - name: Prepare workspace run: | $ErrorActionPreference = "Stop" if ($env:GITHUB_WORKSPACE -and (Test-Path -LiteralPath $env:GITHUB_WORKSPACE)) { Set-Location $env:GITHUB_WORKSPACE } if (-not (Test-Path -LiteralPath "Mods\\DnD55eRussian\\Localization\\Russian\\russian.xml")) { throw "Repository sources are not available in the runner workspace." } New-Item -ItemType Directory -Path ".tools\\lslib" -Force | Out-Null New-Item -ItemType Directory -Path "build" -Force | Out-Null - name: Download latest LSLib release run: | $ErrorActionPreference = "Stop" $release = Invoke-RestMethod -Uri "https://api.github.com/repos/Norbyte/lslib/releases/latest" $asset = $release.assets | Where-Object { $_.name -match '\.zip$' } | Select-Object -First 1 if (-not $asset) { throw "Could not find a downloadable LSLib zip asset in the latest release." } Invoke-WebRequest -Uri $asset.browser_download_url -OutFile ".tools/lslib/lslib.zip" Expand-Archive -LiteralPath ".tools/lslib/lslib.zip" -DestinationPath ".tools/lslib" -Force - name: Resolve Divine executable run: | $ErrorActionPreference = "Stop" $divine = Get-ChildItem -Path ".tools/lslib" -Recurse -File | Where-Object { $_.Name -ieq "Divine.exe" } | Select-Object -First 1 if (-not $divine) { throw "Divine.exe was not found in the downloaded LSLib release." } "DIVINE_PATH=$($divine.FullName)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - name: Build .pak run: | $ErrorActionPreference = "Stop" & "$env:DIVINE_PATH" -a create-package -g bg3 -s Mods -d build/DnD55eRussian.pak if (-not (Test-Path -LiteralPath "build/DnD55eRussian.pak")) { throw "Package was not created." } - name: Show build result run: | $ErrorActionPreference = "Stop" Get-ChildItem "build/DnD55eRussian.pak" | Select-Object FullName, Length, LastWriteTime