| @echo off |
| rem This file was generated by the Jython installer |
| rem Created on Sat Apr 02 17:40:41 CEST 2011 by yole |
| |
| set JAVA_HOME="C:\Program Files (x86)\Java\jre6" |
| set JYTHON_HOME_FALLBACK="C:\jython2.5.2" |
| |
| @echo off |
| rem --------------------------------------------------------------------------- |
| rem jython.bat - start script for Jython (adapted from jruby.bat) |
| rem |
| rem Environment variables (optional) |
| rem |
| rem JAVA_HOME Java installation directory |
| rem |
| rem JYTHON_HOME Jython installation directory |
| rem |
| rem JYTHON_OPTS Default Jython command line arguments |
| rem |
| rem --------------------------------------------------------------------------- |
| |
| rem If running in Take Command (4NT), force to run in cmd.exe |
| if not "%@eval[2+2]" == "4" goto normalstart |
| cmd /C %0 %* |
| goto finish |
| |
| :normalstart |
| set _PERCENT=%% |
| set _EXCLAMATION=! |
| setlocal enabledelayedexpansion |
| |
| rem ----- Verify and set required environment variables ----------------------- |
| |
| rem make sure to clear the internal variables, to prevent leaking into subprocess calls |
| set _JAVA_CMD=java |
| if defined JAVA_HOME set _JAVA_CMD="%JAVA_HOME:"=%\bin\java" |
| set _JYTHON_OPTS= |
| if defined JYTHON_OPTS set _JYTHON_OPTS="%JYTHON_OPTS:"=%" |
| set _JYTHON_HOME= |
| if defined JYTHON_HOME set _JYTHON_HOME="%JYTHON_HOME:"=%" |
| if defined _JYTHON_HOME goto gotHome |
| |
| rem try to dynamically determine jython home |
| rem (this script typically resides in jython home, or in the /bin subdirectory) |
| pushd "%~dp0%" |
| set _JYTHON_HOME="%CD%" |
| popd |
| if exist %_JYTHON_HOME%\jython-dev.jar goto gotHome |
| if exist %_JYTHON_HOME%\jython.jar goto gotHome |
| pushd "%~dp0%\.." |
| set _JYTHON_HOME="%CD%" |
| popd |
| if exist %_JYTHON_HOME%\jython-dev.jar goto gotHome |
| if exist %_JYTHON_HOME%\jython.jar goto gotHome |
| rem jython home fallback (if all else fails) |
| rem if present, %JYTHON_HOME_FALLBACK% is already quoted |
| set _JYTHON_HOME=%JYTHON_HOME_FALLBACK% |
| |
| :gotHome |
| if not exist %_JYTHON_HOME%\jython-dev.jar goto tryComplete |
| rem prefer built version |
| set _CP=%_JYTHON_HOME%\jython-dev.jar |
| for %%j in (%_JYTHON_HOME%\javalib\*.jar) do ( |
| set _CP=!_CP!;"%%j" |
| ) |
| goto run |
| |
| :tryComplete |
| set _CP=%_JYTHON_HOME%\jython.jar |
| if exist %_JYTHON_HOME%/jython.jar goto run |
| |
| echo Cannot find jython-dev.jar or jython.jar in %_JYTHON_HOME% |
| echo Try running this batch file from the 'bin' directory of an installed Jython, |
| echo or setting JYTHON_HOME. |
| goto cleanup |
| |
| rem ----- Execute the requested command ---------------------------------------- |
| |
| :run |
| set _JAVA_MEM=-Xmx512m |
| rem 1152k is the minimum for test_marshal to pass. Windows' default is |
| rem apparently 1M, anyway |
| set _JAVA_STACK=-Xss1152k |
| |
| rem Escape any quotes. Use _S for ', _D for ", and _U to escape _ itself. |
| rem We have to escape _ itself, otherwise file names with _S and _D |
| rem will be converted to to wrong ones, when we un-escape. See JRUBY-2821. |
| set _ARGS=%* |
| if not defined _ARGS goto argsDone |
| set _ARGS=%_ARGS:_=_U% |
| set _ARGS=%_ARGS:'=_S% |
| set _ARGS=%_ARGS:"=_D% |
| rem also escape % signs |
| set _replaceVal=%_ARGS% |
| call :escape |
| set _ARGS=%_replaceVal% |
| |
| set _ARGS="%_ARGS%" |
| set _JYTHON_ARGS= |
| |
| :scanArgs |
| rem split args by spaces into first and rest |
| for /f "tokens=1,*" %%i in (%_ARGS%) do call :getArg "%%i" "%%j" |
| goto procArg |
| |
| :getArg |
| rem remove quotes around first arg |
| set _CMP=%~1 |
| set _ARGS=%2 |
| goto :EOF |
| |
| :procArg |
| if ["%_CMP%"] == [""] ( |
| set _ARGS= |
| goto argsDone |
| ) |
| |
| REM NOTE: If you'd like to use a parameter with underscore in its name, |
| REM NOTE: use the quoted value: --do_stuff -> --do_Ustuff |
| |
| if ["%_CMP%"] == ["--"] goto argsDone |
| |
| if ["%_CMP%"] == ["--jdb"] ( |
| if defined JAVA_HOME ( |
| set _JAVA_CMD="%JAVA_HOME:"=%\bin\jdb" |
| ) else ( |
| set _JAVA_CMD=jdb |
| ) |
| goto :nextArg |
| ) |
| |
| if ["%_CMP%"] == ["--boot"] ( |
| set _BOOT_CP=-Xbootclasspath/a:%_CP% |
| goto :nextArg |
| ) |
| |
| if ["%_CMP%"] == ["--print"] ( |
| set _PRINT=print |
| goto :nextArg |
| ) |
| |
| rem now unescape everything |
| set _replaceVal=%_CMP% |
| call :escape |
| set _CMP=%_replaceVal% |
| set _CMP=%_CMP:_D="% |
| set _CMP=%_CMP:_S='% |
| set _CMP=%_CMP:_U=_% |
| set _CMP1=%_CMP:~0,1% |
| set _CMP2=%_CMP:~0,2% |
| |
| rem detect first character is a quote; skip directly to jythonArg |
| rem this avoids a batch syntax error |
| if "%_CMP1:"=\\%" == "\\" goto jythonArg |
| |
| rem removing quote avoids a batch syntax error |
| if "%_CMP2:"=\\%" == "-J" goto jvmArg |
| |
| :jythonArg |
| set _JYTHON_ARGS=%_JYTHON_ARGS% %_CMP% |
| goto nextArg |
| |
| :jvmArg |
| set _VAL=%_CMP:~2% |
| |
| if "%_VAL:~0,4%" == "-Xmx" ( |
| set _JAVA_MEM=%_VAL% |
| ) else if "%_VAL:~0,4%" == "-Xss" ( |
| set _JAVA_STACK=%_VAL% |
| ) else ( |
| set _JAVA_OPTS=%_JAVA_OPTS% %_VAL% |
| ) |
| |
| :nextArg |
| set _CMP= |
| goto scanArgs |
| |
| :argsDone |
| rem do not use 'if () else ()': this does not work with CLASSPATH containing '(x86)' |
| if defined _BOOT_CP goto fullCmd |
| if defined CLASSPATH goto classpathDefined |
| set CLASSPATH=%_CP:"=% |
| goto fullCmd |
| :classpathDefined |
| set CLASSPATH=%_CP:"=%;%CLASSPATH:"=% |
| |
| :fullCmd |
| set _FULL_CMD=%_JAVA_CMD% %_JAVA_OPTS% %_JAVA_MEM% %_JAVA_STACK% -Dpython.home=%_JYTHON_HOME% -Dpython.executable="%~f0" %_BOOT_CP% -classpath "%CLASSPATH%" org.python.util.jython %_JYTHON_OPTS% %_JYTHON_ARGS% %_ARGS% |
| if defined _PRINT ( |
| echo %_FULL_CMD% |
| ) else ( |
| %_FULL_CMD% |
| ) |
| set E=%ERRORLEVEL% |
| |
| :cleanup |
| set _ARGS= |
| set _CMP= |
| set _CMP1= |
| set _CMP2= |
| set _CP= |
| set _BOOT_CP= |
| set _FULL_CMD= |
| set _JAVA_CMD= |
| set _JAVA_OPTS= |
| set _JAVA_MEM= |
| set _JAVA_STACK= |
| set _JYTHON_HOME= |
| set _JYTHON_OPTS= |
| set _JYTHON_ARGS= |
| set _PRINT= |
| goto finish |
| |
| |
| |
| REM escapes or unescapes % with @@P@@, and ! with @@E@@ |
| REM input: a text variable named _replaceVal |
| REM result: _replaceVal has the new value |
| :escape |
| if not defined _replaceVal goto :EOF |
| set /a _index=-1 |
| set _replaced= |
| |
| :escapeNext |
| set /a _index=%_index% + 1 |
| call set _escapeChar=%%_replaceVal:~%_index%,1%% |
| if ^"==^%_escapeChar% goto noEscape |
| if ''=='%_escapeChar%' goto escapeEnd |
| if "%_escapeChar%"==" " goto noEscape |
| if "%_escapeChar%"=="@" goto unescapeCheck |
| if "%_escapeChar%"=="%_EXCLAMATION%" goto escapeExclamation |
| if "%_escapeChar%"=="%_PERCENT%" goto escapePercent |
| :noEscape |
| set _replaced=%_replaced%%_escapeChar% |
| goto escapeNext |
| |
| :escapeExclamation |
| set _replaced=%_replaced%@@E@@ |
| goto escapeNext |
| |
| :escapePercent |
| set _replaced=%_replaced%@@P@@ |
| goto escapeNext |
| |
| :unescapeCheck |
| set _isExclamation= |
| set _isPercent= |
| set _isUnrecognized=true |
| set /a _aheadIndex=%_index% + 1 |
| call set _aheadChar=%%_replaceVal:~%_aheadIndex%,1%% |
| if ^"==^%_aheadChar% goto noEscape |
| if "%_aheadChar%"=="@" set /a _aheadIndex=%_aheadIndex% + 1 |
| call set _aheadChar=%%_replaceVal:~%_aheadIndex%,1%% |
| if ^"==^%_aheadChar% goto noEscape |
| if "%_aheadChar%"=="E" set _isExclamation=true & set _isUnrecognized= |
| if "%_aheadChar%"=="P" set _isPercent=true & set _isUnrecognized= |
| if defined _isUnrecognized goto noEscape |
| set _isUnrecognized=true |
| set /a _aheadIndex=%_aheadIndex% + 1 |
| call set _aheadChar=%%_replaceVal:~%_aheadIndex%,1%% |
| if ^"==^%_aheadChar% goto noEscape |
| if "%_aheadChar%"=="@" set /a _aheadIndex=%_aheadIndex% + 1 |
| call set _aheadChar=%%_replaceVal:~%_aheadIndex%,1%% |
| if ^"==^%_aheadChar% goto noEscape |
| if "%_aheadChar%"=="@" set _isUnrecognized= |
| if defined _isUnrecognized goto noEscape |
| if defined _isExclamation goto unescapeExclamation |
| if defined _isPercent goto unescapePercent |
| goto noEscape |
| |
| :unescapeExclamation |
| set _replaced=%_replaced%%_EXCLAMATION% |
| set /a _index=%_index% + 4 |
| goto escapeNext |
| |
| :unescapePercent |
| set _replaced=%_replaced%%_PERCENT% |
| set /a _index=%_index% + 4 |
| goto escapeNext |
| |
| :escapeEnd |
| set _replaceVal=%_replaced% |
| goto :EOF |
| |
| |
| |
| :finish |
| set _UNQUOTED_COMSPEC=%COMSPEC:"=% |
| "%_UNQUOTED_COMSPEC%" /c exit /b %E% |