logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://anongit.hacktivis.me/git/pleroma.git/

release_tasks.ex (1561B)


  1. # Pleroma: A lightweight social networking server
  2. # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
  3. # SPDX-License-Identifier: AGPL-3.0-only
  4. defmodule Pleroma.ReleaseTasks do
  5. @repo Pleroma.Repo
  6. def run(args) do
  7. [task | args] = String.split(args)
  8. case task do
  9. "migrate" -> migrate(args)
  10. "create" -> create()
  11. "rollback" -> rollback(args)
  12. task -> mix_task(task, args)
  13. end
  14. end
  15. def find_module(task) do
  16. module_name =
  17. task
  18. |> String.split(".")
  19. |> Enum.map(&String.capitalize/1)
  20. |> then(fn x -> [Mix, Tasks, Pleroma] ++ x end)
  21. |> Module.concat()
  22. case Code.ensure_loaded(module_name) do
  23. {:module, _} -> module_name
  24. _ -> nil
  25. end
  26. end
  27. defp mix_task(task, args) do
  28. Application.load(:pleroma)
  29. module = find_module(task)
  30. if module do
  31. module.run(args)
  32. else
  33. IO.puts("The task #{task} does not exist")
  34. end
  35. end
  36. def migrate(args) do
  37. Mix.Tasks.Pleroma.Ecto.Migrate.run(args)
  38. end
  39. def rollback(args) do
  40. Mix.Tasks.Pleroma.Ecto.Rollback.run(args)
  41. end
  42. def create do
  43. Application.load(:pleroma)
  44. case @repo.__adapter__.storage_up(@repo.config) do
  45. :ok ->
  46. IO.puts("The database for #{inspect(@repo)} has been created")
  47. {:error, :already_up} ->
  48. IO.puts("The database for #{inspect(@repo)} has already been created")
  49. {:error, term} when is_binary(term) ->
  50. IO.puts(:stderr, "The database for #{inspect(@repo)} couldn't be created: #{term}")
  51. end
  52. end
  53. end