Skip to content

Commit 06be4da

Browse files
committed
Parse Elixir command line args inside Elixir
1 parent 41534c2 commit 06be4da

File tree

2 files changed

+36
-49
lines changed

2 files changed

+36
-49
lines changed

bin/elixir.bat

Lines changed: 19 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,6 @@ goto end
6969

7070
:parseopts
7171

72-
rem Parameters for Elixir
73-
set parsElixir=
74-
7572
rem Parameters for Erlang
7673
set parsErlang=
7774

@@ -97,48 +94,24 @@ if "!par!"=="" (
9794
)
9895
shift
9996
set par="!par:"=\"!"
100-
if !endLoop! == 1 (
101-
set parsElixir=!parsElixir! !par!
102-
goto startloop
103-
)
10497
rem ******* EXECUTION OPTIONS **********************
10598
if !par!=="--werl" (set useWerl=1 && goto startloop)
106-
if !par!=="+iex" (set parsElixir=!parsElixir! +iex && set useIEx=1 && goto startloop)
107-
if !par!=="+elixirc" (set parsElixir=!parsElixir! +elixirc && goto startloop)
108-
rem ******* EVAL PARAMETERS ************************
109-
if ""==!par:-e=! (
110-
set "VAR=%~1"
111-
if not defined VAR (set VAR= )
112-
set parsElixir=!parsElixir! -e "!VAR:"=\"!"
113-
shift
114-
goto startloop
115-
)
116-
if ""==!par:--eval=! (
117-
set "VAR=%~1"
118-
if not defined VAR (set VAR= )
119-
set parsElixir=!parsElixir! --eval "!VAR:"=\"!"
120-
shift
121-
goto startloop
122-
)
123-
if ""==!par:--rpc-eval=! (
124-
set "VAR=%~2"
125-
if not defined VAR (set VAR= )
126-
set parsElixir=!parsElixir! --rpc-eval %1 "!VAR:"=\"!"
127-
shift
128-
shift
129-
goto startloop
130-
)
99+
if !par!=="+iex" (set useIEx=1 && goto startloop)
100+
if !par!=="+elixirc" (goto startloop)
131101
rem ******* ELIXIR PARAMETERS **********************
132-
if ""==!par:-r=! (set "parsElixir=!parsElixir! -r "%~1"" && shift && goto startloop)
133-
if ""==!par:-pr=! (set "parsElixir=!parsElixir! -pr "%~1"" && shift && goto startloop)
134-
if ""==!par:-pa=! (set "parsElixir=!parsElixir! -pa "%~1"" && shift && goto startloop)
135-
if ""==!par:-pz=! (set "parsElixir=!parsElixir! -pz "%~1"" && shift && goto startloop)
136-
if ""==!par:-v=! (set "parsElixir=!parsElixir! -v" && goto startloop)
137-
if ""==!par:--version=! (set "parsElixir=!parsElixir! --version" && goto startloop)
138-
if ""==!par:--no-halt=! (set "parsElixir=!parsElixir! --no-halt" && goto startloop)
139-
if ""==!par:--remsh=! (set "parsElixir=!parsElixir! --remsh "%~1"" && shift && goto startloop)
140-
if ""==!par:--dot-iex=! (set "parsElixir=!parsElixir! --dot-iex "%~1"" && shift && goto startloop)
141-
if ""==!par:--dbg=! (set "parsElixir=!parsElixir! --dbg "%~1"" && shift && goto startloop)
102+
if ""==!par:-e=! (shift && goto startloop)
103+
if ""==!par:--eval=! (shift && goto startloop)
104+
if ""==!par:--rpc-eval=! (shift && shift && goto startloop)
105+
if ""==!par:-r=! (shift && goto startloop)
106+
if ""==!par:-pr=! (shift && goto startloop)
107+
if ""==!par:-pa=! (shift && goto startloop)
108+
if ""==!par:-pz=! (shift && goto startloop)
109+
if ""==!par:-v=! (goto startloop)
110+
if ""==!par:--version=! (goto startloop)
111+
if ""==!par:--no-halt=! (goto startloop)
112+
if ""==!par:--remsh=! (shift && goto startloop)
113+
if ""==!par:--dot-iex=! (shift && goto startloop)
114+
if ""==!par:--dbg=! (shift && goto startloop)
142115
rem ******* ERLANG PARAMETERS **********************
143116
if ""==!par:--boot=! (set "parsErlang=!parsErlang! -boot "%~1"" && shift && goto startloop)
144117
if ""==!par:--boot-var=! (set "parsErlang=!parsErlang! -boot_var "%~1" "%~2"" && shift && shift && goto startloop)
@@ -152,9 +125,6 @@ if ""==!par:--sname=! (set "parsErlang=!parsErlang! -sname "%~1""
152125
if ""==!par:--vm-args=! (set "parsErlang=!parsErlang! -args_file "%~1"" && shift && goto startloop)
153126
if ""==!par:--erl=! (set "beforeExtra=!beforeExtra! %~1" && shift && goto startloop)
154127
if ""==!par:--pipe-to=! (echo --pipe-to : Option is not supported on Windows && goto end)
155-
set endLoop=1
156-
set parsElixir=!parsElixir! !par!
157-
goto startloop
158128

159129
:run
160130
reg query HKCU\Console /v VirtualTerminalLevel 2>nul | findstr /e "0x1" >nul 2>nul
@@ -169,15 +139,15 @@ set beforeExtra=-noshell -elixir_root "!SCRIPT_PATH!..\lib" -pa "!SCRIPT_PATH!..
169139

170140
if defined ELIXIR_CLI_DRY_RUN (
171141
if defined useWerl (
172-
echo start "" "!ERTS_BIN!werl.exe" !ext_libs! !ELIXIR_ERL_OPTIONS! !parsErlang! !beforeExtra! -extra !parsElixir!
142+
echo start "" "!ERTS_BIN!werl.exe" !ext_libs! !ELIXIR_ERL_OPTIONS! !parsErlang! !beforeExtra! -extra %*
173143
) else (
174-
echo "!ERTS_BIN!erl.exe" !ext_libs! !ELIXIR_ERL_OPTIONS! !parsErlang! !beforeExtra! -extra !parsElixir!
144+
echo "!ERTS_BIN!erl.exe" !ext_libs! !ELIXIR_ERL_OPTIONS! !parsErlang! !beforeExtra! -extra %*
175145
)
176146
) else (
177147
if defined useWerl (
178-
start "" "!ERTS_BIN!werl.exe" !ext_libs! !ELIXIR_ERL_OPTIONS! !parsErlang! !beforeExtra! -extra !parsElixir!
148+
start "" "!ERTS_BIN!werl.exe" !ext_libs! !ELIXIR_ERL_OPTIONS! !parsErlang! !beforeExtra! -extra %*
179149
) else (
180-
"!ERTS_BIN!erl.exe" !ext_libs! !ELIXIR_ERL_OPTIONS! !parsErlang! !beforeExtra! -extra !parsElixir!
150+
"!ERTS_BIN!erl.exe" !ext_libs! !ELIXIR_ERL_OPTIONS! !parsErlang! !beforeExtra! -extra %*
181151
)
182152
)
183153
exit /B %ERRORLEVEL%

lib/elixir/lib/kernel/cli.ex

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,8 @@ defmodule Kernel.CLI do
327327
parse_argv(t, %{config | profile: :time})
328328
end
329329

330+
## IEx
331+
330332
defp parse_argv([~c"--dbg", backend | t], %{mode: :iex} = config) do
331333
case backend do
332334
~c"pry" ->
@@ -344,6 +346,21 @@ defmodule Kernel.CLI do
344346
defp parse_argv([~c"--dot-iex", _ | t], %{mode: :iex} = config), do: parse_argv(t, config)
345347
defp parse_argv([~c"--remsh", _ | t], %{mode: :iex} = config), do: parse_argv(t, config)
346348

349+
## Erlang flags
350+
351+
defp parse_argv([~c"--boot", _ | t], config), do: parse_argv(t, config)
352+
defp parse_argv([~c"--boot-var", _, _ | t], config), do: parse_argv(t, config)
353+
defp parse_argv([~c"--cookie", _ | t], config), do: parse_argv(t, config)
354+
defp parse_argv([~c"--hidden" | t], config), do: parse_argv(t, config)
355+
defp parse_argv([~c"--erl-config", _ | t], config), do: parse_argv(t, config)
356+
defp parse_argv([~c"--logger-otp-reports", _ | t], config), do: parse_argv(t, config)
357+
defp parse_argv([~c"--logger-sasl-reports", _ | t], config), do: parse_argv(t, config)
358+
defp parse_argv([~c"--name", _ | t], config), do: parse_argv(t, config)
359+
defp parse_argv([~c"--sname", _ | t], config), do: parse_argv(t, config)
360+
defp parse_argv([~c"--vm-args", _ | t], config), do: parse_argv(t, config)
361+
defp parse_argv([~c"--erl", _ | t], config), do: parse_argv(t, config)
362+
defp parse_argv([~c"--pipe-to", _, _ | t], config), do: parse_argv(t, config)
363+
347364
## Fallback
348365

349366
defp parse_argv([h | t], %{mode: :elixirc} = config) do

0 commit comments

Comments
 (0)