diff options
Diffstat (limited to 'lib/mix')
| -rw-r--r-- | lib/mix/tasks/pleroma/benchmark.ex | 36 | ||||
| -rw-r--r-- | lib/mix/tasks/pleroma/docs.ex | 42 | 
2 files changed, 62 insertions, 16 deletions
| diff --git a/lib/mix/tasks/pleroma/benchmark.ex b/lib/mix/tasks/pleroma/benchmark.ex index 4cc634727..84dccf7f3 100644 --- a/lib/mix/tasks/pleroma/benchmark.ex +++ b/lib/mix/tasks/pleroma/benchmark.ex @@ -27,7 +27,7 @@ defmodule Mix.Tasks.Pleroma.Benchmark do      })    end -  def run(["render_timeline", nickname]) do +  def run(["render_timeline", nickname | _] = args) do      start_pleroma()      user = Pleroma.User.get_by_nickname(nickname) @@ -37,33 +37,37 @@ defmodule Mix.Tasks.Pleroma.Benchmark do        |> Map.put("blocking_user", user)        |> Map.put("muting_user", user)        |> Map.put("user", user) -      |> Map.put("limit", 80) +      |> Map.put("limit", 4096)        |> Pleroma.Web.ActivityPub.ActivityPub.fetch_public_activities()        |> Enum.reverse()      inputs = %{ -      "One activity" => Enum.take_random(activities, 1), -      "Ten activities" => Enum.take_random(activities, 10), -      "Twenty activities" => Enum.take_random(activities, 20), -      "Forty activities" => Enum.take_random(activities, 40), -      "Eighty activities" => Enum.take_random(activities, 80) +      "1 activity" => Enum.take_random(activities, 1), +      "10 activities" => Enum.take_random(activities, 10), +      "20 activities" => Enum.take_random(activities, 20), +      "40 activities" => Enum.take_random(activities, 40), +      "80 activities" => Enum.take_random(activities, 80)      } +    inputs = +      if Enum.at(args, 2) == "extended" do +        Map.merge(inputs, %{ +          "200 activities" => Enum.take_random(activities, 200), +          "500 activities" => Enum.take_random(activities, 500), +          "2000 activities" => Enum.take_random(activities, 2000), +          "4096 activities" => Enum.take_random(activities, 4096) +        }) +      else +        inputs +      end +      Benchee.run(        %{ -        "Parallel rendering" => fn activities -> -          Pleroma.Web.MastodonAPI.StatusView.render("index.json", %{ -            activities: activities, -            for: user, -            as: :activity -          }) -        end,          "Standart rendering" => fn activities ->            Pleroma.Web.MastodonAPI.StatusView.render("index.json", %{              activities: activities,              for: user, -            as: :activity, -            parallel: false +            as: :activity            })          end        }, diff --git a/lib/mix/tasks/pleroma/docs.ex b/lib/mix/tasks/pleroma/docs.ex new file mode 100644 index 000000000..0d2663648 --- /dev/null +++ b/lib/mix/tasks/pleroma/docs.ex @@ -0,0 +1,42 @@ +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, _paths} <- Mix.Config.eval!("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 | 
