mirror of https://code.onedev.io/onedev/server
327 lines
11 KiB
Batchfile
327 lines
11 KiB
Batchfile
@echo off
|
|
setlocal
|
|
|
|
rem
|
|
rem Copyright (c) 1999, 2022 Tanuki Software, Ltd.
|
|
rem http://www.tanukisoftware.com
|
|
rem All rights reserved.
|
|
rem
|
|
rem This software is the proprietary information of Tanuki Software.
|
|
rem You shall use it only in accordance with the terms of the
|
|
rem license agreement you entered into with Tanuki Software.
|
|
rem http://wrapper.tanukisoftware.com/doc/english/licenseOverview.html
|
|
rem
|
|
rem Java Service Wrapper command based script.
|
|
rem
|
|
|
|
rem -----------------------------------------------------------------------------
|
|
rem These settings can be modified to fit the needs of your application
|
|
rem Optimized for use with version 3.5.51-st of the Wrapper.
|
|
|
|
rem The base name for the Wrapper binary.
|
|
set _WRAPPER_BASE=wrapper
|
|
|
|
rem The directory where the Wrapper binary (.exe) file is located. It can be
|
|
rem either an absolute or a relative path. If the path contains any special
|
|
rem characters, please make sure to quote the variable.
|
|
set _WRAPPER_DIR=../boot
|
|
|
|
rem The name and location of the Wrapper configuration file. This will be used
|
|
rem if the user does not specify a configuration file as the first parameter to
|
|
rem this script.
|
|
set _WRAPPER_CONF="../conf/%_WRAPPER_BASE%.conf"
|
|
|
|
rem _FIXED_COMMAND tells the script to use a hard coded command rather than
|
|
rem expecting the first parameter of the command line to be the command.
|
|
rem By default the command will will be expected to be the first parameter.
|
|
@set_fixed_command@
|
|
|
|
rem _PASS_THROUGH controls how the script arguments should be passed to the
|
|
rem Wrapper. Possible values are:
|
|
rem - commented or 'false': the arguments will be ignored (not passed).
|
|
rem - 'app_args' or 'true': the arguments will be passed through the Wrapper as
|
|
rem arguments for the Java Application.
|
|
rem - 'both': both Wrapper properties and Application arguments can be passed to
|
|
rem the Wrapper. The Wrapper properties come in first position. The
|
|
rem user can optionally add a '--' separator followed by application
|
|
rem arguments.
|
|
rem NOTE - If _FIXED_COMMAND is set to true the above applies to all arguments,
|
|
rem otherwise it applies to arguments starting with the second.
|
|
rem NOTE - Passing arguments is only valid with the 'console', 'install',
|
|
rem 'installstart' and 'update' commands.
|
|
@set_pass_through@
|
|
|
|
rem If there are any errors, the script will pause for a specific number of seconds
|
|
rem or until the user presses a key. (0 not to wait, negative to wait forever).
|
|
set _WRAPPER_TIMEOUT=-1
|
|
|
|
rem Do not modify anything beyond this point
|
|
rem -----------------------------------------------------------------------------
|
|
|
|
if "%OS%"=="Windows_NT" goto nt
|
|
echo This script only works with NT-based versions of Windows.
|
|
goto :eof
|
|
|
|
:nt
|
|
rem Find the application home.
|
|
rem if no path path specified do the default action
|
|
IF not DEFINED _WRAPPER_DIR goto dir_undefined
|
|
set _WRAPPER_DIR_QUOTED="%_WRAPPER_DIR:"=%"
|
|
if not "%_WRAPPER_DIR:~-2,1%" == "\" set _WRAPPER_DIR_QUOTED="%_WRAPPER_DIR_QUOTED:"=%\"
|
|
rem check if absolute path
|
|
if "%_WRAPPER_DIR_QUOTED:~2,1%" == ":" goto absolute_path
|
|
if "%_WRAPPER_DIR_QUOTED:~1,1%" == "\" goto absolute_path
|
|
rem everythig else means relative path
|
|
set _REALPATH="%~dp0%_WRAPPER_DIR_QUOTED:"=%"
|
|
goto pathfound
|
|
|
|
:dir_undefined
|
|
rem Use a relative path to the wrapper %~dp0 is location of current script under NT
|
|
set _REALPATH="%~dp0"
|
|
goto pathfound
|
|
:absolute_path
|
|
rem Use an absolute path to the wrapper
|
|
set _REALPATH="%_WRAPPER_DIR_QUOTED:"=%"
|
|
|
|
:pathfound
|
|
rem
|
|
rem Decide on the specific Wrapper binary to use (See delta-pack)
|
|
rem
|
|
if "%PROCESSOR_ARCHITEW6432%"=="AMD64" goto amd64
|
|
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" goto amd64
|
|
if "%PROCESSOR_ARCHITECTURE%"=="IA64" goto ia64
|
|
:x86_32
|
|
set _WRAPPER_L_EXE="%_REALPATH:"=%%_WRAPPER_BASE%-windows-x86-32.exe"
|
|
set _BIN_BITS="32"
|
|
goto search
|
|
:amd64
|
|
set _WRAPPER_L_EXE="%_REALPATH:"=%%_WRAPPER_BASE%-windows-x86-64.exe"
|
|
set _BIN_BITS="64"
|
|
goto search
|
|
:ia64
|
|
set _WRAPPER_L_EXE="%_REALPATH:"=%%_WRAPPER_BASE%-windows-ia-64.exe"
|
|
set _BIN_BITS="64"
|
|
goto search
|
|
:search
|
|
set _WRAPPER_EXE="%_WRAPPER_L_EXE:"=%"
|
|
if exist %_WRAPPER_EXE% goto check_lic_bits
|
|
set _WRAPPER_EXE="%_REALPATH:"=%%_WRAPPER_BASE%.exe"
|
|
if exist %_WRAPPER_EXE% goto conf
|
|
if %_BIN_BITS%=="64" goto x86_32
|
|
echo Unable to locate a Wrapper executable using any of the following names:
|
|
echo %_WRAPPER_L_EXE%
|
|
echo %_WRAPPER_EXE%
|
|
goto preexitpause
|
|
|
|
:check_lic_bits
|
|
rem The command should not be called inside a IF, else errorlevel would be 0
|
|
if not %_BIN_BITS%=="64" goto conf
|
|
%_WRAPPER_EXE% --request_delta_binary_bits %_WRAPPER_CONF% > nul 2>&1
|
|
if %errorlevel% equ 32 (
|
|
set _LIC32_OS64=true
|
|
goto x86_32
|
|
)
|
|
|
|
:conf
|
|
if [%_PASS_THROUGH%]==[true] (
|
|
set _PASS_THROUGH=app_args
|
|
)
|
|
if [%_PASS_THROUGH%]==[app_args] (
|
|
@passthrough_parameters@
|
|
set ARGS_ARE_APP_PARAMS=true
|
|
set _PASS_THROUGH_ON=true
|
|
)
|
|
if [%_PASS_THROUGH%]==[both] (
|
|
set _PASS_THROUGH_ON=true
|
|
)
|
|
if not [%_PASS_THROUGH_ON%]==[true] (
|
|
set _PASS_THROUGH=false
|
|
)
|
|
|
|
set _SCRIPT_NAME=%~n0
|
|
|
|
if not [%_FIXED_COMMAND%]==[] (
|
|
set _COMMAND=%_FIXED_COMMAND%
|
|
) else (
|
|
set _COMMAND=%1
|
|
shift
|
|
)
|
|
|
|
rem Check the command
|
|
if [%_COMMAND%]==[console] goto args_allowed
|
|
if [%_COMMAND%]==[setup] goto args_not_allowed
|
|
if [%_COMMAND%]==[teardown] goto args_not_allowed
|
|
if [%_COMMAND%]==[start] goto args_not_allowed
|
|
if [%_COMMAND%]==[stop] goto args_not_allowed
|
|
if [%_COMMAND%]==[install] goto args_allowed
|
|
if [%_COMMAND%]==[installstart] goto args_allowed
|
|
if [%_COMMAND%]==[update] goto args_allowed
|
|
if [%_COMMAND%]==[pause] goto args_not_allowed
|
|
if [%_COMMAND%]==[resume] goto args_not_allowed
|
|
if [%_COMMAND%]==[status] goto args_not_allowed
|
|
if [%_COMMAND%]==[remove] goto args_not_allowed
|
|
if [%_COMMAND%]==[restart] goto args_not_allowed
|
|
|
|
rem The command is invalid
|
|
if [%_FIXED_COMMAND%]==[] (
|
|
echo Unexpected command: %_COMMAND%
|
|
echo.
|
|
goto showusage
|
|
) else (
|
|
echo Invalid value '%_COMMAND%' for _FIXED_COMMAND.
|
|
goto preexitpause
|
|
)
|
|
|
|
:args_not_allowed
|
|
if not [%1]==[] (
|
|
echo Additional arguments are not allowed with the %_COMMAND% command.
|
|
if not [%_FIXED_COMMAND%]==[] (
|
|
rem The command can't be used with PASS_THROUGH, so disable it to show appropriate usage.
|
|
set _PASS_THROUGH=false
|
|
)
|
|
goto showusage
|
|
)
|
|
|
|
:args_allowed
|
|
if not [%1]==[] (
|
|
if [%_PASS_THROUGH%]==[false] (
|
|
echo Additional arguments are not allowed when _PASS_THROUGH is set to false.
|
|
goto preexitpause
|
|
)
|
|
)
|
|
|
|
rem Collect all parameters
|
|
:parameters
|
|
if [%1]==[] goto callcommand
|
|
if [%ARGS_ARE_APP_PARAMS%]==[true] goto append
|
|
if [%1]==[--] (
|
|
set ARGS_ARE_APP_PARAMS=true
|
|
goto append
|
|
)
|
|
rem So we are appending a wrapper property.
|
|
rem 1) Check it is wrapped inside double quotes.
|
|
if not ["%~1"]==[%1] (
|
|
if not [%_MISSING_QUOTES_REPORTED%]==[true] (
|
|
set _MISSING_QUOTES_REPORTED=true
|
|
echo WARNING: Any property assignment before '--' should be wrapped inside double quotes on Windows. In a powershell prompt command, double quotes should be escaped with backquote characters ^(^`^).
|
|
)
|
|
rem If not wrapped inside quotes, the following tests are not relevant, so skip them. Should we stop? We always used to continue.. but the Wrapper will probably fail.
|
|
goto append
|
|
)
|
|
rem 2) Check that the arg matches the pattern of a property (the command should be outside of a IF block for errorlevel to be correct)
|
|
echo %1 | findstr ^wrapper\..*\=.*$ > nul 2>&1
|
|
if %errorlevel% equ 0 goto append
|
|
echo %1 | findstr ^.*\=.*$ > nul 2>&1
|
|
if %errorlevel% equ 0 goto unkown_property
|
|
rem Not a valid assignment.
|
|
echo WARNING: Encountered an invalid configuration property assignment '%~1'. When PASS_THROUGH is set to 'both', any argument before '--' should be in the format '^<property_name^>=^<value^>'.
|
|
goto append
|
|
:unkown_property
|
|
rem The property name is not starting with 'wrapper.' so invalid.
|
|
rem Extract the property name (this should be outside of a IF-ELSE block)
|
|
for /f "tokens=1* delims==" %%a in ("%~1") do set _COMMAND_PROP=%%a
|
|
echo WARNING: Encountered an unknown configuration property '%_COMMAND_PROP%'. When PASS_THROUGH is set to 'both', any argument before '--' should target a valid Wrapper configuration property.
|
|
:append
|
|
set _PARAMETERS=%_PARAMETERS% %1
|
|
shift
|
|
goto parameters
|
|
|
|
rem
|
|
rem Run the Wrapper
|
|
rem
|
|
:callcommand
|
|
if [%_COMMAND%]==[console] (
|
|
%_WRAPPER_EXE% -c "%_WRAPPER_CONF%" @properties_and_parameters@ %_PARAMETERS%
|
|
) else if [%_COMMAND%]==[setup] (
|
|
%_WRAPPER_EXE% -su "%_WRAPPER_CONF%"
|
|
) else if [%_COMMAND%]==[teardown] (
|
|
%_WRAPPER_EXE% -td "%_WRAPPER_CONF%"
|
|
) else if [%_COMMAND%]==[start] (
|
|
call :start
|
|
) else if [%_COMMAND%]==[stop] (
|
|
call :stop
|
|
) else if [%_COMMAND%]==[install] (
|
|
%_WRAPPER_EXE% -i "%_WRAPPER_CONF%" %_PARAMETERS%
|
|
) else if [%_COMMAND%]==[installstart] (
|
|
%_WRAPPER_EXE% -it "%_WRAPPER_CONF%" %_PARAMETERS%
|
|
) else if [%_COMMAND%]==[update] (
|
|
%_WRAPPER_EXE% -u "%_WRAPPER_CONF%" %_PARAMETERS%
|
|
) else if [%_COMMAND%]==[pause] (
|
|
%_WRAPPER_EXE% -a "%_WRAPPER_CONF%"
|
|
) else if [%_COMMAND%]==[resume] (
|
|
%_WRAPPER_EXE% -e "%_WRAPPER_CONF%"
|
|
) else if [%_COMMAND%]==[status] (
|
|
%_WRAPPER_EXE% -q "%_WRAPPER_CONF%"
|
|
) else if [%_COMMAND%]==[remove] (
|
|
%_WRAPPER_EXE% -r "%_WRAPPER_CONF%"
|
|
) else if [%_COMMAND%]==[restart] (
|
|
call :stop
|
|
call :start
|
|
)
|
|
if not errorlevel 1 goto :eof
|
|
goto preexitpause
|
|
|
|
:start
|
|
%_WRAPPER_EXE% -t "%_WRAPPER_CONF%"
|
|
goto :eof
|
|
:stop
|
|
%_WRAPPER_EXE% -p "%_WRAPPER_CONF%"
|
|
goto :eof
|
|
|
|
:showusage
|
|
if [%_PASS_THROUGH%]==[app_args] (
|
|
set ARGS= {JavaAppArgs}
|
|
) else if [%_PASS_THROUGH%]==[both] (
|
|
set ARGS= {WrapperProperties} [-- {JavaAppArgs}]
|
|
) else (
|
|
set ARGS=
|
|
)
|
|
|
|
if [%_FIXED_COMMAND%]==[] (
|
|
echo Usage: %_SCRIPT_NAME% [ console%ARGS% : start : stop : restart : pause : resume : status : install%ARGS% : installstart%ARGS% : update%ARGS% : remove : setup : teardown ]
|
|
echo.
|
|
echo Commands:
|
|
echo console Launch in the current console.
|
|
echo start Start the Service.
|
|
echo stop Stop the Service.
|
|
echo restart Stop the Service if running and then start.
|
|
echo pause Pause the Service if running.
|
|
echo resume Resume the Service if paused.
|
|
echo status Query the current status of the Service.
|
|
echo install Install the Service.
|
|
echo installstart Install the Service and then start running it.
|
|
echo update Update an installed Service.
|
|
echo remove Uninstall the Service.
|
|
echo setup Setup the Wrapper ^(for registration to the Windows Event Log^).
|
|
echo teardown Teardown the Wrapper ^(unregister from the Windows Event Log^).
|
|
echo.
|
|
) else (
|
|
echo Usage: %_SCRIPT_NAME%%ARGS%
|
|
)
|
|
if not [%_PASS_THROUGH%]==[false] (
|
|
if [%_PASS_THROUGH%]==[both] (
|
|
echo WrapperProperties:
|
|
echo Optional configuration properties which will be passed to the Wrapper.
|
|
echo.
|
|
)
|
|
echo JavaAppArgs:
|
|
echo Optional arguments which will be passed to the Java application.
|
|
echo.
|
|
)
|
|
|
|
rem Exit when there is a problem
|
|
:preexitpause
|
|
if %errorlevel% equ 0 (
|
|
set EXIT_CODE=1
|
|
) else (
|
|
set EXIT_CODE=%errorlevel%
|
|
)
|
|
if %_WRAPPER_TIMEOUT% gtr 0 (
|
|
timeout /t %_WRAPPER_TIMEOUT%
|
|
) else (
|
|
if %_WRAPPER_TIMEOUT% lss 0 (
|
|
pause
|
|
)
|
|
)
|
|
EXIT /B %EXIT_CODE%
|