aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlambda <pleromagit@rogerbraun.net>2018-11-30 17:57:06 +0000
committerlambda <pleromagit@rogerbraun.net>2018-11-30 17:57:06 +0000
commite99bab8f279b419a6b54efa2f5397a78970c10ee (patch)
treefc6de12a66d2607d0deaec352ae0afcc0707cb22
parent9c471a24431eb1813c46860cea20afe5ccb3e033 (diff)
parent253da275bdc8abe372a3b4a3407596f839e5f432 (diff)
downloadpleroma-e99bab8f279b419a6b54efa2f5397a78970c10ee.tar.gz
Merge branch 'config-delete' into 'develop'
Add Pleroma.Config.delete/1 See merge request pleroma/pleroma!484
-rw-r--r--lib/pleroma/config.ex14
-rw-r--r--test/config_test.exs15
2 files changed, 29 insertions, 0 deletions
diff --git a/lib/pleroma/config.ex b/lib/pleroma/config.ex
index 15f771b6e..3876ddf1f 100644
--- a/lib/pleroma/config.ex
+++ b/lib/pleroma/config.ex
@@ -39,4 +39,18 @@ defmodule Pleroma.Config do
def put(key, value) do
Application.put_env(:pleroma, key, value)
end
+
+ def delete([key]), do: delete(key)
+
+ def delete([parent_key | keys]) do
+ {_, parent} =
+ Application.get_env(:pleroma, parent_key)
+ |> get_and_update_in(keys, fn _ -> :pop end)
+
+ Application.put_env(:pleroma, parent_key, parent)
+ end
+
+ def delete(key) do
+ Application.delete_env(:pleroma, key)
+ end
end
diff --git a/test/config_test.exs b/test/config_test.exs
index 0124544c8..837cbb30c 100644
--- a/test/config_test.exs
+++ b/test/config_test.exs
@@ -53,4 +53,19 @@ defmodule Pleroma.ConfigTest do
assert Pleroma.Config.get([:instance, :config_test]) == true
assert Pleroma.Config.get([:instance, :config_nested_test, :x]) == true
end
+
+ test "delete/1 with a key" do
+ Pleroma.Config.put([:delete_me], :delete_me)
+ Pleroma.Config.delete([:delete_me])
+ assert Pleroma.Config.get([:delete_me]) == nil
+ end
+
+ test "delete/2 with a list of keys" do
+ Pleroma.Config.put([:delete_me], hello: "world", world: "Hello")
+ Pleroma.Config.delete([:delete_me, :world])
+ assert Pleroma.Config.get([:delete_me]) == [hello: "world"]
+ Pleroma.Config.put([:delete_me, :delete_me], hello: "world", world: "Hello")
+ Pleroma.Config.delete([:delete_me, :delete_me, :world])
+ assert Pleroma.Config.get([:delete_me, :delete_me]) == [hello: "world"]
+ end
end