feat: parameterise console flavor

so we can start an Erlang console in a Elixir release
by: env EMQX_CONSOLE_FLAVOR=erl ./bin/emqx console
This commit is contained in:
Zaiming (Stone) Shi 2022-04-13 22:38:48 +02:00
parent d09e050864
commit 18cebd9be7
1 changed files with 39 additions and 45 deletions

View File

@ -304,7 +304,7 @@ relx_get_pid() {
}
# Connect to a remote node
relx_rem_sh() {
remsh() {
# Generate a unique id used to allow multiple remsh to the same node
# transparently
id="remsh$(relx_gen_id)-${NAME}"
@ -313,8 +313,14 @@ relx_rem_sh() {
# shellcheck disable=SC2086
# Setup remote shell command to control node
if [ "$IS_ELIXIR" = "yes" ]
then
if [ "$IS_ELIXIR" = no ] || [ "${EMQX_CONSOLE_FLAVOR:-}" = 'erl' ] ; then
set -- "$BINDIR/erl" "$NAME_TYPE" "$id" \
-remsh "$NAME" -boot "$REL_DIR/start_clean" \
-boot_var ERTS_LIB_DIR "$ERTS_LIB_DIR" \
-boot_var RELEASE_LIB "$ERTS_LIB_DIR" \
-setcookie "$COOKIE" -hidden -kernel net_ticktime "$TICKTIME" \
$EPMD_ARGS
else
set -- "$REL_DIR/iex" \
--remsh "$NAME" \
--boot-var RELEASE_LIB "$ERTS_LIB_DIR" \
@ -324,12 +330,6 @@ relx_rem_sh() {
--erl "$EPMD_ARGS" \
--erl "$NAME_TYPE $id" \
--boot "$REL_DIR/start_clean"
else
set -- "$BINDIR/erl" "$NAME_TYPE" "$id" \
-remsh "$NAME" -boot "$REL_DIR/start_clean" \
-boot_var ERTS_LIB_DIR "$ERTS_LIB_DIR" \
-setcookie "$COOKIE" -hidden -kernel net_ticktime "$TICKTIME" \
$EPMD_ARGS
fi
exec "$@"
}
@ -428,11 +428,6 @@ generate_config() {
CONF_FILE="$CONFIGS_DIR/app.$NOW_TIME.config"
ARGS_FILE="$CONFIGS_DIR/vm.$NOW_TIME.args"
# This is needed by the Elixir scripts.
# Do NOT append `.config`.
RELEASE_SYS_CONFIG="$CONFIGS_DIR/app.$NOW_TIME"
export RELEASE_SYS_CONFIG
## Merge hocon generated *.args into the vm.args
TMP_ARG_FILE="$CONFIGS_DIR/vm.args.tmp"
cp "$EMQX_ETC_DIR/vm.args" "$TMP_ARG_FILE"
@ -780,7 +775,7 @@ case "${COMMAND}" in
assert_node_alive
shift
relx_rem_sh
remsh
;;
upgrade|downgrade|install|unpack|uninstall)
@ -859,18 +854,7 @@ case "${COMMAND}" in
# shellcheck disable=SC2086
# Build an array of arguments to pass to exec later on
# Build it here because this command will be used for logging.
if [ "$IS_ELIXIR" = yes ]
then
set -- "$REL_DIR/iex" \
--boot "$BOOTFILE" \
--boot-var RELEASE_LIB "${ERTS_LIB_DIR}" \
--erl-config "${CONF_FILE}" \
--vm-args "${ARGS_FILE}" \
--erl "$FOREGROUNDOPTIONS" \
--erl "-mode $CODE_LOADING_MODE" \
--erl "$EPMD_ARGS" \
--werl
else
if [ "$IS_ELIXIR" = no ] || [ "${EMQX_CONSOLE_FLAVOR:-}" = 'erl' ] ; then
# pass down RELEASE_LIB so we can switch to IS_ELIXIR=no
# to boot an Erlang node from the elixir release
set -- "$BINDIR/erlexec" \
@ -882,6 +866,16 @@ case "${COMMAND}" in
-config "$CONF_FILE" \
-args_file "$ARGS_FILE" \
$EPMD_ARGS
else
set -- "$REL_DIR/iex" \
--boot "$BOOTFILE" \
--boot-var RELEASE_LIB "${ERTS_LIB_DIR}" \
--erl-config "${CONF_FILE}" \
--vm-args "${ARGS_FILE}" \
--erl "$FOREGROUNDOPTIONS" \
--erl "-mode $CODE_LOADING_MODE" \
--erl "$EPMD_ARGS" \
--werl
fi
# Log the startup