115 lines
4.6 KiB
Batchfile
115 lines
4.6 KiB
Batchfile
@if defined ELIXIR_CLI_ECHO (@echo on) else (@echo off)
|
|
setlocal
|
|
if ""%1""=="""" goto documentation
|
|
if /I ""%1""==""--help"" goto documentation
|
|
if /I ""%1""==""-h"" goto documentation
|
|
if /I ""%1""==""/h"" goto documentation
|
|
if ""%1""==""/?"" goto documentation
|
|
goto parseopts
|
|
|
|
:documentation
|
|
echo Usage: %~nx0 [options] [.exs file] [data]
|
|
echo.
|
|
echo -e COMMAND Evaluates the given command (*)
|
|
echo -r FILE Requires the given files/patterns (*)
|
|
echo -S SCRIPT Finds and executes the given script in PATH
|
|
echo -pr FILE Requires the given files/patterns in parallel (*)
|
|
echo -pa PATH Prepends the given path to Erlang code path (*)
|
|
echo -pz PATH Appends the given path to Erlang code path (*)
|
|
echo.
|
|
echo --app APP Starts the given app and its dependencies (*)
|
|
echo --cookie COOKIE Sets a cookie for this distributed node
|
|
echo --detached Starts the Erlang VM detached from console
|
|
echo --erl SWITCHES Switches to be passed down to Erlang (*)
|
|
echo --help, -h Prints this message and exits
|
|
echo --hidden Makes a hidden node
|
|
echo --logger-otp-reports BOOL Enables or disables OTP reporting
|
|
echo --logger-sasl-reports BOOL Enables or disables SASL reporting
|
|
echo --name NAME Makes and assigns a name to the distributed node
|
|
echo --no-halt Does not halt the Erlang VM after execution
|
|
echo --sname NAME Makes and assigns a short name to the distributed node
|
|
echo --version, -v Prints Elixir version and exits
|
|
echo --werl Uses Erlang's Windows shell GUI
|
|
echo.
|
|
echo ** Options marked with (*) can be given more than once
|
|
echo ** Options given after the .exs file or -- are passed down to the executed code
|
|
echo ** Options can be passed to the Erlang runtime using ELIXIR_ERL_OPTIONS or --erl
|
|
goto end
|
|
|
|
:parseopts
|
|
|
|
rem Parameters for Erlang
|
|
set parsErlang=
|
|
|
|
rem Make sure we keep a copy of all parameters
|
|
set allPars=%*
|
|
|
|
rem Get the original path name from the batch file
|
|
set originPath=%~dp0
|
|
|
|
rem Optional parameters before the "-extra" parameter
|
|
set beforeExtra=
|
|
|
|
rem Flag which determines whether or not to use werl vs erl
|
|
set useWerl=0
|
|
|
|
rem Designates which mode / Elixir component to run as
|
|
set runMode="elixir"
|
|
|
|
rem Recursive loop called for each parameter that parses the cmd line parameters
|
|
:startloop
|
|
set par="%1"
|
|
shift
|
|
if "%par%"=="" (
|
|
rem if no parameters defined
|
|
goto expand_erl_libs
|
|
)
|
|
if "%par%"=="""" (
|
|
rem if no parameters defined - special case for parameter that is already quoted
|
|
goto expand_erl_libs
|
|
)
|
|
rem ******* EXECUTION OPTIONS **********************
|
|
if "%par%"==""--werl"" (set useWerl=1)
|
|
if "%par%"==""+iex"" (set runMode="iex")
|
|
rem ******* ELIXIR PARAMETERS **********************
|
|
rem Note: we don't have to do anything with options that don't take an argument
|
|
if """"=="%par:-e=%" (shift)
|
|
if """"=="%par:-r=%" (shift)
|
|
if """"=="%par:-pr=%" (shift)
|
|
if """"=="%par:-pa=%" (shift)
|
|
if """"=="%par:-pz=%" (shift)
|
|
if """"=="%par:--app=%" (shift)
|
|
if """"=="%par:--remsh=%" (shift)
|
|
rem ******* ERLANG PARAMETERS **********************
|
|
if """"=="%par:--detached=%" (set parsErlang=%parsErlang% -detached)
|
|
if """"=="%par:--hidden=%" (set parsErlang=%parsErlang% -hidden)
|
|
if """"=="%par:--cookie=%" (set parsErlang=%parsErlang% -setcookie %1 && shift)
|
|
if """"=="%par:--sname=%" (set parsErlang=%parsErlang% -sname %1 && shift)
|
|
if """"=="%par:--name=%" (set parsErlang=%parsErlang% -name %1 && shift)
|
|
if """"=="%par:--logger-otp-reports=%" (set parsErlang=%parsErlang% -logger handle_otp_reports %1 && shift)
|
|
if """"=="%par:--logger-sasl-reports=%" (set parsErlang=%parsErlang% -logger handle_sasl_reports %1 && shift)
|
|
if """"=="%par:--erl=%" (set beforeExtra=%beforeExtra% %~1 && shift)
|
|
goto:startloop
|
|
|
|
rem ******* assume all pre-params are parsed ********************
|
|
:expand_erl_libs
|
|
rem ******* expand all ebin paths as Windows does not support the ..\*\ebin wildcard ********************
|
|
setlocal enabledelayedexpansion
|
|
set ext_libs=
|
|
for /d %%d in ("%originPath%..\lib\*.") do (
|
|
set ext_libs=!ext_libs! -pa "%%~fd\ebin"
|
|
)
|
|
setlocal disabledelayedexpansion
|
|
|
|
:run
|
|
if not %runMode% == "iex" (
|
|
set beforeExtra=-noshell -s elixir start_cli %beforeExtra%
|
|
)
|
|
if %useWerl% equ 1 (
|
|
start werl.exe %ext_libs% %ELIXIR_ERL_OPTIONS% %parsErlang% %beforeExtra% -extra %*
|
|
) else (
|
|
erl.exe %ext_libs% %ELIXIR_ERL_OPTIONS% %parsErlang% %beforeExtra% -extra %*
|
|
)
|
|
:end
|
|
endlocal
|