diff options
author | Piotr Strzelczyk <piotr@eps.gda.pl> | 2009-05-13 20:21:12 +0000 |
---|---|---|
committer | Piotr Strzelczyk <piotr@eps.gda.pl> | 2009-05-13 20:21:12 +0000 |
commit | d162ec653894bda9d4d36c698ba1247f14c1435e (patch) | |
tree | ca9e21d69ed6cbf97491cf216ea6a4a14e7ea2f0 /Master/bin/win32/ppower4.bat | |
parent | 8731675b6dfc522aa19d4192021b991dacf66326 (diff) |
single .bat wrapper replacemant for .bat+.texlua combo
git-svn-id: svn://tug.org/texlive/trunk@13075 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/bin/win32/ppower4.bat')
-rwxr-xr-x | Master/bin/win32/ppower4.bat | 84 |
1 files changed, 77 insertions, 7 deletions
diff --git a/Master/bin/win32/ppower4.bat b/Master/bin/win32/ppower4.bat index fe949613d7c..42ba109d438 100755 --- a/Master/bin/win32/ppower4.bat +++ b/Master/bin/win32/ppower4.bat @@ -1,8 +1,78 @@ @echo off
-rem tl-w32-starter.bat
-rem universal script starter, batch file part
-rem this program calls the tl-w32-wrapper.texlua
-setlocal
-set ownpath=%~dp0%
-texlua "%ownpath%tl-w32-wrapper.texlua" "%~dpn0" %*
-endlocal
+rem Universal script launcher
+rem
+rem Copyright 2009 by Tomasz M. Trzeciak
+rem Public Domain
+
+rem Make environment changes local
+setlocal enableextensions
+rem Get program/script name
+if not defined progname set progname=%~n0
+rem Check if this is 'sys' version of program
+set TEX_SYS_PROG=
+if /i "%progname:~-4%"=="-sys" (
+ set progname=%progname:~0,-4%
+ set TEX_SYS_PROG=true
+)
+
+rem Default command to execute
+set command=call :noscript
+rem Make sure our dir is on the search path; avoid trailing backslash
+for %%I in ("%~f0\..") do path %%~fI;%path%
+rem Ask kpsewhich about root and texmfsys trees (the first line of output)
+rem and location of the script (the second line of output)
+rem (4NT shell acts wierd with 'if' statements in a 'for' loop,
+rem so better process this output further in a subroutine)
+for /f "tokens=1-3 delims=;" %%I in (
+ 'kpsewhich --expand-var "$SELFAUTOPARENT;$TEXMFSYSCONFIG;$TEXMFSYSVAR" ^
+ --format texmfscripts "%progname%.pl" "%progname%.tlu" "%progname%.rb" "%progname%.py"'
+) do (
+ call :setcmdenv "%%~I" "%%~J" "%%~K"
+)
+
+rem By now we should have the command to execute (whatever that is), so
+rem pass through all the arguments we have and execute it
+%command% %*
+rem Finish with goto :eof (it will preserve the last set errorlevel)
+goto :eof
+
+REM SUBROUTINES
+
+:setcmdenv selfautoparent texmfsysconfig texmfsysvar
+rem If there is only one argument it must be a script name
+if "%~2"=="" goto :setcmd
+rem Otherwise, it is the first line from kpsewhich, so to set up the environment
+set PERL5LIB=%~f1\tlpkg\tlperl\lib
+set GS_LIB=%~f1\tlpkg\tlgs\lib;%~f1\tlpkg\tlgs\fonts
+path %~f1\tlpkg\tlgs\bin;%~f1\tlpkg\tlperl\bin;%~f1\tlpkg\installer;%~f1\tlpkg\installer\wget;%path%
+if not defined TEX_SYS_PROG goto :eof
+rem Extra stuff for sys version
+set TEXMFCONFIG=%~2
+set TEXMFVAR=%~3
+rem For sys version we might have an executable in the bin dir, so check for it
+if exist "%~f1\bin\win32\%progname%.exe" set command="%~f1\bin\win32\%progname%.exe"
+goto :eof
+
+:setcmd script
+rem Set command based on the script extension
+if /i %~x1==.pl set command=Perl.exe "%~f1"
+if /i %~x1==.tlu set command=TeXLua.exe "%~f1"
+rem For Ruby and Python we additionally check if their interpreter is available
+if /i %~x1==.rb call :chkcmd Ruby.exe "%~f1"
+if /i %~x1==.py call :chkcmd Python.exe "%~f1"
+goto :eof
+
+:chkcmd program script
+set command=%*
+rem If there is no interpreter Ruby or Python, suggest getting one
+if "%~$PATH:1"=="" set command=call :noinst %*
+goto :eof
+
+:noinst program
+echo %1 not found on search path>&2
+echo %~n1 is not distributed with TeX Live and has to be installed separately
+exit /b 1
+
+:noscript
+echo %progname%: no appropriate script or program found>&2
+exit /b 1
|