# Baut ALLE Extensions dieses Repos und aktualisiert das Repo-Listing (index.json). # # Ein Blender-Extension-Repo kann MEHRERE Extensions ausliefern: "server-generate" # scannt den dist/-Ordner und listet jedes gefundene Zip. Dadurch liefert EINE # URL in Blender sowohl den Rock- als auch den Tree-Generator. # # Aufruf: # .\build.ps1 # nutzt "blender" aus dem PATH # .\build.ps1 -Blender "E:\...\blender.exe" # # Update-Workflow: # 1. version im jeweiligen Manifest erhoehen (und bl_info in der .py) # 2. .\build.ps1 # 3. git add -A; git commit -m "vX.Y.Z"; git push # 4. In Blender: Preferences -> Get Extensions -> Repo -> "Check for Updates" param( [string]$Blender = "blender" ) $ErrorActionPreference = "Stop" $root = $PSScriptRoot $dist = Join-Path $root "dist" New-Item -ItemType Directory -Force -Path $dist | Out-Null # name = Staging-Ordner, manifest = Quelldatei, source = Addon-Code $extensions = @( @{ name = "rock"; manifest = "blender_manifest.toml"; source = "stylized_rock_generator.py" }, @{ name = "tree"; manifest = "blender_manifest_tree.toml"; source = "stylized_tree_generator.py" }, @{ name = "grass"; manifest = "blender_manifest_grass.toml"; source = "stylized_grass_generator.py" }, @{ name = "utils"; manifest = "blender_manifest_utils.toml"; source = "stylized_asset_utils.py" } ) # Alte Zips weg, damit geloeschte Versionen nicht im Listing haengen bleiben. Get-ChildItem $dist -Filter *.zip -ErrorAction SilentlyContinue | Remove-Item -Force foreach ($ext in $extensions) { $stage = Join-Path $root ("_extsrc_" + $ext.name) if (Test-Path $stage) { Remove-Item -Recurse -Force $stage } New-Item -ItemType Directory -Force -Path $stage | Out-Null # Extension = Package: Manifest heisst IMMER blender_manifest.toml, # der Addon-Code IMMER __init__.py. Copy-Item (Join-Path $root $ext.manifest) (Join-Path $stage "blender_manifest.toml") Copy-Item (Join-Path $root $ext.source) (Join-Path $stage "__init__.py") Write-Host ("== build " + $ext.name + " ==") -ForegroundColor Cyan & $Blender --command extension build --source-dir $stage --output-dir $dist if ($LASTEXITCODE -ne 0) { throw ("build fehlgeschlagen: " + $ext.name) } Remove-Item -Recurse -Force $stage } Write-Host "== server-generate (index.json) ==" -ForegroundColor Cyan & $Blender --command extension server-generate --repo-dir $dist if ($LASTEXITCODE -ne 0) { throw "server-generate fehlgeschlagen" } Write-Host "Fertig." -ForegroundColor Green Get-ChildItem $dist | Select-Object Name, Length | Format-Table -AutoSize