Add basic configuration management module.
authorlain <lain@soykaf.club>
Sat, 8 Sep 2018 12:01:00 +0000 (14:01 +0200)
committerWilliam Pitcock <nenolod@dereferenced.org>
Thu, 1 Nov 2018 09:01:03 +0000 (09:01 +0000)
lib/pleroma/config.ex [new file with mode: 0644]
test/config_test.exs [new file with mode: 0644]

diff --git a/lib/pleroma/config.ex b/lib/pleroma/config.ex
new file mode 100644 (file)
index 0000000..510d8d4
--- /dev/null
@@ -0,0 +1,15 @@
+defmodule Pleroma.Config do
+  use Agent
+
+  def start_link(initial) do
+    Agent.start_link(fn -> initial end, name: __MODULE__)
+  end
+
+  def get(path) do
+    Agent.get(__MODULE__, Kernel, :get_in, [path])
+  end
+
+  def put(path, value) do
+    Agent.update(__MODULE__, Kernel, :put_in, [path, value])
+  end
+end
diff --git a/test/config_test.exs b/test/config_test.exs
new file mode 100644 (file)
index 0000000..6d0f0a2
--- /dev/null
@@ -0,0 +1,10 @@
+defmodule Pleroma.ConfigTest do
+  use Pleroma.DataCase
+  alias Pleroma.Config
+
+  test "get returns the item at the path if there is one" do
+    Config.put([:instance, :name], "Plemora")
+    assert Config.get([:instance, :name]) == "Plemora"
+    assert Config.get([:unknown]) == nil
+  end
+end