1@echo off
2:: This is a simple start batch file that runs the release in an Erlang shell
3
4:: Set variables that describe the release
5set rel_name={{ rel_name }}
6set rel_vsn={{ rel_vsn }}
7set erts_vsn={{ erts_vsn }}
8set erl_opts={{ erl_opts }}
9
10:: export these to match mix release environment variables
11set RELEASE_NAME={{ rel_name }}
12set RELEASE_VSN={{ rel_vsn }}
13set RELEASE_PROG=%~nx0
14
15:: Set the root release directory based on the location of this batch file
16set script_dir=%~dp0
17for %%A in ("%script_dir%\..") do (
18  set "release_root_dir=%%~fA"
19)
20set "rel_dir=%release_root_dir%\releases\%rel_vsn%"
21
22call :find_erts_dir
23call :find_sys_config
24call :set_boot_script_var
25
26set "rootdir=%release_root_dir%"
27set "bindir=%erts_dir%\bin"
28set progname=erl
29set erl=%bindir%\erl
30
31cd %rootdir%
32
33:: Write the erl.ini file
34set erl_ini=%erts_dir%\bin\erl.ini
35set converted_bindir=%bindir:\=\\%
36set converted_rootdir=%rootdir:\=\\%
37echo [erlang] > "%erl_ini%"
38echo Bindir=%converted_bindir% >> "%erl_ini%"
39echo Progname=%progname% >> "%erl_ini%"
40echo Rootdir=%converted_rootdir% >> "%erl_ini%"
41
42:: Start the release in an `erl` shell
43set boot=-boot "%boot_script%" -boot_var RELEASE_DIR "%release_root_dir%"
44"%erl%" %erl_opts% %sys_config% %boot% %*
45
46goto :eof
47
48:: Find the ERTS dir
49:find_erts_dir
50set "erts_dir=%release_root_dir%\erts-%erts_vsn%"
51if exist %erts_dir% (
52  goto :set_erts_dir_from_default
53) else (
54  goto :set_erts_dir_from_erl
55)
56goto :eof
57
58:: Set the ERTS dir from the passed in erts_vsn
59:set_erts_dir_from_default
60set erts_dir=%erts_dir%
61set root_dir=%release_root_dir%
62goto :eof
63
64:: Set the ERTS dir from erl
65:set_erts_dir_from_erl
66for /f "delims=" %%i in ('where erl') do (
67  set erl=%%i
68)
69for /f "delims=" %%i in ('call "%erl%" -boot no_dot_erlang -boot_var RELEASE_DIR "%release_root_dir%" -noshell -eval "io:format(\"~s\", [filename:nativename(code:root_dir())])." -s init stop') do (
70  set erl_root=%%i
71)
72set "erts_dir=%erl_root%\erts-%erts_vsn%"
73set rootdir=%erl_root%
74goto :eof
75
76:: Find the sys.config file
77:find_sys_config
78set "possible_sys=%rel_dir%\sys.config"
79if exist "%possible_sys%" (
80  set sys_config=-config "%possible_sys%"
81) else (
82  if exist "%possible_sys%.orig" (
83    ren "%possible_sys%.orig" sys.config
84    set sys_config=-config "%possible_sys%"
85  )
86)
87
88:: Find the vm.args file
89:find_vm_args
90set "possible_vm_args=%rel_dir%\vm.args"
91if exist "%possible_vm_args%" (
92  set vm_args="%possible_vm_args%"
93) else (
94  if exist "%possible_vm_args%.orig" (
95    ren "%possible_vm_args%.orig" vm.args
96    set vm_args="%possible_vm_args%"
97  )
98)
99goto :eof
100
101:: set boot_script variable
102:set_boot_script_var
103if exist "%rel_dir%\%rel_name%.boot" (
104  set "boot_script=%rel_dir%\%rel_name%"
105) else (
106  set "boot_script=%rel_dir%\start"
107)
108goto :eof
109