diff options
author | José Valim <jose.valim@plataformatec.com.br> | 2019-01-29 15:22:16 +0100 |
---|---|---|
committer | José Valim <jose.valim@plataformatec.com.br> | 2019-01-29 15:30:51 +0100 |
commit | 50cab0b962e3e63d6fb180810d4117d5d732f829 (patch) | |
tree | a6597fc1115e031896cd003b49ca5343dba14379 | |
parent | cccc35de4dd6866d3ace1a710525785c502caf75 (diff) | |
download | elixir-50cab0b962e3e63d6fb180810d4117d5d732f829.tar.gz |
Add RELEASE_NODE, RELEASE_COOKIE and fixes
-rwxr-xr-x | bin/elixir | 8 | ||||
-rw-r--r-- | bin/elixir.bat | 13 | ||||
-rwxr-xr-x | bin/iex | 2 | ||||
-rw-r--r-- | bin/iex.bat | 6 | ||||
-rw-r--r-- | lib/mix/lib/mix/tasks/release.ex | 37 | ||||
-rw-r--r-- | lib/mix/test/fixtures/release_test/lib/release_test.ex | 3 | ||||
-rw-r--r-- | lib/mix/test/mix/tasks/release_test.exs | 3 |
7 files changed, 41 insertions, 31 deletions
diff --git a/bin/elixir b/bin/elixir index bcac17f1b..ff1764ff7 100755 --- a/bin/elixir +++ b/bin/elixir @@ -73,6 +73,7 @@ erl () { E=$(($E + 1)) } +ERL_EXEC="erl" MODE="elixir" I=1 E=0 @@ -93,7 +94,7 @@ while [ $I -le $LENGTH ]; do -v|--no-halt) set -- "$@" "$1" ;; - -e|-r|-pr|-pa|-pz|--app|--eval|--remsh) + -e|-r|-pr|-pa|-pz|--app|--eval|--remsh|--dot-iex) S=2 set -- "$@" "$1" "$2" ;; @@ -170,7 +171,7 @@ while [ $I -le $LENGTH ]; do esac ;; --werl) - USE_WERL=true + if [ "$OS" == "Windows_NT" ]; then ERL_EXEC="werl"; fi ;; *) while [ $I -le $LENGTH ]; do @@ -195,15 +196,12 @@ done SELF=$(readlink_f "$0") SCRIPT_PATH=$(dirname "$SELF") -ERL_EXEC="erl" if [ "$OSTYPE" = "cygwin" ]; then SCRIPT_PATH=$(cygpath -m "$SCRIPT_PATH"); fi if [ "$MODE" != "iex" ]; then ERL="-noshell -s elixir start_cli $ERL"; fi if [ "$OS" != "Windows_NT" ]; then if test -t 1 -a -t 2; then ERL="-elixir ansi_enabled true $ERL"; fi -else - if [ $USE_WERL ]; then ERL_EXEC="werl"; fi fi ERTS_BIN="" diff --git a/bin/elixir.bat b/bin/elixir.bat index 68dd0a5e6..b8e08a2d7 100644 --- a/bin/elixir.bat +++ b/bin/elixir.bat @@ -67,12 +67,12 @@ set parsErlang= rem Optional parameters before the "-extra" parameter set beforeExtra= +rem Option which determines whether to use werl or erl +set useWerl= + rem Option which determines whether the loop is over set endLoop=0 -rem Option which determines whether to use werl or erl -set useWerl=0 - rem Designates which mode / Elixir component to run as set runMode="elixir" @@ -128,6 +128,7 @@ if ""==!par:-v=! (set parsElixir=!parsElixir! -v && goto startloop) if ""==!par:--app=! (set parsElixir=!parsElixir! --app %1 && shift && goto startloop) if ""==!par:--no-halt=! (set parsElixir=!parsElixir! --no-halt && goto startloop) if ""==!par:--remsh=! (set parsElixir=!parsElixir! --remsh %1 && shift && goto startloop) +if ""==!par:--dot-iex=! (set parsElixir=!parsElixir! --dot-iex %1 && shift && goto startloop) rem ******* ERLANG PARAMETERS ********************** if ""==!par:--boot=! (set parsErlang=!parsErlang! -boot %1 && shift && goto startloop) if ""==!par:--boot-var=! (set parsErlang=!parsErlang! -boot_var %1 %2 && shift && shift && goto startloop) @@ -157,10 +158,10 @@ for /d %%d in ("!SCRIPT_PATH!..\lib\*.") do ( if not !runMode! == "iex" ( set beforeExtra=-noshell -s elixir start_cli !beforeExtra! ) -if !useWerl! equ 1 ( - start !ERTS_BIN!werl.exe !ext_libs! !ELIXIR_ERL_OPTIONS! !parsErlang! !beforeExtra! -extra !parsElixir! -) else ( +if !useWerl! == "" ( !ERTS_BIN!erl.exe !ext_libs! !ELIXIR_ERL_OPTIONS! !parsErlang! !beforeExtra! -extra !parsElixir! +) else ( + start !ERTS_BIN!werl.exe !ext_libs! !ELIXIR_ERL_OPTIONS! !parsErlang! !beforeExtra! -extra !parsElixir! ) :end endlocal
\ No newline at end of file @@ -8,7 +8,7 @@ The following options are exclusive to IEx: path can be empty, then no file will be loaded --remsh NAME Connects to a node using a remote shell -The remaining options are the same as in the \"elixir\" executable. Run \"elixir --help\" to see them" >&2 +It accepts all other options listed by \"elixir --help\"." >&2 exit 1 fi diff --git a/bin/iex.bat b/bin/iex.bat index 0a77234b2..f287cd1a9 100644 --- a/bin/iex.bat +++ b/bin/iex.bat @@ -14,12 +14,14 @@ echo. echo --dot-iex "PATH" Overrides default .iex.exs file and uses path instead; echo path can be empty, then no file will be loaded echo --remsh NAME Connects to a node using a remote shell +echo --werl Uses Erlang's Windows shell GUI (Windows only) echo. -echo The remaining options are the same as in the "elixir" executable. Run "elixir --help" to see them +echo Set the IEX_WITH_WERL environment variable to always use werl. +echo It accepts all other options listed by "elixir --help". goto end :run -@if defined IEX_WITH_WERL (@set __ELIXIR_IEX_FLAGS=--werl) else (set __ELIXIR_IEX_FLAGS=) +if defined IEX_WITH_WERL (@set __ELIXIR_IEX_FLAGS=--werl) else (set __ELIXIR_IEX_FLAGS=) call "%~dp0\elixir.bat" --no-halt --erl "-noshell -user Elixir.IEx.CLI" +iex %__ELIXIR_IEX_FLAGS% %* :end endlocal diff --git a/lib/mix/lib/mix/tasks/release.ex b/lib/mix/lib/mix/tasks/release.ex index bceb8ea39..8e7e1f81c 100644 --- a/lib/mix/lib/mix/tasks/release.ex +++ b/lib/mix/lib/mix/tasks/release.ex @@ -412,8 +412,11 @@ defmodule Mix.Tasks.Release do * `RELEASE_VSN` - the version of the release. It can be overridden when the release is started - * `COOKIE` - the release COOKIE. It can be overridden when the release - is started + * `RELEASE_COOKIE` - the release cookie. It can be overridden when the + release is started + + * `RELEASE_NODE` - the release node name. It can be overridden when the + release is started ### Hot Code Upgrades @@ -870,7 +873,8 @@ defmodule Mix.Tasks.Release do export RELEASE_ROOT export RELEASE_NAME="${RELEASE_NAME:-"<%= @name %>"}" export RELEASE_VSN="${RELEASE_VSN:-"$(cut -d' ' -f2 "$RELEASE_ROOT/releases/start_erl.data")"}" - export COOKIE=${COOKIE:-$(cat "$RELEASE_ROOT/releases/COOKIE")} + export RELEASE_COOKIE=${RELEASE_COOKIE:-"$(cat "$RELEASE_ROOT/releases/COOKIE")"} + export RELEASE_NODE=${RELEASE_NODE:-"$RELEASE_NAME@127.0.0.1"} REL_VSN_DIR="$RELEASE_ROOT/releases/$RELEASE_VSN" gen_id () { @@ -879,17 +883,17 @@ defmodule Mix.Tasks.Release do rpc () { exec "$REL_VSN_DIR/elixir" \ - --hidden --name "rpc-$(gen_id)@127.0.0.1" --cookie "$COOKIE" \ + --hidden --name "rpc-$(gen_id)@127.0.0.1" --cookie "$RELEASE_COOKIE" \ --boot "${REL_VSN_DIR}/remote" \ --boot-var RELEASE_LIB "$RELEASE_ROOT/lib" \ - --rpc-eval "$RELEASE_NAME@127.0.0.1" "$1" + --rpc-eval "$RELEASE_NODE" "$1" } start () { REL_EXEC="$1" shift exec "$REL_VSN_DIR/$REL_EXEC" --no-halt \ - --werl --name "$RELEASE_NAME@127.0.0.1" --cookie "$COOKIE" \ + --werl --name "$RELEASE_NODE" --cookie "$RELEASE_COOKIE" \ --erl-config "${REL_VSN_DIR}/sys" \ --boot "${REL_VSN_DIR}/start" \ --boot-var RELEASE_LIB "$RELEASE_ROOT/lib" \ @@ -908,10 +912,10 @@ defmodule Mix.Tasks.Release do remote) exec "$REL_VSN_DIR/iex" \ - --werl --hidden --name "remote-$(gen_id)@127.0.0.1" --cookie "$COOKIE" \ + --werl --hidden --name "remote-$(gen_id)@127.0.0.1" --cookie "$RELEASE_COOKIE" \ --boot "${REL_VSN_DIR}/remote" \ --boot-var RELEASE_LIB "$RELEASE_ROOT/lib" \ - --remsh "$RELEASE_NAME@127.0.0.1" + --remsh "$RELEASE_NODE" ;; rpc) @@ -970,7 +974,8 @@ defmodule Mix.Tasks.Release do if not defined RELEASE_NAME (set RELEASE_NAME=<%= @name %>) if not defined RELEASE_VSN (for /f "tokens=1,2" %%K in (!RELEASE_ROOT!/releases/start_erl.data) do (set ERTS_VSN=%%K) && (set RELEASE_VSN=%%L)) - if not defined COOKIE (set /p COOKIE=<!RELEASE_ROOT!/releases/COOKIE) + if not defined RELEASE_COOKIE (set /p RELEASE_COOKIE=<!RELEASE_ROOT!/releases/COOKIE) + if not defined RELEASE_NODE (set RELEASE_NODE=!RELEASE_NAME!@127.0.0.1) set REL_VSN_DIR=!RELEASE_ROOT!/releases/!RELEASE_VSN! if "%~1" == "start" (goto start) @@ -1005,7 +1010,7 @@ defmodule Mix.Tasks.Release do :start if not "%~2" == "" (set REL_EXEC=%~2) else (set REL_EXEC=elixir) "!REL_VSN_DIR!/!REL_EXEC!.bat" --no-halt ^ - --werl --name "!RELEASE_NAME!@127.0.0.1" --cookie "!COOKIE!" ^ + --werl --name "!RELEASE_NODE!" --cookie "!RELEASE_COOKIE!" ^ --erl-config "!REL_VSN_DIR!\sys" ^ --boot "!REL_VSN_DIR!\start" ^ --boot-var RELEASE_LIB "!RELEASE_ROOT!\lib" ^ @@ -1014,18 +1019,18 @@ defmodule Mix.Tasks.Release do :remote "!REL_VSN_DIR!/iex.bat" ^ - --werl --hidden --name "remote-!RANDOM!@127.0.0.1" --cookie "!COOKIE!" ^ + --werl --hidden --name "remote-!RANDOM!@127.0.0.1" --cookie "!RELEASE_COOKIE!" ^ --boot "!REL_VSN_DIR!\remote" ^ --boot-var RELEASE_LIB "!RELEASE_ROOT!\lib" ^ - --remsh "!RELEASE_NAME!@127.0.0.1" + --remsh "!RELEASE_NODE!" goto end :rpc "!REL_VSN_DIR!/elixir.bat" ^ - --hidden --name "rpc-!RANDOM!@127.0.0.1" --cookie "!COOKIE!" ^ + --hidden --name "rpc-!RANDOM!@127.0.0.1" --cookie "!RELEASE_COOKIE!" ^ --boot "!REL_VSN_DIR!\remote" ^ --boot-var RELEASE_LIB "!RELEASE_ROOT!\lib" ^ - --rpc-eval "!RELEASE_NAME!@127.0.0.1" !REL_RPC! + --rpc-eval "!RELEASE_NODE!" !REL_RPC! goto end :install @@ -1036,8 +1041,8 @@ defmodule Mix.Tasks.Release do ) !ERLSRV! add !RELEASE_NAME!_!RELEASE_NAME! ^ - -name "!RELEASE_NAME!@127.0.0.1" ^ - -args "-setcookie !COOKIE! -config !REL_VSN_DIR!\sys -boot !REL_VSN_DIR!\start -boot_var RELEASE_LIB !RELEASE_ROOT!\lib -args_file !REL_VSN_DIR!\vm.args" + -name "!RELEASE_NODE!" ^ + -args "-setcookie !RELEASE_COOKIE! -config !REL_VSN_DIR!\sys -boot !REL_VSN_DIR!\start -boot_var RELEASE_LIB !RELEASE_ROOT!\lib -args_file !REL_VSN_DIR!\vm.args" if %ERRORLEVEL% EQU 0 ( echo Service installed but not started. From now on, it must be started and stopped by erlsrv: diff --git a/lib/mix/test/fixtures/release_test/lib/release_test.ex b/lib/mix/test/fixtures/release_test/lib/release_test.ex index 399ee538c..059fa0eba 100644 --- a/lib/mix/test/fixtures/release_test/lib/release_test.ex +++ b/lib/mix/test/fixtures/release_test/lib/release_test.ex @@ -2,13 +2,14 @@ defmodule ReleaseTest do use Application def start(_type, _args) do - cookie = System.get_env("COOKIE") + cookie = System.get_env("RELEASE_COOKIE") info = %{ protocols_consolidated?: Protocol.consolidated?(Enumerable), app_dir: Application.app_dir(:release_test), release_root: System.get_env("RELEASE_ROOT"), release_name: System.get_env("RELEASE_NAME"), + release_node: System.get_env("RELEASE_NODE"), release_vsn: System.get_env("RELEASE_VSN"), cookie_env: cookie, cookie_node: wait_until_connected(String.to_atom(cookie)), diff --git a/lib/mix/test/mix/tasks/release_test.exs b/lib/mix/test/mix/tasks/release_test.exs index f7d4bca99..c120c4139 100644 --- a/lib/mix/test/mix/tasks/release_test.exs +++ b/lib/mix/test/mix/tasks/release_test.exs @@ -46,6 +46,7 @@ defmodule Mix.Tasks.ReleaseTest do node: :"release_test@127.0.0.1", protocols_consolidated?: true, release_name: "release_test", + release_node: "release_test@127.0.0.1", release_root: release_root, release_vsn: "0.1.0", root_dir: root_dir, @@ -97,6 +98,7 @@ defmodule Mix.Tasks.ReleaseTest do node: :"demo@127.0.0.1", protocols_consolidated?: true, release_name: "demo", + release_node: "demo@127.0.0.1", release_root: release_root, release_vsn: "0.2.0", root_dir: root_dir, @@ -159,6 +161,7 @@ defmodule Mix.Tasks.ReleaseTest do node: :"permanent2@127.0.0.1", protocols_consolidated?: true, release_name: "permanent2", + release_node: "permanent2@127.0.0.1", release_root: root, release_vsn: "0.1.0", root_dir: :code.root_dir() |> to_string(), |