logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma
commit: e99bab8f279b419a6b54efa2f5397a78970c10ee
parent: 9c471a24431eb1813c46860cea20afe5ccb3e033
Author: lambda <pleromagit@rogerbraun.net>
Date:   Fri, 30 Nov 2018 17:57:06 +0000

Merge branch 'config-delete' into 'develop'

Add Pleroma.Config.delete/1

See merge request pleroma/pleroma!484

Diffstat:

Mlib/pleroma/config.ex14++++++++++++++
Mtest/config_test.exs15+++++++++++++++
2 files changed, 29 insertions(+), 0 deletions(-)

diff --git 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 @@ -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