diff --git a/src/emqx.appup.src b/src/emqx.appup.src index be224aa5c..027f4273b 100644 --- a/src/emqx.appup.src +++ b/src/emqx.appup.src @@ -2,18 +2,21 @@ {VSN, [ {"4.3.6", [ - {load_module,emqx_app,brutal_purge,soft_purge,[]} + {load_module,emqx_app,brutal_purge,soft_purge,[]}, + {load_module,emqx_ctl,brutal_purge,soft_purge,[]} ]}, {"4.3.5", [ {load_module,emqx_cm,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}, - {load_module,emqx_access_rule,brutal_purge,soft_purge,[]} + {load_module,emqx_access_rule,brutal_purge,soft_purge,[]}, + {load_module,emqx_ctl,brutal_purge,soft_purge,[]} ]}, {"4.3.4", [ {load_module,emqx_cm,brutal_purge,soft_purge,[]}, {load_module,emqx_shared_sub,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}, - {load_module,emqx_access_rule,brutal_purge,soft_purge,[]} + {load_module,emqx_access_rule,brutal_purge,soft_purge,[]}, + {load_module,emqx_ctl,brutal_purge,soft_purge,[]} ]}, {"4.3.3", [ {load_module,emqx_packet,brutal_purge,soft_purge,[]}, @@ -21,7 +24,8 @@ {load_module,emqx_ws_connection,brutal_purge,soft_purge,[]}, {load_module,emqx_cm,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}, - {load_module,emqx_access_rule,brutal_purge,soft_purge,[]} + {load_module,emqx_access_rule,brutal_purge,soft_purge,[]}, + {load_module,emqx_ctl,brutal_purge,soft_purge,[]} ]}, {"4.3.2", [ {load_module,emqx_packet,brutal_purge,soft_purge,[]}, @@ -32,7 +36,8 @@ {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_connection,brutal_purge,soft_purge,[]}, {load_module,emqx_cm,brutal_purge,soft_purge,[]}, - {load_module,emqx_access_rule,brutal_purge,soft_purge,[]} + {load_module,emqx_access_rule,brutal_purge,soft_purge,[]}, + {load_module,emqx_ctl,brutal_purge,soft_purge,[]} ]}, {"4.3.1", [ {load_module,emqx_packet,brutal_purge,soft_purge,[]}, @@ -48,7 +53,8 @@ {load_module,emqx_plugins,brutal_purge,soft_purge,[]}, {load_module,emqx_logger_textfmt,brutal_purge,soft_purge,[]}, {load_module,emqx_http_lib,brutal_purge,soft_purge,[]}, - {load_module,emqx_access_rule,brutal_purge,soft_purge,[]} + {load_module,emqx_access_rule,brutal_purge,soft_purge,[]}, + {load_module,emqx_ctl,brutal_purge,soft_purge,[]} ]}, {"4.3.0", [ {load_module,emqx_packet,brutal_purge,soft_purge,[]}, @@ -68,23 +74,27 @@ {load_module,emqx_metrics,brutal_purge,soft_purge,[]}, {apply,{emqx_metrics,upgrade_retained_delayed_counter_type,[]}}, {load_module,emqx_http_lib,brutal_purge,soft_purge,[]}, - {load_module,emqx_access_rule,brutal_purge,soft_purge,[]} + {load_module,emqx_access_rule,brutal_purge,soft_purge,[]}, + {load_module,emqx_ctl,brutal_purge,soft_purge,[]} ]}, {<<".*">>,[]}], [ {"4.3.6", [ - {load_module,emqx_app,brutal_purge,soft_purge,[]} + {load_module,emqx_app,brutal_purge,soft_purge,[]}, + {load_module,emqx_ctl,brutal_purge,soft_purge,[]} ]}, {"4.3.5", [ {load_module,emqx_cm,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}, - {load_module,emqx_access_rule,brutal_purge,soft_purge,[]} + {load_module,emqx_access_rule,brutal_purge,soft_purge,[]}, + {load_module,emqx_ctl,brutal_purge,soft_purge,[]} ]}, {"4.3.4", [ {load_module,emqx_cm,brutal_purge,soft_purge,[]}, {load_module,emqx_shared_sub,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}, - {load_module,emqx_access_rule,brutal_purge,soft_purge,[]} + {load_module,emqx_access_rule,brutal_purge,soft_purge,[]}, + {load_module,emqx_ctl,brutal_purge,soft_purge,[]} ]}, {"4.3.3", [ {load_module,emqx_packet,brutal_purge,soft_purge,[]}, @@ -92,7 +102,8 @@ {load_module,emqx_ws_connection,brutal_purge,soft_purge,[]}, {load_module,emqx_cm,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}, - {load_module,emqx_access_rule,brutal_purge,soft_purge,[]} + {load_module,emqx_access_rule,brutal_purge,soft_purge,[]}, + {load_module,emqx_ctl,brutal_purge,soft_purge,[]} ]}, {"4.3.2", [ {load_module,emqx_packet,brutal_purge,soft_purge,[]}, @@ -103,7 +114,8 @@ {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_connection,brutal_purge,soft_purge,[]}, {load_module,emqx_cm,brutal_purge,soft_purge,[]}, - {load_module,emqx_access_rule,brutal_purge,soft_purge,[]} + {load_module,emqx_access_rule,brutal_purge,soft_purge,[]}, + {load_module,emqx_ctl,brutal_purge,soft_purge,[]} ]}, {"4.3.1", [ {load_module,emqx_packet,brutal_purge,soft_purge,[]}, @@ -119,7 +131,8 @@ {load_module,emqx_plugins,brutal_purge,soft_purge,[]}, {load_module,emqx_logger_textfmt,brutal_purge,soft_purge,[]}, {load_module,emqx_http_lib,brutal_purge,soft_purge,[]}, - {load_module,emqx_access_rule,brutal_purge,soft_purge,[]} + {load_module,emqx_access_rule,brutal_purge,soft_purge,[]}, + {load_module,emqx_ctl,brutal_purge,soft_purge,[]} ]}, {"4.3.0", [ {load_module,emqx_packet,brutal_purge,soft_purge,[]}, @@ -138,6 +151,7 @@ {load_module,emqx_logger_textfmt,brutal_purge,soft_purge,[]}, {load_module,emqx_metrics,brutal_purge,soft_purge,[]}, {load_module,emqx_http_lib,brutal_purge,soft_purge,[]}, - {load_module,emqx_access_rule,brutal_purge,soft_purge,[]} + {load_module,emqx_access_rule,brutal_purge,soft_purge,[]}, + {load_module,emqx_ctl,brutal_purge,soft_purge,[]} ]}, {<<".*">>,[]}]}. diff --git a/src/emqx_ctl.erl b/src/emqx_ctl.erl index 84aa54de6..79616e631 100644 --- a/src/emqx_ctl.erl +++ b/src/emqx_ctl.erl @@ -137,11 +137,11 @@ help() -> -spec(print(io:format()) -> ok). print(Msg) -> - io:format(format(Msg)). + io:format("~s", [format(Msg)]). -spec(print(io:format(), [term()]) -> ok). print(Format, Args) -> - io:format(format(Format, Args)). + io:format("~s", [format(Format, Args)]). -spec(usage([cmd_usage()]) -> ok). usage(UsageList) -> @@ -231,4 +231,3 @@ zip_cmd([X | Xs], [Y | Ys]) -> [{X, Y} | zip_cmd(Xs, Ys)]; zip_cmd([X | Xs], []) -> [{X, ""} | zip_cmd(Xs, [])]; zip_cmd([], [Y | Ys]) -> [{"", Y} | zip_cmd([], Ys)]; zip_cmd([], []) -> []. - diff --git a/test/emqx_ctl_SUITE.erl b/test/emqx_ctl_SUITE.erl index 4f8224871..8466cf7b0 100644 --- a/test/emqx_ctl_SUITE.erl +++ b/test/emqx_ctl_SUITE.erl @@ -67,10 +67,12 @@ t_run_commands(_) -> t_print(_) -> ok = emqx_ctl:print("help"), ok = emqx_ctl:print("~s", [help]), + ok = emqx_ctl:print("~s", [<<"~!@#$%^&*()">>]), % - check the output of the usage mock_print(), - ?assertEqual("help", emqx_ctl:print("help")), + ?assertEqual("help~n", emqx_ctl:print("help~n")), ?assertEqual("help", emqx_ctl:print("~s", [help])), + ?assertEqual("~!@#$%^&*()", emqx_ctl:print("~s", [<<"~!@#$%^&*()">>])), unmock_print(). t_usage(_) ->