summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@plataformatec.com.br>2019-01-29 15:22:16 +0100
committerJosé Valim <jose.valim@plataformatec.com.br>2019-01-29 15:30:51 +0100
commit50cab0b962e3e63d6fb180810d4117d5d732f829 (patch)
treea6597fc1115e031896cd003b49ca5343dba14379
parentcccc35de4dd6866d3ace1a710525785c502caf75 (diff)
downloadelixir-50cab0b962e3e63d6fb180810d4117d5d732f829.tar.gz
Add RELEASE_NODE, RELEASE_COOKIE and fixes
-rwxr-xr-xbin/elixir8
-rw-r--r--bin/elixir.bat13
-rwxr-xr-xbin/iex2
-rw-r--r--bin/iex.bat6
-rw-r--r--lib/mix/lib/mix/tasks/release.ex37
-rw-r--r--lib/mix/test/fixtures/release_test/lib/release_test.ex3
-rw-r--r--lib/mix/test/mix/tasks/release_test.exs3
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
diff --git a/bin/iex b/bin/iex
index 3016b0436..67f867524 100755
--- a/bin/iex
+++ b/bin/iex
@@ -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(),