Skip to content

Commit c374b35

Browse files
Issue #1531 - fix slow running of batch file in Windows
1 parent c6f9287 commit c374b35

File tree

1 file changed

+21
-70
lines changed

1 file changed

+21
-70
lines changed

bin/elixir.bat

Lines changed: 21 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
@echo off
2+
SETLOCAL enabledelayedexpansion
23
set argc=0
34
for %%x in (%*) do set /A argc+=1
45
if %argc%== 0 (
@@ -46,81 +47,31 @@ set beforeExtra=
4647

4748
rem Recursive loop called for each parameter that parses the cmd line parameters
4849
:startloop
49-
set par="%1"
50+
set par=%1
5051
shift
5152
if "%par%"=="" (
5253
rem if no parameters defined
53-
goto :expand_erl_libs
54+
goto :run
5455
)
5556
rem ******* ERLANG PARAMETERS **********************
56-
for /f "usebackq" %%m in (`echo %par%^|findstr \--detached`) do (
57-
set parsErlang=%parsErlang% -detached
58-
goto:startloop
59-
)
60-
for /f "usebackq" %%m in (`echo %par%^|findstr \--hidden`) do (
61-
set parsErlang=%parsErlang% -hidden
62-
goto:startloop
63-
)
64-
for /f "usebackq" %%m in (`echo %par%^|findstr \--cookie`) do (
65-
set parsErlang=%parsErlang% -setcookie %1
66-
shift
67-
goto:startloop
68-
)
69-
for /f "usebackq" %%m in (`echo %par%^|findstr \--sname`) do (
70-
set parsErlang=%parsErlang% -sname %1
71-
shift
72-
goto:startloop
73-
)
74-
for /f "usebackq" %%m in (`echo %par%^|findstr \--name`) do (
75-
set parsErlang=%parsErlang% -name %1
76-
shift
77-
goto:startloop
78-
)
79-
for /f "usebackq" %%m in (`echo %par%^|findstr \--erl`) do (
80-
set beforeExtra=%beforeExtra% %~1
81-
shift
82-
goto:startloop
83-
)
57+
IF NOT "%par%"=="%par:--detached=%" (Set parsErlang=%parsErlang% -detached)
58+
IF NOT "%par%"=="%par:--hidden=%" (Set parsErlang=%parsErlang% -hidden)
59+
IF NOT "%par%"=="%par:--cookie=%" (Set parsErlang=%parsErlang% -setcookie %1 && shift)
60+
IF NOT "%par%"=="%par:--sname=%" (Set parsErlang=%parsErlang% -sname %1 && shift)
61+
IF NOT "%par%"=="%par:--name=%" (Set parsErlang=%parsErlang% -name %1 && shift)
62+
IF NOT "%par%"=="%par:--erl=%" (Set beforeExtra=%beforeExtra% %~1 && shift)
8463
rem ******* elixir parameters **********************
85-
for /f "usebackq" %%m in (`echo %par%^|findstr \--v`) do (
86-
goto:startloop
87-
)
88-
for /f "usebackq" %%m in (`echo %par%^|findstr \--compile`) do (
89-
goto:startloop
90-
)
91-
for /f "usebackq" %%m in (`echo %par%^|findstr \--no-halt`) do (
92-
goto:startloop
93-
)
94-
for /f "usebackq" %%m in (`echo %par%^|findstr \+iex`) do (
95-
goto:startloop
96-
)
97-
for /f "usebackq" %%m in (`echo %par%^|findstr \+compile`) do (
98-
goto:startloop
99-
)
100-
for /f "usebackq" %%m in (`echo %par%^|findstr \-[er]`) do (
101-
shift
102-
goto:startloop
103-
)
104-
for /f "usebackq" %%m in (`echo %par%^|findstr \-p[raz]`) do (
105-
shift
106-
goto:startloop
107-
)
108-
for /f "usebackq" %%m in (`echo %par%^|findstr \--app`) do (
109-
shift
110-
goto:startloop
111-
)
112-
for /f "usebackq" %%m in (`echo %par%^|findstr \--remsh`) do (
113-
shift
114-
goto:startloop
115-
)
64+
rem Note: we don't have to do anything with options that don't take an argument
65+
IF NOT "%par%"=="%par:-e=%" (shift)
66+
IF NOT "%par%"=="%par:-r=%" (shift)
67+
IF NOT "%par%"=="%par:-pr=%" (shift)
68+
IF NOT "%par%"=="%par:-pa=%" (shift)
69+
IF NOT "%par%"=="%par:-pz=%" (shift)
70+
IF NOT "%par%"=="%par:--app=%" (shift)
71+
IF NOT "%par%"=="%par:--remsh=%" (shift)
72+
goto:startloop
73+
11674
rem ******* assume all pre-params are parsed ********************
117-
:expand_erl_libs
118-
rem ******* expand all ebin paths as Windows does not support the ..\*\ebin wildcard ********************
119-
SETLOCAL enabledelayedexpansion
120-
set ext_libs=
121-
for /d %%d in ("%originPath%..\lib\*.") do (
122-
set ext_libs=!ext_libs! -pa "%%~fd\ebin"
123-
)
124-
SETLOCAL disabledelayedexpansion
12575
:run
126-
erl %ext_libs% -noshell %ELIXIR_ERL_OPTS% %parsErlang% -s elixir start_cli %beforeExtra% -extra %*
76+
erl -env ERL_LIBS %ERL_LIBS%;"%originPath%\..\lib" -noshell %ELIXIR_ERL_OPTS% %parsErlang% -s elixir start_cli %beforeExtra% -extra %*
77+

0 commit comments

Comments
 (0)