From 51e33f3652d9563ee5d6caf6ba44367d527b3205 Mon Sep 17 00:00:00 2001 From: Michal Kuratczyk Date: Thu, 16 Nov 2023 00:01:14 +0100 Subject: [PATCH] Use rabbit_json in the CLI dep_json doesn't seem to be maintained and it's unnecessary anyway, since we can use rabbit_json, which uses thoas (cherry picked from commit 6c657158759f8e9ad9a175d2ae671d313c3bda6f) (cherry picked from commit a5b43074d88ffa5bb4085436b5fcfe314ddf03e1) --- deps/rabbitmq_cli/Makefile | 3 +-- .../rabbitmq/cli/ctl/commands/export_definitions_command.ex | 2 +- .../rabbitmq/cli/ctl/commands/import_definitions_command.ex | 2 +- .../rabbitmq/cli/ctl/commands/list_user_limits_command.ex | 4 ++-- .../rabbitmq/cli/ctl/commands/list_vhost_limits_command.ex | 4 ++-- deps/rabbitmq_cli/lib/rabbitmq/cli/formatters/json.ex | 2 +- .../rabbitmq_cli/lib/rabbitmq/cli/formatters/json_stream.ex | 2 +- deps/rabbitmq_cli/lib/rabbitmqctl.ex | 6 +++--- deps/rabbitmq_cli/mix.exs | 5 +---- .../test/ctl/export_definitions_command_test.exs | 4 ++-- deps/rabbitmq_cli/test/ctl/set_user_limits_command_test.exs | 2 +- .../rabbitmq_cli/test/ctl/set_vhost_limits_command_test.exs | 2 +- deps/rabbitmq_cli/test/json_formatting.exs | 4 ++-- deps/rabbitmq_cli/test/test_helper.exs | 1 - 14 files changed, 19 insertions(+), 24 deletions(-) diff --git a/deps/rabbitmq_cli/Makefile b/deps/rabbitmq_cli/Makefile index a4c62349f25f..8352583bb38f 100644 --- a/deps/rabbitmq_cli/Makefile +++ b/deps/rabbitmq_cli/Makefile @@ -1,12 +1,11 @@ PROJECT = rabbitmq_cli BUILD_DEPS = rabbit_common -DEPS = csv json observer_cli stdout_formatter +DEPS = csv observer_cli stdout_formatter TEST_DEPS = amqp amqp_client temp x509 rabbit dep_amqp = hex 3.3.0 dep_csv = hex 3.2.0 -dep_json = hex 1.4.1 dep_temp = hex 0.4.7 dep_x509 = hex 0.8.8 diff --git a/deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/export_definitions_command.ex b/deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/export_definitions_command.ex index c009c79d187e..a16f42fde4d9 100644 --- a/deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/export_definitions_command.ex +++ b/deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/export_definitions_command.ex @@ -159,7 +159,7 @@ defmodule RabbitMQ.CLI.Ctl.Commands.ExportDefinitionsCommand do end) end) - {:ok, json} = JSON.encode(map) + {:ok, json} = :rabbit_json.try_encode(map) json end diff --git a/deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/import_definitions_command.ex b/deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/import_definitions_command.ex index 665b821fcc01..233c8660be8d 100644 --- a/deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/import_definitions_command.ex +++ b/deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/import_definitions_command.ex @@ -166,7 +166,7 @@ defmodule RabbitMQ.CLI.Ctl.Commands.ImportDefinitionsCommand do # defp deserialise(bin, "json") do - JSON.decode(bin) + :rabbit_json.try_decode(bin) end defp deserialise(bin, "erlang") do diff --git a/deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/list_user_limits_command.ex b/deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/list_user_limits_command.ex index 1e01a13f644b..97241303c784 100644 --- a/deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/list_user_limits_command.ex +++ b/deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/list_user_limits_command.ex @@ -36,7 +36,7 @@ defmodule RabbitMQ.CLI.Ctl.Commands.ListUserLimitsCommand do val -> Enum.map(val, fn {user, val} -> - {:ok, val_encoded} = JSON.encode(Map.new(val)) + {:ok, val_encoded} = :rabbit_json.try_encode(Map.new(val)) [user: user, limits: val_encoded] end) end @@ -56,7 +56,7 @@ defmodule RabbitMQ.CLI.Ctl.Commands.ListUserLimitsCommand do {:badrpc, node} val when is_list(val) or is_map(val) -> - {:ok, val_encoded} = JSON.encode(Map.new(val)) + {:ok, val_encoded} = :rabbit_json.try_encode(Map.new(val)) val_encoded end end diff --git a/deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/list_vhost_limits_command.ex b/deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/list_vhost_limits_command.ex index 973452816bac..6f5e4063f3d4 100644 --- a/deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/list_vhost_limits_command.ex +++ b/deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/list_vhost_limits_command.ex @@ -36,7 +36,7 @@ defmodule RabbitMQ.CLI.Ctl.Commands.ListVhostLimitsCommand do val -> Enum.map(val, fn {vhost, val} -> - {:ok, val_encoded} = JSON.encode(Map.new(val)) + {:ok, val_encoded} = :rabbit_json.try_encode(Map.new(val)) [vhost: vhost, limits: val_encoded] end) end @@ -54,7 +54,7 @@ defmodule RabbitMQ.CLI.Ctl.Commands.ListVhostLimitsCommand do {:badrpc, node} val when is_list(val) or is_map(val) -> - JSON.encode(Map.new(val)) + :rabbit_json.try_encode(Map.new(val)) end end diff --git a/deps/rabbitmq_cli/lib/rabbitmq/cli/formatters/json.ex b/deps/rabbitmq_cli/lib/rabbitmq/cli/formatters/json.ex index ad46b1be9bf3..246140ead00c 100644 --- a/deps/rabbitmq_cli/lib/rabbitmq/cli/formatters/json.ex +++ b/deps/rabbitmq_cli/lib/rabbitmq/cli/formatters/json.ex @@ -18,7 +18,7 @@ defmodule RabbitMQ.CLI.Formatters.Json do end def format_output(output, _opts) do - {:ok, json} = JSON.encode(keys_to_atoms(output)) + {:ok, json} = :rabbit_json.try_encode(keys_to_atoms(output)) json end diff --git a/deps/rabbitmq_cli/lib/rabbitmq/cli/formatters/json_stream.ex b/deps/rabbitmq_cli/lib/rabbitmq/cli/formatters/json_stream.ex index 7f29998a8631..23d7be95ecf4 100644 --- a/deps/rabbitmq_cli/lib/rabbitmq/cli/formatters/json_stream.ex +++ b/deps/rabbitmq_cli/lib/rabbitmq/cli/formatters/json_stream.ex @@ -31,7 +31,7 @@ defmodule RabbitMQ.CLI.Formatters.JsonStream do end def format_output(output, _opts) do - {:ok, json} = JSON.encode(keys_to_atoms(output)) + {:ok, json} = :rabbit_json.try_encode(output) json end diff --git a/deps/rabbitmq_cli/lib/rabbitmqctl.ex b/deps/rabbitmq_cli/lib/rabbitmqctl.ex index fc9fd2321f39..a25a65585ccf 100644 --- a/deps/rabbitmq_cli/lib/rabbitmqctl.ex +++ b/deps/rabbitmq_cli/lib/rabbitmqctl.ex @@ -558,7 +558,7 @@ defmodule RabbitMQCtl do end defp format_error({:error, :check_failed, err}, %{formatter: "json"}, _) when is_map(err) do - {:ok, res} = JSON.encode(err) + {:ok, res} = :rabbit_json.try_encode(err) {:error, ExitCodes.exit_unavailable(), res} end @@ -578,12 +578,12 @@ defmodule RabbitMQCtl do # Catch all clauses defp format_error({:error, err}, %{formatter: "json"}, _) when is_map(err) do - {:ok, res} = JSON.encode(err) + {:ok, res} = :rabbit_json.try_encode(err) {:error, ExitCodes.exit_unavailable(), res} end defp format_error({:error, exit_code, err}, %{formatter: "json"}, _) when is_map(err) do - {:ok, res} = JSON.encode(err) + {:ok, res} = :rabbit_json.try_encode(err) {:error, exit_code, res} end diff --git a/deps/rabbitmq_cli/mix.exs b/deps/rabbitmq_cli/mix.exs index c4aff6773687..708c2e4ff341 100644 --- a/deps/rabbitmq_cli/mix.exs +++ b/deps/rabbitmq_cli/mix.exs @@ -15,6 +15,7 @@ defmodule RabbitMQCtl.MixfileBase do build_embedded: Mix.env() == :prod, start_permanent: Mix.env() == :prod, escript: [main_module: RabbitMQCtl, emu_args: "-hidden", path: "escript/rabbitmqctl"], + prune_code_paths: false, deps: deps(Mix.env()), aliases: aliases(), xref: [ @@ -140,10 +141,6 @@ defmodule RabbitMQCtl.MixfileBase do is_bazel = System.get_env("IS_BAZEL") != nil [ - { - :json, - path: Path.join(deps_dir, "json") - }, { :csv, path: Path.join(deps_dir, "csv") diff --git a/deps/rabbitmq_cli/test/ctl/export_definitions_command_test.exs b/deps/rabbitmq_cli/test/ctl/export_definitions_command_test.exs index d1be4f6897ad..a429e43b9e15 100644 --- a/deps/rabbitmq_cli/test/ctl/export_definitions_command_test.exs +++ b/deps/rabbitmq_cli/test/ctl/export_definitions_command_test.exs @@ -111,7 +111,7 @@ defmodule ExportDefinitionsCommandTest do {:ok, nil} = @command.run([valid_file_path()], context[:opts]) {:ok, bin} = File.read(valid_file_path()) - {:ok, map} = JSON.decode(bin) + {:ok, map} = :rabbit_json.try_decode(bin) assert Map.has_key?(map, "rabbitmq_version") end @@ -128,7 +128,7 @@ defmodule ExportDefinitionsCommandTest do clear_parameter("/", "federation-upstream", "up-1") {:ok, bin} = File.read(valid_file_path()) - {:ok, map} = JSON.decode(bin) + {:ok, map} = :rabbit_json.try_decode(bin) assert Map.has_key?(map, "rabbitmq_version") params = map["parameters"] assert is_map(hd(params)["value"]) diff --git a/deps/rabbitmq_cli/test/ctl/set_user_limits_command_test.exs b/deps/rabbitmq_cli/test/ctl/set_user_limits_command_test.exs index bb9da3588dc4..b57a649923c9 100644 --- a/deps/rabbitmq_cli/test/ctl/set_user_limits_command_test.exs +++ b/deps/rabbitmq_cli/test/ctl/set_user_limits_command_test.exs @@ -131,6 +131,6 @@ defmodule SetUserLimitsCommandTest do defp assert_limits(context, definition) do limits = get_user_limits(context[:user]) - assert {:ok, limits} == JSON.decode(definition) + assert {:ok, limits} == :rabbit_json.try_decode(definition) end end diff --git a/deps/rabbitmq_cli/test/ctl/set_vhost_limits_command_test.exs b/deps/rabbitmq_cli/test/ctl/set_vhost_limits_command_test.exs index 6a1bec75aac7..f591b1443b32 100644 --- a/deps/rabbitmq_cli/test/ctl/set_vhost_limits_command_test.exs +++ b/deps/rabbitmq_cli/test/ctl/set_vhost_limits_command_test.exs @@ -138,6 +138,6 @@ defmodule SetVhostLimitsCommandTest do defp assert_limits(context) do limits = get_vhost_limits(context[:vhost]) - assert {:ok, limits} == JSON.decode(context[:definition]) + assert {:ok, limits} == :rabbit_json.try_decode(context[:definition]) end end diff --git a/deps/rabbitmq_cli/test/json_formatting.exs b/deps/rabbitmq_cli/test/json_formatting.exs index 70cb6a5a04b9..c27826b59e59 100644 --- a/deps/rabbitmq_cli/test/json_formatting.exs +++ b/deps/rabbitmq_cli/test/json_formatting.exs @@ -29,7 +29,7 @@ defmodule JSONFormattingTest do error_check(command, exit_ok()) end) - {:ok, doc} = JSON.decode(output) + {:ok, doc} = :rabbit_json.try_decode(output) assert Map.has_key?(doc, "memory") assert Map.has_key?(doc, "file_descriptors") @@ -53,7 +53,7 @@ defmodule JSONFormattingTest do error_check(command, exit_ok()) end) - {:ok, doc} = JSON.decode(output) + {:ok, doc} = :rabbit_json.try_decode(output) assert Enum.member?(doc["disk_nodes"], node) assert Map.has_key?(doc["listeners"], node) diff --git a/deps/rabbitmq_cli/test/test_helper.exs b/deps/rabbitmq_cli/test/test_helper.exs index d36e70f654bc..9c7a544bc1aa 100644 --- a/deps/rabbitmq_cli/test/test_helper.exs +++ b/deps/rabbitmq_cli/test/test_helper.exs @@ -19,7 +19,6 @@ true = Code.append_path(Path.join([System.get_env("DEPS_DIR"), "rabbit_common", true = Code.append_path(Path.join([System.get_env("DEPS_DIR"), "rabbit", "ebin"])) true = Code.append_path(Path.join(["_build", Atom.to_string(Mix.env()), "lib", "amqp", "ebin"])) -true = Code.append_path(Path.join(["_build", Atom.to_string(Mix.env()), "lib", "json", "ebin"])) true = Code.append_path(Path.join(["_build", Atom.to_string(Mix.env()), "lib", "x509", "ebin"])) if function_exported?(Mix, :ensure_application!, 1) do