diff options
| author | Bryan Galdrikian <[email protected]> | 2024-12-20 16:15:12 -0800 |
|---|---|---|
| committer | Bryan Galdrikian <[email protected]> | 2024-12-20 16:15:12 -0800 |
| commit | b16fdc73d55b467b15595e32c70418ea55c1fe2b (patch) | |
| tree | 4213c6fe17aafd8bdf23e66d376ca03ccb33ae86 /buildtools/packman/packman.cmd | |
| parent | Removing reference to deprecated documentation server (diff) | |
| download | blast-b16fdc73d55b467b15595e32c70418ea55c1fe2b.tar.xz blast-b16fdc73d55b467b15595e32c70418ea55c1fe2b.zip | |
Updating packman
Diffstat (limited to 'buildtools/packman/packman.cmd')
| -rw-r--r-- | buildtools/packman/packman.cmd | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/buildtools/packman/packman.cmd b/buildtools/packman/packman.cmd new file mode 100644 index 0000000..e55b2f0 --- /dev/null +++ b/buildtools/packman/packman.cmd @@ -0,0 +1,89 @@ +:: RUN_PM_MODULE must always be at the same spot for packman update to work (batch reloads file during update!) +:: [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] +:: Reset errorlevel status (don't inherit from caller) +@call :ECHO_AND_RESET_ERROR + +:: You can remove this section if you do your own manual configuration of the dev machines +call :CONFIGURE +if %errorlevel% neq 0 ( exit /b %errorlevel% ) + +:: Everything below is mandatory +if not defined PM_PYTHON goto :PYTHON_ENV_ERROR +if not defined PM_MODULE goto :MODULE_ENV_ERROR + +set PM_VAR_PATH_ARG= + +if "%1"=="pull" goto :SET_VAR_PATH +if "%1"=="install" goto :SET_VAR_PATH + +:RUN_PM_MODULE +"%PM_PYTHON%" -S -s -u -E "%PM_MODULE%" %* %PM_VAR_PATH_ARG% +if %errorlevel% neq 0 ( exit /b %errorlevel% ) + +:: Marshall environment variables into the current environment if they have been generated and remove temporary file +if exist "%PM_VAR_PATH%" ( + for /F "usebackq tokens=*" %%A in ("%PM_VAR_PATH%") do set "%%A" +) +if %errorlevel% neq 0 ( goto :VAR_ERROR ) + +if exist "%PM_VAR_PATH%" ( + del /F "%PM_VAR_PATH%" +) +if %errorlevel% neq 0 ( goto :VAR_ERROR ) + +set PM_VAR_PATH= +goto :eof + +:: Subroutines below +:PYTHON_ENV_ERROR +@echo User environment variable PM_PYTHON is not set! Please configure machine for packman or call configure.bat. +exit /b 1 + +:MODULE_ENV_ERROR +@echo User environment variable PM_MODULE is not set! Please configure machine for packman or call configure.bat. +exit /b 1 + +:VAR_ERROR +@echo Error while processing and setting environment variables! +exit /b 1 + +:: pad [xxxx] +:ECHO_AND_RESET_ERROR +@echo off +if /I "%PM_VERBOSITY%"=="debug" ( + @echo on +) +exit /b 0 + +:SET_VAR_PATH +:: Generate temporary path for variable file +for /f "delims=" %%a in ('%PM_PYTHON% -S -s -u -E -c "import tempfile;file = tempfile.NamedTemporaryFile(mode='w+t', delete=False);print(file.name)"') do (set PM_VAR_PATH=%%a) +set PM_VAR_PATH_ARG=--var-path="%PM_VAR_PATH%" +goto :RUN_PM_MODULE + +:CONFIGURE +:: Must capture and set code page to work around issue #279, powershell invocation mutates console font +:: This issue only happens in Windows CMD shell when using 65001 code page. Some Git Bash implementations +:: don't support chcp so this workaround is a bit convoluted. +:: Test for chcp: +chcp > nul 2>&1 +if %errorlevel% equ 0 ( + for /f "tokens=2 delims=:" %%a in ('chcp') do (set PM_OLD_CODE_PAGE=%%a) +) else ( + call :ECHO_AND_RESET_ERROR +) +:: trim leading space (this is safe even when PM_OLD_CODE_PAGE has not been set) +set PM_OLD_CODE_PAGE=%PM_OLD_CODE_PAGE:~1% +if "%PM_OLD_CODE_PAGE%" equ "65001" ( + chcp 437 > nul + set PM_RESTORE_CODE_PAGE=1 +) +call "%~dp0\bootstrap\configure.bat" +set PM_CONFIG_ERRORLEVEL=%errorlevel% +if defined PM_RESTORE_CODE_PAGE ( + :: Restore code page + chcp %PM_OLD_CODE_PAGE% > nul +) +set PM_OLD_CODE_PAGE= +set PM_RESTORE_CODE_PAGE= +exit /b %PM_CONFIG_ERRORLEVEL% |