From 1b3b2c0d03e4b2611df083e3883cbe7e8cb8630b Mon Sep 17 00:00:00 2001 From: Thales Macedo Garitezi Date: Fri, 4 Feb 2022 16:53:27 -0300 Subject: [PATCH] feat: add eval-erl command to `bin/emqx` This allows Erlang expressions to be evaluated easily even on nodes running Elixir. --- .ci/docker-compose-file/scripts/run-emqx.sh | 10 ++-------- bin/emqx | 11 ++++++++++- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/.ci/docker-compose-file/scripts/run-emqx.sh b/.ci/docker-compose-file/scripts/run-emqx.sh index 51e467983..60946badb 100755 --- a/.ci/docker-compose-file/scripts/run-emqx.sh +++ b/.ci/docker-compose-file/scripts/run-emqx.sh @@ -20,14 +20,8 @@ fi is_node_up() { local node="$1" - if [ "${IS_ELIXIR:-no}" = "yes" ] - then - docker exec -i "$node" \ - bash -c "emqx eval \"[:\\\"emqx@node1.emqx.io\\\", :\\\"emqx@node2.emqx.io\\\"] = :ekka_cluster.info()[:running_nodes]\"" - else - docker exec -i "$node" \ - bash -c "emqx eval \"['emqx@node1.emqx.io','emqx@node2.emqx.io'] = maps:get(running_nodes, ekka_cluster:info()).\"" > /dev/null 2>&1 - fi + docker exec -i "$node" \ + bash -c "emqx eval-erl \"['emqx@node1.emqx.io','emqx@node2.emqx.io'] = maps:get(running_nodes, ekka_cluster:info()).\"" > /dev/null 2>&1 } is_node_listening() { diff --git a/bin/emqx b/bin/emqx index a79e5943b..4e860d97d 100755 --- a/bin/emqx +++ b/bin/emqx @@ -140,6 +140,9 @@ usage() { eval) echo "Evaluate an Erlang or Elxir expression in the EMQ X node" ;; + eval-erl) + echo "Evaluate an Erlang expression in the EMQ X node, even on Elixir node" + ;; versions) echo "List installed EMQ X versions and their status" ;; @@ -200,7 +203,7 @@ usage() { echo " Up/Down-grade: upgrade | downgrade | install | uninstall" echo " Install info: ertspath | root_dir | versions | root_dir" echo " Runtime info: pid | ping | versions" - echo " Advanced: console_clean | escript | rpc | rpcterms | eval" + echo " Advanced: console_clean | escript | rpc | rpcterms | eval | eval-erl" echo '' echo "Execute '$REL_NAME COMMAND help' for more information" ;; @@ -875,6 +878,12 @@ case "${COMMAND}" in relx_nodetool "eval" "$@" fi ;; + eval-erl) + assert_node_alive + + shift + relx_nodetool "eval" "$@" + ;; *) usage "$COMMAND" exit 1