67 lines
2.0 KiB
Batchfile
67 lines
2.0 KiB
Batchfile
@echo off
|
|
setlocal EnableExtensions EnableDelayedExpansion
|
|
|
|
set "REPO_ROOT=%~dp0"
|
|
set "BLENDER_ROOT=%REPO_ROOT%blender"
|
|
set "DIST_DIR=%REPO_ROOT%dist"
|
|
|
|
if not defined BLENDER_BIN set "BLENDER_BIN=blender"
|
|
if not defined BLENDER_EXTENSION_REPO set "BLENDER_EXTENSION_REPO=user_default"
|
|
|
|
if not exist "%BLENDER_ROOT%" (
|
|
echo No Blender extension directory found at "%BLENDER_ROOT%". 1>&2
|
|
exit /b 1
|
|
)
|
|
|
|
if not exist "%DIST_DIR%" mkdir "%DIST_DIR%"
|
|
if errorlevel 1 exit /b 1
|
|
|
|
set /a EXTENSION_COUNT=0
|
|
|
|
for /r "%BLENDER_ROOT%" %%F in (blender_manifest.toml) do (
|
|
set "EXTENSION_ID="
|
|
set "EXTENSION_VERSION="
|
|
|
|
for /f "tokens=1,* delims==" %%A in ('findstr /b /c:"id =" "%%F"') do set "EXTENSION_ID=%%B"
|
|
for /f "tokens=1,* delims==" %%A in ('findstr /b /c:"version =" "%%F"') do set "EXTENSION_VERSION=%%B"
|
|
|
|
set "EXTENSION_ID=!EXTENSION_ID: =!"
|
|
set "EXTENSION_ID=!EXTENSION_ID:"=!"
|
|
set "EXTENSION_VERSION=!EXTENSION_VERSION: =!"
|
|
set "EXTENSION_VERSION=!EXTENSION_VERSION:"=!"
|
|
|
|
if not defined EXTENSION_ID (
|
|
echo Could not read the extension id from "%%F". 1>&2
|
|
exit /b 1
|
|
)
|
|
if not defined EXTENSION_VERSION (
|
|
echo Could not read the extension version from "%%F". 1>&2
|
|
exit /b 1
|
|
)
|
|
|
|
for %%D in ("%%~dpF.") do set "SOURCE_DIR=%%~fD"
|
|
set "PACKAGE=%DIST_DIR%\!EXTENSION_ID!-!EXTENSION_VERSION!.zip"
|
|
|
|
echo Building Blender extension: !EXTENSION_ID! !EXTENSION_VERSION!
|
|
"%BLENDER_BIN%" --factory-startup --command extension build ^
|
|
--source-dir "!SOURCE_DIR!" ^
|
|
--output-filepath "!PACKAGE!"
|
|
if errorlevel 1 exit /b 1
|
|
|
|
echo Installing Blender extension: !PACKAGE!
|
|
"%BLENDER_BIN%" --factory-startup --command extension install-file ^
|
|
-r "%BLENDER_EXTENSION_REPO%" ^
|
|
-e "!PACKAGE!"
|
|
if errorlevel 1 exit /b 1
|
|
|
|
set /a EXTENSION_COUNT+=1
|
|
)
|
|
|
|
if !EXTENSION_COUNT! equ 0 (
|
|
echo No Blender extension manifests found under "%BLENDER_ROOT%". 1>&2
|
|
exit /b 1
|
|
)
|
|
|
|
echo Installed and enabled !EXTENSION_COUNT! Blender extension(s) in repository "%BLENDER_EXTENSION_REPO%".
|
|
exit /b 0
|