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