# Pleroma: A lightweight social networking server # Copyright © 2017-2023 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Mix.Tasks.Pleroma.Docs do use Mix.Task import Mix.Pleroma @shortdoc "Generates docs from descriptions.exs" @moduledoc """ Generates docs from `descriptions.exs`. Supports two formats: `markdown` and `json`. ## Generate Markdown docs `mix pleroma.docs` ## Generate JSON docs `mix pleroma.docs json` """ def run(["json"]) do do_run(Pleroma.Docs.JSON) end def run(_) do do_run(Pleroma.Docs.Markdown) end defp do_run(implementation) do start_pleroma() with descriptions <- Pleroma.Config.Loader.read("config/description.exs"), {:ok, file_path} <- Pleroma.Docs.Generator.process( implementation, descriptions[:pleroma][:config_description] ) do type = if implementation == Pleroma.Docs.Markdown, do: "Markdown", else: "JSON" Mix.shell().info([:green, "#{type} docs successfully generated to #{file_path}."]) end end end