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