diff options
author | lain <lain@soykaf.club> | 2024-11-21 13:15:33 +0000 |
---|---|---|
committer | lain <lain@soykaf.club> | 2024-11-21 13:15:33 +0000 |
commit | 2482d561536d4c37eacf7a57503ea9e888ecd1f4 (patch) | |
tree | 5685028f1f07bbf401de66c45e544f304e0f2401 /lib | |
parent | dcb0c47773c0bcb8162f9d6100e8a6a3a1ae36c7 (diff) | |
parent | 14dbf789b3e0e84f588999954f07a378a6ccfcf6 (diff) | |
download | pleroma-2482d561536d4c37eacf7a57503ea9e888ecd1f4.tar.gz pleroma-2482d561536d4c37eacf7a57503ea9e888ecd1f4.zip |
Merge branch 'fix-module-search-in-pleroma-ctl' into 'develop'
B ReleaseTasks: Fix task module finding.
See merge request pleroma/pleroma!4297
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/release_tasks.ex | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/lib/pleroma/release_tasks.ex b/lib/pleroma/release_tasks.ex index bcfcd1243..af2d35c8f 100644 --- a/lib/pleroma/release_tasks.ex +++ b/lib/pleroma/release_tasks.ex @@ -16,17 +16,24 @@ defmodule Pleroma.ReleaseTasks do end end + def find_module(task) do + module_name = + task + |> String.split(".") + |> Enum.map(&String.capitalize/1) + |> then(fn x -> [Mix, Tasks, Pleroma] ++ x end) + |> Module.concat() + + case Code.ensure_loaded(module_name) do + {:module, _} -> module_name + _ -> nil + end + end + defp mix_task(task, args) do Application.load(:pleroma) - {:ok, modules} = :application.get_key(:pleroma, :modules) - - module = - Enum.find(modules, fn module -> - module = Module.split(module) - match?(["Mix", "Tasks", "Pleroma" | _], module) and - String.downcase(List.last(module)) == task - end) + module = find_module(task) if module do module.run(args) |