aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/docs/markdown.ex
diff options
context:
space:
mode:
authorAlex S <alex.strizhakov@gmail.com>2019-08-30 13:21:48 +0300
committerAlex S <alex.strizhakov@gmail.com>2019-09-11 09:25:33 +0300
commit67e430093187c50f307810e88ed0e73afe825b75 (patch)
tree2021d96311344784724cf7cbd1fbb9babe15ba4c /lib/pleroma/docs/markdown.ex
parent171cefd88972c6ec1f37a2e014a9a484ae91ab9a (diff)
downloadpleroma-67e430093187c50f307810e88ed0e73afe825b75.tar.gz
description formatters
Diffstat (limited to 'lib/pleroma/docs/markdown.ex')
-rw-r--r--lib/pleroma/docs/markdown.ex67
1 files changed, 67 insertions, 0 deletions
diff --git a/lib/pleroma/docs/markdown.ex b/lib/pleroma/docs/markdown.ex
new file mode 100644
index 000000000..27a096631
--- /dev/null
+++ b/lib/pleroma/docs/markdown.ex
@@ -0,0 +1,67 @@
+defmodule Pleroma.Docs.Markdown do
+ @behaviour Pleroma.Docs.Formatter
+
+ def process(descriptions) do
+ config_path = "docs/config.md"
+ {:ok, file} = File.open(config_path, [:write])
+ IO.write(file, "# Generated configuration\r\n\r\n")
+ IO.write(file, "Date of generation: #{Date.utc_today()}\r\n\r\n")
+
+ IO.write(
+ file,
+ "This file describe the configuration, it is recommended to edit the relevant *.secret.exs file instead of the others founds in the ``config`` directory.
+If you run Pleroma with ``MIX_ENV=prod`` the file is ``prod.secret.exs``, otherwise it is ``dev.secret.exs``.\r\n\r\n"
+ )
+
+ for group <- descriptions do
+ if is_nil(group[:key]) do
+ IO.write(file, "## #{inspect(group[:group])}\r\n\r\n")
+ else
+ IO.write(file, "## #{inspect(group[:key])}\r\n\r\n")
+ end
+
+ IO.write(file, "Type: `#{group[:type]}` \r\n")
+ IO.write(file, "#{group[:description]} \r\n\r\n")
+
+ for child <- group[:children] do
+ print_child_header(file, child)
+
+ print_suggestions(file, child[:suggestions])
+
+ if child[:children] do
+ for subchild <- child[:children] do
+ print_child_header(file, subchild)
+
+ print_suggestions(file, subchild[:suggestions])
+ end
+ end
+ end
+
+ IO.write(file, "\r\n")
+ end
+
+ :ok = File.close(file)
+ {:ok, config_path}
+ end
+
+ defp print_suggestion(file, suggestion) when is_function(suggestion) do
+ IO.write(file, " `#{inspect(suggestion.())}`\r\n")
+ end
+
+ defp print_suggestion(file, suggestion) do
+ IO.write(file, " `#{inspect(suggestion)}`\r\n")
+ end
+
+ defp print_suggestions(file, suggestions) do
+ IO.write(file, "Suggestions: \r\n")
+
+ for suggestion <- suggestions do
+ print_suggestion(file, suggestion)
+ end
+ end
+
+ defp print_child_header(file, child) do
+ IO.write(file, "* `#{inspect(child[:key])}`: #{child[:description]} \r\n")
+ IO.write(file, "Type: `#{inspect(child[:type])}` \r\n")
+ end
+end