some changes
authorAlex S <alex.strizhakov@gmail.com>
Fri, 30 Aug 2019 16:14:01 +0000 (19:14 +0300)
committerAlex S <alex.strizhakov@gmail.com>
Wed, 11 Sep 2019 06:25:33 +0000 (09:25 +0300)
config/description.exs
lib/mix/tasks/pleroma/docs.ex
lib/pleroma/docs/generator.ex [moved from lib/pleroma/docs/formatter.ex with 90% similarity]
lib/pleroma/docs/json.ex
lib/pleroma/docs/markdown.ex

index 537b9d9964acc57910b1e785e096a798f1452c69..684d3fc0e48662701a11c4e37f2dca89c62d18c9 100644 (file)
@@ -1,5 +1,5 @@
 use Mix.Config
-alias Pleroma.Docs.Formatter
+alias Pleroma.Docs.Generator
 
 websocket_config = [
   path: "/websocket",
@@ -24,7 +24,7 @@ config :pleroma, :config_description, [
         type: :module,
         description: "Module which will be used for uploads",
         suggestions: [
-          Formatter.uploaders_list()
+          Generator.uploaders_list()
         ]
       },
       %{
@@ -32,7 +32,7 @@ config :pleroma, :config_description, [
         type: {:list, :module},
         description: "List of filter modules for uploads",
         suggestions: [
-          Formatter.filters_list()
+          Generator.filters_list()
         ]
       },
       %{
@@ -64,8 +64,7 @@ config :pleroma, :config_description, [
       %{
         key: :proxy_opts,
         type: :keyword,
-        description: "Proxy options, see `Pleroma.ReverseProxy` documentation",
-        suggestions: ["somehow created link to Pleroma.ReverseProxy options"]
+        description: "Proxy options, see `Pleroma.ReverseProxy` documentation"
       }
     ]
   },
@@ -93,7 +92,7 @@ config :pleroma, :config_description, [
     children: [
       %{
         key: :bucket,
-        type: :strings,
+        type: :string,
         description: "S3 bucket",
         suggestions: [
           "bucket"
@@ -629,7 +628,7 @@ config :pleroma, :config_description, [
         description: "A list of MRF policies enabled",
         suggestions: [
           Pleroma.Web.ActivityPub.MRF.NoOpPolicy,
-          Formatter.mrf_list()
+          Generator.mrf_list()
         ]
       },
       %{
@@ -1920,7 +1919,7 @@ config :pleroma, :config_description, [
         type: {:list, :module},
         description: "list of Rich Media parsers",
         suggestions: [
-          Formatter.richmedia_parsers()
+          Generator.richmedia_parsers()
         ]
       },
       %{
index d68e02383158fb67f5f780d2121eb86c3b1b9873..821ee74f95ccc4606586929a5dc8c2c2cf71dca4 100644 (file)
@@ -8,11 +8,11 @@ defmodule Mix.Tasks.Pleroma.Docs do
 
   Supports two formats: `markdown` and `json`.
 
-  ## Generate markdown docs
+  ## Generate Markdown docs
 
   `mix pleroma.docs`
 
-  ## Generate json docs
+  ## Generate JSON docs
 
   `mix pleroma.docs json`s
   """
@@ -30,7 +30,7 @@ defmodule Mix.Tasks.Pleroma.Docs do
     {descriptions, _paths} = Mix.Config.eval!("config/description.exs")
 
     {:ok, file_path} =
-      Pleroma.Docs.Formatter.process(
+      Pleroma.Docs.Generator.process(
         implementation,
         descriptions[:pleroma][:config_description]
       )
similarity index 90%
rename from lib/pleroma/docs/formatter.ex
rename to lib/pleroma/docs/generator.ex
index a1c757936366ea7105a4e44875b66f518ace080e..e788712ccbccdc067af5fa404f42f32b94edce2b 100644 (file)
@@ -1,4 +1,4 @@
-defmodule Pleroma.Docs.Formatter do
+defmodule Pleroma.Docs.Generator do
   @callback process(keyword()) :: {:ok, String.t()}
 
   @spec process(module(), keyword()) :: {:ok, String.t()}
@@ -6,6 +6,7 @@ defmodule Pleroma.Docs.Formatter do
     implementation.process(descriptions)
   end
 
+  @spec uploaders_list() :: [module()]
   def uploaders_list do
     {:ok, modules} = :application.get_key(:pleroma, :modules)
 
@@ -17,6 +18,7 @@ defmodule Pleroma.Docs.Formatter do
     end)
   end
 
+  @spec filters_list() :: [module()]
   def filters_list do
     {:ok, modules} = :application.get_key(:pleroma, :modules)
 
@@ -27,6 +29,7 @@ defmodule Pleroma.Docs.Formatter do
     end)
   end
 
+  @spec mrf_list() :: [module()]
   def mrf_list do
     {:ok, modules} = :application.get_key(:pleroma, :modules)
 
@@ -38,6 +41,7 @@ defmodule Pleroma.Docs.Formatter do
     end)
   end
 
+  @spec richmedia_parsers() :: [module()]
   def richmedia_parsers do
     {:ok, modules} = :application.get_key(:pleroma, :modules)
 
index 38f01501761423ec8373cad2d36943444d120da3..aed730e78fbbbf0bdf8e60e69452dcd34baf4bfd 100644 (file)
@@ -1,5 +1,7 @@
 defmodule Pleroma.Docs.JSON do
-  @behaviour Pleroma.Docs.Formatter
+  @behaviour Pleroma.Docs.Generator
+
+  @spec process(keyword()) :: {:ok, String.t()}
   def process(descriptions) do
     config_path = "docs/generate_config.json"
     {:ok, file} = File.open(config_path, [:write])
@@ -9,6 +11,7 @@ defmodule Pleroma.Docs.JSON do
     {:ok, config_path}
   end
 
+  @spec generate_json([keyword()]) :: String.t()
   def generate_json(descriptions) do
     Jason.encode!(descriptions)
   end
index 27a0966311be8e6076db672b5ffae9dd601551d4..c66640bf15eb8d3e2d09614400bf126e82af5e99 100644 (file)
@@ -1,16 +1,17 @@
 defmodule Pleroma.Docs.Markdown do
-  @behaviour Pleroma.Docs.Formatter
+  @behaviour Pleroma.Docs.Generator
 
+  @spec process(keyword()) :: {:ok, String.t()}
   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, "# 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"
+      "This file describe the configuration, it is recommended to edit the relevant `*.secret.exs` file instead of the others founds in the ``config`` directory.  \r\n
+      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
@@ -20,7 +21,6 @@ If you run Pleroma with ``MIX_ENV=prod`` the file is ``prod.secret.exs``, otherw
         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
@@ -44,24 +44,36 @@ If you run Pleroma with ``MIX_ENV=prod`` the file is ``prod.secret.exs``, otherw
     {:ok, config_path}
   end
 
+  defp print_suggestion(file, suggestion) when is_list(suggestion) do
+    IO.write(file, "    `#{inspect(suggestion)}`\r\n")
+  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")
+  defp print_suggestion(file, suggestion, as_list \\ false) do
+    list_mark = if as_list, do: "*", else: ""
+    IO.write(file, "    #{list_mark} `#{inspect(suggestion)}`\r\n")
   end
 
+  defp print_suggestions(_file, nil), do: nil
+
   defp print_suggestions(file, suggestions) do
-    IO.write(file, "Suggestions:  \r\n")
+    IO.write(file, "    Suggestions:  \r\n")
 
-    for suggestion <- suggestions do
-      print_suggestion(file, suggestion)
+    if length(suggestions) > 1 do
+      for suggestion <- suggestions do
+        print_suggestion(file, suggestion, true)
+      end
+    else
+      print_suggestion(file, List.first(suggestions))
     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")
+    IO.write(file, "* `#{inspect(child[:key])}`  \r\n")
+    IO.write(file, "    #{child[:description]}  \r\n")
+    IO.write(file, "    Type: `#{inspect(child[:type])}`  \r\n")
   end
 end