Ensure deleting entire group prints out settings that will be removed before actually removing them

This commit is contained in:
Mark Felder 2020-12-04 11:30:48 -06:00
parent 696d39c3dc
commit 3bf5c5b015

View file

@ -142,7 +142,13 @@ defmodule Mix.Tasks.Pleroma.Config do
group = maybe_atomize(group) group = maybe_atomize(group)
with true <- group_exists?(group) do
shell_info("The following settings will be removed from ConfigDB:\n")
dump_group(group)
delete_group(group) delete_group(group)
else
_ -> shell_error("No settings in ConfigDB for #{inspect(group)}. Aborting.")
end
end end
def run(["delete", group, key]) do def run(["delete", group, key]) do
@ -163,11 +169,18 @@ defmodule Mix.Tasks.Pleroma.Config do
group = maybe_atomize(group) group = maybe_atomize(group)
with true <- group_exists?(group) do
shell_info("The following settings will be removed from ConfigDB:\n")
dump_group(group)
if shell_prompt("Are you sure you want to continue?", "n") in ~w(Yn Y y) do if shell_prompt("Are you sure you want to continue?", "n") in ~w(Yn Y y) do
delete_group(group) delete_group(group)
else else
shell_error("No changes made.") shell_error("No changes made.")
end end
else
_ -> shell_error("No settings in ConfigDB for #{inspect(group)}. Aborting.")
end
end end
@spec migrate_to_db(Path.t() | nil) :: any() @spec migrate_to_db(Path.t() | nil) :: any()
@ -329,18 +342,11 @@ defmodule Mix.Tasks.Pleroma.Config do
defp delete_group(group) do defp delete_group(group) do
check_configdb(fn -> check_configdb(fn ->
with true <- group_exists?(group) do
shell_info("The following settings will be removed from ConfigDB:\n")
dump_group(group)
group group
|> Pleroma.ConfigDB.get_all_by_group() |> Pleroma.ConfigDB.get_all_by_group()
|> Enum.each(fn config -> |> Enum.each(fn config ->
Pleroma.ConfigDB.delete(%{group: config.group, key: config.key}) Pleroma.ConfigDB.delete(%{group: config.group, key: config.key})
end) end)
else
_ -> shell_error("No settings in ConfigDB for #{inspect(group)}. Aborting.")
end
end) end)
end end